我有一个已经填写好的 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);
}