【发布时间】:2013-12-31 09:29:23
【问题描述】:
我有一个可访问(标记)的 PDF 文档,我想将其添加为 PDF/A 2-a 符合 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 位...?)
【问题讨论】: