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 文档,如下所示。

Nupping