import java.io.*; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.sax.SAXResult; import javax.xml.transform.stream.StreamSource; import org.apache.fop.apps.FopFactory; import org.apache.fop.apps.Fop; import org.apache.fop.apps.MimeConstants; import org.apache.fop.apps.FOUserAgent; import org.apache.fop.pdf.PDFEncryptionParams; /* separator ; for windows; $ javac -cp 'fop-2.1.jar;xmlgraphics-commons-2.3.0-20170616.031120-4.jar' SimpleFop.java $ java -cp 'fop-2.1.jar;xmlgraphics-commons-2.3.0-20170616.031120-4.jar;commons-logging-api-1.1.jar;commons-io-2.4.jar;batik-all-1.9.0-20170327.100521-31.jar;avalon-framework-impl-4.3.1.jar;avalon-framework-api-4.3.1.jar;.' SimpleFop */ public class SimpleFop { public static void main(String[] args) throws Exception { java.net.URI baseUri = new java.net.URI("./"); FopFactory fopFactory = FopFactory.newInstance(baseUri); OutputStream out = new BufferedOutputStream(new FileOutputStream(new File("./myfile.pdf"))); try { FOUserAgent foUserAgent = fopFactory.newFOUserAgent(); String pdfUserPassword = null; String pdfOwnerPassword = null; boolean allowPrint = false; boolean allowCopyContent = true; boolean allowEditContent = true; boolean allowEditAnnotations = true; boolean encryptMetadata = false; String pdfAMode = null; int encryptionLength = 128; boolean allowFillInForms = true; boolean allowAccessContent = true; boolean allowAssembleDocument = true; boolean allowPrintHq = true; PDFEncryptionParams pdfEncryptionParams = new PDFEncryptionParams( pdfUserPassword, pdfOwnerPassword, allowPrint, allowCopyContent, allowEditContent, allowEditAnnotations, encryptMetadata); pdfEncryptionParams.setAllowFillInForms(allowFillInForms); pdfEncryptionParams.setAllowAccessContent(allowAccessContent); pdfEncryptionParams.setAllowAssembleDocument(allowAssembleDocument); pdfEncryptionParams.setAllowPrintHq(allowPrintHq); pdfEncryptionParams.setEncryptionLengthInBits(encryptionLength); pdfEncryptionParams.setAllowAccessContent(true); pdfEncryptionParams.setAllowAssembleDocument(true); foUserAgent.getRendererOptions().put("encryption-params", pdfEncryptionParams); Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out); TransformerFactory factory = TransformerFactory.newInstance(); Transformer transformer = factory.newTransformer(new StreamSource(new File("./fop.simple.xml"))); Source src = new StreamSource(new java.io.StringReader("")); Result res = new SAXResult(fop.getDefaultHandler()); transformer.transform(src, res); } finally { out.close(); } } }