当前位置: 首页 > 知识库问答 >
问题:

我如何保持可访问性并添加符合Itext的PDF/A2-A

胡星汉
2023-03-14

我有一个PDF文件是可访问的(标记),我想添加它PDF/A2-A符合Itext 5.4.5。

    Document document = new Document();
    PdfAWriter writer = PdfAWriter.getInstance(document,
        new FileOutputStream(output), PdfAConformanceLevel.PDF_A_2A);

    PdfReader pdfReader = new PdfReader(input);
    writer.setTagged();
    writer.setLanguage("en");
    writer.setLinearPageMode();
    writer.createXmpMetadata();

    document.open();
    ICC_Profile icc = ICC_Profile.getInstance(new FileInputStream(PROFILE));
    writer.setOutputIntents("Custom", "", "http://www.color.org",
            "sRGB IEC61966-2.1", icc);

    PdfContentByte cb = writer.getDirectContent();

    int n1 = pdfReader.getNumberOfPages();
    for (int i = 1; i <= n1; i++) {
        document.newPage();
        PdfImportedPage page = writer.getImportedPage(pdfReader, i);
        cb.addTemplate(page, 0, 0);
    }
    document.close();

但这会产生以下错误

线程“main”com.itextpdf.text.pdf.pdfaconformanceException中的异常:Alt条目应指定/figure元素的替代说明。在com.itextpdf.text.pdf.internal.pdfa2checker.checkstructelem(pdfa2checker.java:822)在com.itextpdf.text.pdf.text.pdf.internal.pdfacecker.checkpdfaconformanceimp.checkpdfaconformanceimp.java:222)在com.itextpdf.text.pdf.internal.pdfa2checker.checkstructelem(pdfa2checker.java:70)

有什么办法吗?这个问题的解决方案?

(我知道PDFCopy会保留标记,但我如何指定pdf/a 2-1位...?)

共有1个答案

郎雪风
2023-03-14

我很容易做到这三个高度,但我想要一个IText解决这个问题。

(我个人对提供的接口有点失望。例如,PDFCopy扩展了PdfWriter,但没有扩展PdfAWriter)。

 类似资料:
  • 我想把几个PDF文档合并成一个。源文件可以由我创建的PDF文件和其他组织创建的PDF文件组成。我无法控制附加到非我创建的文档的权限。其中一些文档(不是我创建的)可能设置了权限。如果文档需要密码才能打开它,我不会尝试合并它。 我正在使用iText 5.5.1(我认为这是最新的)创建一个PDFCopy对象,以包含结果文档和循环中每个源PDF的阅读器(我正在传递一个要合并的文档列表)。我检查每个文档的页

  • 问题内容: 如何使用iText将书签添加到现有PDF? 我将多个PDF合并为一个PDF,并且需要为最终PDF构建书签。例如,我有三个PDF:doc1.pdf,doc2.pdf和doc3.pdf,doc1和doc2属于Group1,doc3属于Group2。我需要合并它们,并且必须为生成的PDF构建嵌套书签,如下所示: 等等 问题答案: 我已经制作了一个MergeWithOutlines示例,该示例

  • 我想合并成一个新的pdf多个pdf文件,并在每个页面上添加文具。 为此,我使用了PdfWriter,如下所示: } 但这是错误的:根据原始pdf,结果有时是错误的。方向不正确。然后我在这里找到了该行为函数的答案,该函数可以使用iText将PDF连接/合并在一起,从而导致一些问题 = } 这一次的结果在任何情况下都是好的:所有页面都处于良好的方向。 但是生成的pdf比以前的代码快10倍。经过分析,我

  • //步骤1:创建文档-对象文档Document=new Document(); 提前道谢。

  • JAVA访问修饰符的可访问性 公众 在 同一班级 同一套餐 子类 宇宙/其他软件包 我在互联网上寻找这些问题的答案,因为我有多个答案。一个视频说未声明的访问修饰符是公共的,而我看到另一个书面来源说未声明的访问修饰符在子类和其他包中没有限制。试图确认哪个是真的。

  • 我正在使用旧版本的iText(2.1.7)来合并PDF。因为这是MPL的最后一个版本。我无法改变这一点。 不管怎样。我正在尝试合并多个PDF。一切似乎都正常工作,但当我翻阅大约1500页时,生成的PDF无法打开(表现得好像它被破坏了一样)