iText-コンテンツの縮小
この章では、iTextライブラリを使用してPDFドキュメントの画像を拡大縮小する方法を説明します。
PDFのコンテンツを縮小する
以下は、iTextライブラリを使用してPDFページのコンテンツを縮小する手順です。
ステップ1:PdfWriterおよびPdfReaderオブジェクトを作成する
ザ・ PdfWriterクラスはPDFのDocWriterを表します。このクラスはパッケージに属していますcom.itextpdf.kernel.pdf。このクラスのコンストラクターは、PDFが作成されるファイルのパスを表す文字列を受け入れます。
以下に示すように、文字列値(PDFを作成する必要があるパスを表す)をコンストラクターに渡すことにより、PdfWriterクラスをインスタンス化します。
// Creating a PdfWriter object
String dest = "C:/itextExamples/shrinking.pdf";
PdfWriter writer = new PdfWriter(dest);
既存のPDFからデータを読み取るには、 PdfReader 以下に示すオブジェクト。
// Creating a PdfReader
String src = "C:/itextExamples/pdfWithImage.pdf";
PdfReader reader = new PdfReader(src);
ステップ2:PdfDocumentオブジェクトを作成する
ザ・ PdfDocumentclassは、iTextでPDFドキュメントを表すクラスです。このクラスはパッケージに属していますcom.itextpdf.kernel.pdf。このクラスを(書き込みモードで)インスタンス化するには、クラスのオブジェクトを渡す必要がありますPdfWriter そのコンストラクタに。
を渡すことにより、ソースと宛先のPDFドキュメントを作成します PdfWriter そして PdfReader 以下に示すように、コンストラクターへのオブジェクト。
// Creating a PdfDocument objects
PdfDocument destpdf = new PdfDocument(writer);
PdfDocument srcPdf = new PdfDocument(reader);
ステップ3:既存のPDFからページを開く
を使用してソースPDFからページを取得します getPage() の方法 PdfPageクラス。このオブジェクトを使用して、以下に示すように、ソースドキュメントのページのサイズを取得します。
// Opening a page from the existing PDF
PdfPage origPage = srcPdf.getPage(1);
// Getting the page size
Rectangle orig = origPage.getPageSizeWithRotation();
ステップ4:ソースPDFのコンテンツを縮小する
を使用して getScaleInstance() の方法 AffineTransform クラスでは、以下に示すように、ソースドキュメントのページのコンテンツを縮小します。
// Shrink original page content using transformation matrix
AffineTransform transformationMatrix = AffineTransform.getScaleInstance(
page.getPageSize().getWidth()/ orig.getWidth()/2,
page.getPageSize().getHeight()/ orig.getHeight()/2);
ステップ5:ページをコピーする
連結する affine transform matrix、前のステップで作成された、 canvas 以下に示すように、宛先PDFドキュメントのオブジェクト。
// Concatenating the affine transform matrix to the current matrix
PdfCanvas canvas = new PdfCanvas(page);
canvas.concatMatrix(transformationMatrix);
次に、ページのコピーをに追加します canvas 以下に示すように、ソースドキュメントへの宛先PDFのオブジェクト。
// Add the object to the canvas
PdfFormXObject pageCopy = origPage.copyAsFormXObject(destpdf);
canvas.addXObject(pageCopy, 0, 0);
手順6:Documentオブジェクトを作成する
ザ・ Document パッケージのクラス com.itextpdf.layoutは、自給自足のPDFを作成する際のルート要素です。このクラスのコンストラクターの1つは、クラスPdfDocumentのオブジェクトを受け入れます。
インスタンス化する Document クラスのオブジェクトを渡すことによるクラス PdfDocument、以下に示すように。
// Creating a Document
Document document = new Document(destpdf);
ステップ7:ドキュメントを閉じる
を使用してドキュメントを閉じます close() の方法 Document 以下に示すように、クラス。
// Closing the document
document.close();
例
次のJavaプログラムは、iTextライブラリを使用してPDFページのコンテンツを縮小する方法を示しています。名前の付いたPDFドキュメントを作成しますshrinkingPDF.pdf、PDF内の画像を縮小し、パスに保存します C:/itextExamples/
このコードを名前の付いたファイルに保存します ShrinkingPDF.java。
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 {
// Creating a PdfWriter object
String dest = "C:/itextExamples/shrinking.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();
// Adding a page to destination Pdf
PdfPage page = destpdf.addNewPage();
// Scaling the image in a Pdf page
AffineTransform transformationMatrix = AffineTransform.getScaleInstance(
page.getPageSize().getWidth()/orig.getWidth()/2,
page.getPageSize().getHeight()/ orig.getHeight()/2);
// Shrink original page content using transformation matrix
PdfCanvas canvas = new PdfCanvas(page);
canvas.concatMatrix(transformationMatrix);
// Add the object to the canvas
PdfFormXObject pageCopy = origPage.copyAsFormXObject(destpdf);
canvas.addXObject(pageCopy, 0, 0);
// Creating a Document object
Document doc = new Document(destpdf);
// Closing the document
doc.close();
System.out.println("Table created successfully..");
}
}
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します-
javac ShrinkingPDF.java
java ShrinkingPDF
上記のプログラムを実行すると、PDFドキュメントが作成され、次のメッセージが表示されます。
Table created successfully..
指定したパスを確認すると、作成したPDFドキュメントが以下のように表示されます。