iText - N-up
以下 Java 程序演示了如何使用 iText 库在 PDF 页面上执行 N-up。它创建一个名为 nUppingPDF.pdf 的 PDF 文档,并将其保存在路径 C:/itextExamples/
中将此代码保存在名为 NUppingPDF.java 的文件中。
import com.itextpdf.kernel.geom.AffineTransform; import com.itextpdf.kernel.geom.PageSize; 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; public class NUppingPDF { public static void main(String args[]) throws Exception { // 创建 PdfWriter 对象 String dest = "C:/itextExamples/nUppingPDF.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.getPageSize(); PdfFormXObject pageCopy = origPage.copyAsFormXObject(destpdf); // N-up 页面 PageSize nUpPageSize = PageSize.A4.rotate(); PdfPage page = destpdf.addNewPage(nUpPageSize); PdfCanvas canvas = new PdfCanvas(page); // 缩放页面 AffineTransform transformationMatrix = AffineTransform.getScaleInstance( nUpPageSize.getWidth() / orig.getWidth() / 2f, nUpPageSize.getHeight() / orig.getHeight() / 2f); canvas.concatMatrix(transformationMatrix); // 将页面添加到 N-up 页面 canvas.addXObject(pageCopy, 0, orig.getHeight()); canvas.addXObject(pageCopy, orig.getWidth(), orig.getHeight()); canvas.addXObject(pageCopy, 0, 0); canvas.addXObject(pageCopy, orig.getWidth(), 0); // 关闭文档 destpdf.close(); srcPdf.close(); System.out.println("PDF created successfully.."); } }
使用以下命令从命令提示符编译并执行保存的 Java 文件 −
javac NUppingPDF.java java NUppingPDF
执行后,上述程序会创建一个 PDF 文档,并显示以下消息。
PDF created successfully..
如果验证指定的路径,则可以找到创建的 PDF 文档,如下所示。