簡體   English   中英

使用 iText 5 或 7 將圖像層添加到 pdf

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM