itext将pdf转换为pdf-a-1a,vera-pdf验证

093gszye  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(467)

我正在使用itext 5.5.13.1版本,并试图将pdf转换为pdf-a-1a。测试通过,但我的验证失败,对于验证,我使用vera pdf验证,错误如下:
pdf验证失败,错误:ruleid[specification=iso 19005-1:2005,clause=6.4,testnumber=2]::failed::xobject字典不应包含smask键::
有人知道这个解决方案吗?在我的pdf中,我使用表单、复选框和一些图像。
谢谢:)

628mspwn

628mspwn1#

itext似乎不支持将pdf转换为pdf-a-1-a。这里我推荐一个名为free spire.pdf for java的免费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();
}
}

输出

相关问题