Java Itext将PDF转换为PDF-A-1A,Vera PDF验证

Java Itext将PDF转换为PDF-A-1A,Vera PDF验证,java,validation,pdf,itext,Java,Validation,Pdf,Itext,我正在使用Itext 5.5.13.1版本,并试图将PDF转换为PDF-A-1A。测试通过,但我的验证失败,对于使用VERA PDF验证的验证am,错误如下: PDF验证失败,错误:RuleId[规范=ISO 19005-1:2005,条款=6.4,测试编号=2]::失败::XObject字典不应包含SMask键:: 有人知道这个解决方案吗?在我的PDF中,我使用表单、复选框和一些图像 谢谢:)看来iText不支持将PDF转换为PDF-A-1-A。这里我推荐一个名为的免费API。它不仅支持将PD

我正在使用Itext 5.5.13.1版本,并试图将PDF转换为PDF-A-1A。测试通过,但我的验证失败,对于使用VERA PDF验证的验证am,错误如下:

PDF验证失败,错误:RuleId[规范=ISO 19005-1:2005,条款=6.4,测试编号=2]::失败::XObject字典不应包含SMask键::

有人知道这个解决方案吗?在我的PDF中,我使用表单、复选框和一些图像


谢谢:)

看来iText不支持将PDF转换为PDF-A-1-A。这里我推荐一个名为的免费API。它不仅支持将PDF转换为PDF-A-1-A,还可以将PDF转换为PDF-A-1-B、PDF-A-3-A和PDF-A-3-B。以下代码片段用于将PDF转换为PDF-A-1-A

import com.spire.pdf.PdfConformanceLevel;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfNewDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfMargins;
import java.awt.geom.Dimension2D;

public class PDFToPDFA1A {
public static void main(String[] args) {

    //Open pdf document
    PdfDocument document = new PdfDocument();
    document.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.pdf");

    //Convert to Pdf_A_1_A
    PdfNewDocument newDoc = new PdfNewDocument();
    newDoc.setConformance(PdfConformanceLevel.Pdf_A_1_A);
    for (PdfPageBase page : (Iterable<PdfPageBase>) document.getPages()) {
        Dimension2D size = page.getSize();
        PdfPageBase p = newDoc.getPages().add(size, new PdfMargins(0));
        page.createTemplate().draw(p, 0, 0);
    }
    //Save the file
    newDoc.save("output/ToPDFA1A.pdf");
    newDoc.close();
}
}
import com.spire.pdf.PdfConformanceLevel;
导入com.spire.pdf.pdf文档;
导入com.spire.pdf.PdfNewDocument;
导入com.spire.pdf.PdfPageBase;
导入com.spire.pdf.graphics.PdfMargins;
导入java.awt.geom.Dimension2D;
公共类PDFToPDFA1A{
公共静态void main(字符串[]args){
//打开pdf文档
PdfDocument document=新PdfDocument();
document.loadFromFile(“C:\\Users\\Test1\\Desktop\\Sample.pdf”);
//转换为Pdf\u A\u 1\u A
PdfNewDocument newDoc=新的PdfNewDocument();
newDoc.setConformance(PdfConformanceLevel.Pdf_A_1_A);
对于(PdfPageBase页:(Iterable)document.getPages()){
Dimension2D size=page.getSize();
PdfPageBase p=newDoc.getPages().add(大小,新的PdfMargins(0));
page.createTemplate().draw(p,0,0);
}
//保存文件
newDoc.save(“output/ToPDFA1A.pdf”);
newDoc.close();
}
}
输出


我不知道Itext 5.5.13.1具有将PDF转换为PDF-A-1A的功能。我假设您的代码基本上只复制原始PDF并添加PDF/a标记,而没有实际更改内容以符合PDF/a要求。顺便说一句,全自动PDF转换为PDF/A-nA通常是有问题的,因为正确的标记文本的意图必须是已知的……你知道有什么例子可以解决这个问题吗?没有。如上所述:我不知道Itext 5.5.13.1具有将PDF转换为PDF-A-1A的功能。Itext 7中是否存在这种依赖性?com.itextpdf itextpdf 5.5.13.1该依赖项显然是iText 5.5.13.1依赖项。您确定您的代码可以转换吗?代码本身给人的印象是,它与op的iText代码完全一样:将非PDF/A材料复制到PDF中,然后声称符合PDF/A,但实际上不符合。特别值得一提的是,您声称代码会产生一个级别的一致性,因为将任意输入实际转换为一个级别需要一个人或至少是一个非常好的AI来区分工件和实际内容。