如何使用 Java 缩小 PDF 文档中的内容
问题描述
如何使用 Java 缩小 PDF 文档中的内容。
解决方案
以下是使用 Java 缩小 PDF 文档中的内容的程序。
import com.itextpdf.kernel.geom.AffineTransform; import com.itextpdf.kernel.geom.Rectangle; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfPage; import com.itextpdf.kernel.pdf.PdfReader; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.kernel.pdf.canvas.PdfCanvas; import com.itextpdf.kernel.pdf.xobject.PdfFormXObject; import com.itextpdf.layout.Document; public class ShrinkPDF { public static void main(String args[]) throws Exception { //创建 PdfWriter 对象 String dest = "C:/itextExamples/shrinking.pdf"; PdfWriter writer = new PdfWriter(dest); //创建 PdfReader String src = "C:/itextExamples/pdfWithImage.pdf"; PdfReader reader = new PdfReader(src); //创建 PdfDocument 对象 PdfDocument destpdf = new PdfDocument(writer); PdfDocument srcPdf = new PdfDocument(reader); //从现有 PDF 打开一页 PdfPage origPage = srcPdf.getPage(1); //获取页面大小 Rectangle orig = origPage.getPageSizeWithRotation(); //将页面添加到目标 Pdf PdfPage page = destpdf.addNewPage(); //缩放 Pdf 页面中的图像 AffineTransform transformationMatrix = AffineTransform.getScaleInstance( page.getPageSize().getWidth()/ orig.getWidth()/2, page.getPageSize().getHeight()/ orig.getHeight()/2); //使用转换矩阵缩小原始页面内容 PdfCanvas canvas = new PdfCanvas(page); canvas.concatMatrix(transformationMatrix); //将对象添加到画布 PdfFormXObject pageCopy = origPage.copyAsFormXObject(destpdf); canvas.addXObject(pageCopy, 0, 0); //创建 Document 对象 Document doc = new Document(destpdf); //关闭文档 doc.close(); System.out.println("Table created successfully.."); } }
输出

java_itext.html