[英]Adding image layers to a pdf using iText 5 or 7
我需要創建一個 pdf 文檔,其中包含應包含在圖層中的圖像。 每個圖像都應該包含在一個圖層中,以便我們可以選擇使每個圖像可見或不可見。
我知道 iText 為此提供了一個PdfLayer類,但他們沒有解釋如何使用它。 令人驚訝的是,網絡上的教程沒有涵蓋這個問題。
這是一個小開始:
// Creating a PdfWriter
String dest = "export.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
// Adding an empty page
//pdfDoc.addNewPage();
// Creating a Document
Document document = new Document(pdfDoc);
/////////////////////////////////////////////////////////
// Creating an ImageData object
String imageFile = "map.png";
ImageData data = ImageDataFactory.create(imageFile);
// Creating an Image object
Image img = new Image(data);
PdfLayer pdflayer = new PdfLayer("main layer", pdfDoc);
pdflayer.setOn(true);
/* normally, here where the image should be added to the layer */
希望得到您的幫助,謝謝!
您可以通過在PdfCanvas
開始繪制圖層,添加圖像,然后再次在其中結束圖層來將圖像添加到圖層。
根據您是否要自己進行內容布局工作,您可以直接或通過Canvas
進行圖像添加部分。
例如:
try ( PdfWriter writer = new PdfWriter(...);
PdfDocument pdfDoc = new PdfDocument(writer);
Document document = new Document(pdfDoc) ) {
ImageData data = ImageDataFactory.create(IMAGE_DATA);
Image img = new Image(data);
PdfLayer pdflayer = new PdfLayer("main layer", pdfDoc);
pdflayer.setOn(true);
// using a Canvas, to allow iText layout'ing the image
PdfCanvas pdfCanvas = new PdfCanvas(pdfDoc.addNewPage());
try ( Canvas canvas = new Canvas(pdfCanvas, pdfDoc, document.getPageEffectiveArea(pdfDoc.getDefaultPageSize())) ) {
canvas.add(new Paragraph("This image is added using a Canvas:"));
pdfCanvas.beginLayer(pdflayer);
canvas.add(img);
pdfCanvas.endLayer();
canvas.add(new Paragraph("And this image is added immediately:"));
}
// or directly
pdfCanvas.beginLayer(pdflayer);
pdfCanvas.addImage(data, 100, 100, false);
pdfCanvas.endLayer();
}
( AddImageToLayer測試testAddLikeIan
)
根據您的問題標題,您尋找 iText 5 或 iText 7 的解決方案。上面的代碼適用於 iText 7,我使用了當前的開發版本 7.1.4-SNAPSHOT。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.