簡體   English   中英

使用 itext 在投資組合 pdf 的第一頁上蓋章

[英]Stamping the first page of portfolio pdf using itext

我一直在研究一個模塊,它需要使用 itext 標記所有 PDF 的第一頁。 雖然當我為投資組合 pdf 嘗試相同的邏輯時,代碼對於普通 PDF 工作正常。以下是相同的代碼片段:

    try {

        PdfReader reader = new PdfReader("D:\\Test\\test.pdf");
        System.out.println(reader.getNumberOfPages());

        PdfStamper stamper = new PdfStamper(reader,new FileOutputStream("D:\\Test\\test_stamped.pdf"));



        PdfContentByte canvas = stamper.getOverContent(i);

        PdfDictionary root = reader.getCatalog();

        canvas.beginText();
        BaseFont baseFont = BaseFont.createFont(BaseFont.HELVETICA_BOLD, "ASCII", false);
        canvas.setFontAndSize(baseFont, 14);
        canvas.setRGBColorFill(255, 0, 0);
        canvas.showTextAligned(PdfContentByte.ALIGN_CENTER, "Test Stamping-Pg"+i, 30, 1, 0);
        canvas.endText();

        stamper.setFormFlattening(true);
        stamper.close();
        reader.close();
        System.out.println("Stamping complete..");

    } catch (Throwable t) {

        t.printStackTrace();
    }

如果有人可以幫助我,那將非常有幫助。

根據 PDF 規范 ISO 32000-1(其中“投資組合”被稱為“便攜式集合”),

當符合標准的閱讀器首次打開包含集合的 PDF 文檔時,它應顯示初始文檔的內容以及EmbeddedFiles名稱樹中存在的文檔列表。 文檔列表應包括集合模式指定的附加文檔信息。 初始文檔可能是容器 PDF 或嵌入文檔之一。

注 2:初始文檔中的頁面內容應包含有助於用戶理解集合中包含的內容的信息,例如標題和介紹性段落。

因此,如果初始文檔不是容器文檔而是包含的文檔,則您可以提取包含的文檔,對其進行操作,並將其原始版本替換為集合中您操作過的版本。

您可以通過檢查集合字典來檢查初始文檔是否不是容器文檔而是包含的文檔:

表 155 – 集合字典中的條目

D字節字符串(可選)一個字符串,用於標識EmbeddedFiles名稱樹中的條目,確定最初應在用戶界面中顯示的文檔。 如果D條目丟失或錯誤,則初始文檔應為包含集合字典的文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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