Itext-tiling-pdf-pages

提供:Dev Guides
移動先:案内検索

iText-PDFページのタイリング

次のJavaプログラムは、iTextライブラリを使用してPDFページのコンテンツをさまざまなページにタイル化する方法を示しています。 tilingPdfPages.pdf という名前のPDFドキュメントを作成し、パス C:/itextExamples/ に保存します。

このコードを TilingPDFPages.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 TilingPDFPages {
   public static void main(String args[]) throws Exception {
     //Creating a PdfWriter object
      String dest = "C:/itextExamples/tilingPdfPages.pdf";
      PdfWriter writer = new PdfWriter(dest);

     //Creating a PdfReader
      String src = "C:/itextExamples/pdfWithImage.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);

     //closing the documents
      destpdf.close();
      srcPdf.close();

      System.out.println("PDF created successfully..");
   }
}

次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-

javac TilingPDFPages.java
java TilingPDFPages

実行時に、上記のプログラムはPDFドキュメントを作成し、次のメッセージを表示します。

PDF created successfully..

あなたが指定されたパスを確認した場合、以下に示すように、作成されたPDF文書を見つけることができます-

PDFページのタイル