如何使用Java平鋪PDF文檔中的頁面內容?

如何使用Java平鋪PDF文檔中的頁面內容?

注:iText開發環境設置,下載iText7 jar(社區版:http://github.com/itext/itext7/releases/tag/7.0.4 ) ,創建一個工程:java_itext,並將下載的itext7 jar包和slf4j( http://www.slf4j.org/download.html )工具包添加到構建路徑中。專案結構如下圖所示 -

以下是使用Java平鋪PDF文檔中的頁面內容的程式。

package com.zaixian;

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 TilingPDFPages {
   public static void main(String args[]) throws Exception {

      //Creating a PdfWriter object
      String dest = "tilingPdfPages.pdf";
      PdfWriter writer = new PdfWriter(dest);

      //Creating a PdfReader
      String src = "imagsWithPDF.pdf";
      PdfReader reader = new PdfReader(src);

      //Creating a PdfDocument objects
      PdfDocument destpdf = new PdfDocument(writer);
      PdfDocument srcPdf = new PdfDocument(reader);

      //Opening a page from the existing PDF
      PdfPage origPage = srcPdf.getPage(1);

      //Getting the page size
      Rectangle orig = origPage.getPageSizeWithRotation();

      //Getting the size of the page
      PdfFormXObject pageCopy = origPage.copyAsFormXObject(destpdf);

      //Tile size
      Rectangle tileSize = PageSize.A4.rotate();

      AffineTransform transformationMatrix = AffineTransform.getScaleInstance(
         tileSize.getWidth() / orig.getWidth() * 2f,
         tileSize.getHeight() / orig.getHeight() * 2f);

      //The first tile
      PdfPage page = destpdf.addNewPage(PageSize.A4.rotate());

      PdfCanvas canvas = new PdfCanvas(page);
      canvas.concatMatrix(transformationMatrix);
      canvas.addXObject(pageCopy, 0, -orig.getHeight() / 2f);

      //The second tile
      page = destpdf.addNewPage(PageSize.A4.rotate());

      canvas = new PdfCanvas(page);
      canvas.concatMatrix(transformationMatrix);
      canvas.addXObject(pageCopy, -orig.getWidth() / 2f, -orig.getHeight() / 2f);

      //The third tile
      page = destpdf.addNewPage(PageSize.A4.rotate());

      canvas = new PdfCanvas(page);
      canvas.concatMatrix(transformationMatrix);
      canvas.addXObject(pageCopy, 0, 0);

      //The fourth tile
      page = destpdf.addNewPage(PageSize.A4.rotate());

      canvas = new PdfCanvas(page);
      canvas.concatMatrix(transformationMatrix);
      canvas.addXObject(pageCopy, -orig.getWidth() / 2f, 0);
      destpdf.close();
      srcPdf.close();
      System.out.println("PDF created successfully..");
   }
}

執行上面示例代碼,得到以下結果 -

PDF created successfully..

輸出檔內容如下所示 -


上一篇: Java iText示例 下一篇:無