我有一个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 ......?)
答案 0 :(得分:0)
我很容易在3-Heights中做到这一点,但我想要一个IText解决方案来解决这个问题。
(就个人而言,我对提供的界面有点失望。例如,PDFCopy扩展了PdfWriter,但不扩展PdfAWriter。)