1

我有一个已经填写好的 XFA PDF,现在我想将其转换为更兼容的格式,以便可以在浏览器中直接打开它,而不是显示空白文档(糟糕的用户体验)。

有没有办法可以“展平”(以编程方式)XFA PDF,使其成为一个直接的 PDF?

我正在使用 Java 并有这些导入:

import org.apache.pdfbox.cos.COSStream;
import org.apache.pdfbox.io.RandomAccessBuffer;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
import org.apache.pdfbox.pdmodel.interactive.form.PDXFA;

代码是这样的:

File sourcePdf = new File(this.manager.getStringValue("SourcePDFFile", data));
File targetPDF = new File(this.manager.getStringValue("TargetPDFFile", data));

try {
    PDDocument e = PDDocument.load(sourcePdf);
    PDDocumentCatalog docCatalog = e.getDocumentCatalog();
    PDAcroForm form = docCatalog.getAcroForm();
    PDXFA xfa = form.getXFA();
    String s = new String(xfa.getBytes());
    String replacementString = IOUtils.toString(data.getDataStream());
    s = s.replaceAll("<xfa:data />", replacementString);
    COSStream cosout = new COSStream(new RandomAccessBuffer());
    OutputStream out = cosout.createUnfilteredStream();
    out.write(s.getBytes());
    form.setXFA(new PDXFA(cosout));
    e.save(targetPDF.getAbsolutePath());
    return data;
} catch (Exception var12) {
    throw new EIPException("Filling Processor: Unable to fill PDF", var12);
}
4

0 回答 0