
- iText 教程
- iText - 首頁
- iText 畫布
- iText - 繪製弧線
- iText - 繪製直線
- iText - 繪製圓形
- iText 有用資源
- iText - 快速指南
- iText - 有用資源
- iText - 討論
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 物件
PdfDocument 類是表示 iText 中 PDF 文件的類。此類屬於 com.itextpdf.kernel.pdf 包。要例項化此類(在寫入模式下),您需要將其類的物件 PdfWriter 傳遞給其建構函式。
透過將 PdfWriter 和 PdfReader 物件傳遞給建構函式,建立源和目標 PDF 文件,如下所示。
// Creating a PdfDocument objects PdfDocument destpdf = new PdfDocument(writer); PdfDocument srcPdf = new PdfDocument(reader);
步驟 3:開啟現有 PDF 中的頁面
使用 PdfPage 類的 getPage() 方法從源 PDF 獲取頁面。使用此物件,獲取源文件頁面的大小,如下所示。
// Opening a page from the existing PDF PdfPage origPage = srcPdf.getPage(1); // Getting the page size Rectangle orig = origPage.getPageSizeWithRotation();
步驟 4:縮小源 pdf 的內容
使用 AffineTransform 類的 getScaleInstance() 方法,縮小源文件頁面的內容,如下所示。
// Shrink original page content using transformation matrix AffineTransform transformationMatrix = AffineTransform.getScaleInstance( page.getPageSize().getWidth()/ orig.getWidth()/2, page.getPageSize().getHeight()/ orig.getHeight()/2);
步驟 5:複製頁面
將上一步中建立的 仿射變換矩陣 與目標 PDF 文件的 畫布 物件的矩陣連線起來,如下所示。
// Concatenating the affine transform matrix to the current matrix PdfCanvas canvas = new PdfCanvas(page); canvas.concatMatrix(transformationMatrix);
現在,將頁面副本新增到目標 PDF 的 畫布 物件到源文件,如下所示。
// Add the object to the canvas PdfFormXObject pageCopy = origPage.copyAsFormXObject(destpdf); canvas.addXObject(pageCopy, 0, 0);
步驟 6:建立 Document 物件
com.itextpdf.layout 包的 Document 類是建立自包含 PDF 時的根元素。此類的一個建構函式接受 PdfDocument 類的物件。
透過傳遞 PdfDocument 類的物件來例項化 Document 類,如下所示。
// Creating a Document Document document = new Document(destpdf);
步驟 7:關閉 Document
使用 Document 類的 close() 方法關閉文件,如下所示。
// Closing the document document.close();
示例
以下 Java 程式演示瞭如何使用 iText 庫縮小 PDF 頁面的內容。它建立一個名為 shrinkingPDF.pdf 的 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 文件。
