使用itext标记组合pdf的第一页

时间:2017-02-14 04:03:33

标签: java itext

我一直在研究一个模块,它需要使用itext标记所有PDF的第一页。 虽然当我为组合pdfs尝试相同的逻辑时,代码对于普通的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();
    }

如果有人能帮助我,那将非常有帮助。

1 个答案:

答案 0 :(得分:1)

根据PDF规范ISO 32000-1(其中"投资组合"被称为#34;便携式馆藏")

  

当符合本标准的阅读器首次打开包含集合的PDF文档时,它将显示初始文档的内容以及 EmbeddedFiles 名称树中存在的文档列表。文档列表应包括集合模式指定的其他文档信息。初始文档可以是容器PDF或其中一个嵌入文档。

     

注2:初始文档中的页面内容应包含帮助用户理解集合中包含内容的信息,例如标题和介绍段落。

因此,如果初始文档不是容器文档而是包含文档,则您具有包含文档的提取,操作它,并将其原始版本替换为集合中的操作版本。

您可以通过检查收集字典来检查初始文档是否不是容器文档,而是包含的文档:

  

表155 - 集合词典中的条目

     

<强> d   字节串   (可选)一个字符串,用于标识 EmbeddedFiles 名称树中的条目,确定最初应在用户界面中显示的文档。如果 D 条目丢失或出错,则初始文档应为包含收集字典的文档。