pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jammy Dodger <onejammydod...@gmail.com>
Subject Re: How does one construct/modify a PDXFA object to pass to setXfa() ?
Date Thu, 16 Jan 2014 17:41:13 GMT
Many thanks to Maruan Sahyoun for his great work on PDFBox + XFA.

This code only works when you remove all security on the PDDocument.
It also assumes the COS object in PDXFA is a COSStream.
The simplistic example reads the xml stream and writes it back into the 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);

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message