如何保留可访问性并添加PDF / A 2-a与Itext的一致性

时间:2013-12-12 19:30:51

标签: java pdf itext

我有一个PDF文档,可以访问(标记),我想添加它PDF / A 2 - 符合Itext 5.4.5。

我可以打开符合PDF / A 2-b标准的PDFAWriter(注意b),导入每个页面,复制它们。输出文档符合PDF / A 2-b合规性(我用两个验证器检查过),但后来我失去了可访问性(结构标签)。

然后我尝试用PDF / A 2-a合规打开PDFAWriter(注意a),使用writer.setTagged(),导入每个页面并像这样复制它们:

    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();

但这会产生此错误

Exception in thread "main" com.itextpdf.text.pdf.PdfAConformanceException: Alt entry should specify alternate description for /Figure element. at com.itextpdf.text.pdf.internal.PdfA2Checker.checkStructElem(PdfA2Checker.java:822) at com.itextpdf.text.pdf.internal.PdfAChecker.checkPdfAConformance(PdfAChecker.java:222) at com.itextpdf.text.pdf.internal.PdfAConformanceImp.checkPdfIsoConformance(PdfAConformanceImp.java:70)

任何解决方法?解决这个问题?

(我知道PDFCopy会保留标记,但是如何指定PDF / A 2-a bit ......?)

1 个答案:

答案 0 :(得分:0)

我很容易在3-Heights中做到这一点,但我想要一个IText解决方案来解决这个问题。

(就个人而言,我对提供的界面有点失望。例如,PDFCopy扩展了PdfWriter,但不扩展PdfAWriter。)