FOP驱动程序配置与FOPFactory相同

The*_*ter 2 java apache-fop

我目前正在使用使用Driver嵌入式的FOP,如下所示

Driver driver = new Driver();  
driver.setRenderer(Driver.RENDER_PDF);  
driver.setInputSource(new InputSource(new FileInputStream(tempout)));  
File tempFile = File.createTempFile("W2P", ".pdf");  
FileOutputStream pdfOutput = new FileOutputStream(tempFile);  
tempFile.deleteOnExit();  
driver.setOutputStream(pdfOutput);  
driver.run();  
Run Code Online (Sandbox Code Playgroud)

但是我想以编程方式访问配置设置,特别是输出分辨率,因为我必须生成多个分辨率文件72dpi 150dpi 300dpi,我唯一能做到这一点的方法是更改​​为FOPFactory,如下所示

FopFactory fopFactory = FopFactory.newInstance();
OutputStream out = new BufferedOutputStream(new FileOutputStream(new File("C:/Temp/myfile.pdf")));
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(); // identity transformer
Source src = new StreamSource(new File("C:/Temp/myfile.fo"));
Result res = new SAXResult(fop.getDefaultHandler());
transformer.transform(src, res);
Run Code Online (Sandbox Code Playgroud)

是否可以使用驱动程序来控制FOP引擎,或者我必须切换到FOPFactory?这样做有什么好处/问题?

mzj*_*zjn 5

Driver班仅在老版本没有维护FOP(0.20.5及更早版本)的使用。一个“新的稳定API”(含FopFactory)年前推出。因此,我的建议是使用FopFactory最新的FOP(1.0)。