2
使用PDFBox可以读取由livecycle创建的动态PDF。下面的代码读取然后回写用于创建动态PDF的xml文件。由于生成的文件非常大,我担心647kb pdf。新的pdf 14000kb。任何人都知道如何减少生成的新文件的大小。回写到pdf文件时可以设置某种类型的压缩吗?PDFBox臃肿PDF文件大小
PDDocument doc = PDDocument.load("filename");
doc.setAllSecurityToBeRemoved(true);
PDDocumentCatalog docCatalog = doc.getDocumentCatalog();
PDAcroForm form = docCatalog.getAcroForm();
PDXFA xfa = form.getXFA();
COSBase cos = xfa.getCOSObject();
COSStream coss = (COSStream) cos;
InputStream cosin = coss.getUnfilteredStream();
Document document = documentBuilder.parse(cosin);
COSStream cosout = new COSStream(new RandomAccessBuffer());
OutputStream out = cosout.createUnfilteredStream();
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(xmlDoc);
StreamResult result = new StreamResult(out);
transformer.transform(source, result);
PDXFA xfaout = new PDXFA(cosout);
form.setXFA(xfaout);
非常感谢,现在pdf文件已经回落到接近pdf的原始大小。 – 2014-11-04 22:15:00