我目前正在使用使用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();


但是我想以编程方式特别是输出分辨率来访问配置设置,因为我必须生成多个分辨率文件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);


有没有一种使用驱动程序控制FOP引擎的方法,或者我将不得不切换到FOPFactory,这样做有什么好处/问题?

最佳答案

Driver类仅在FOP的旧版本和未维护版本(0.20.5和更早版本)中可用。几年前引入了"new stable API"(包括FopFactory)。因此,我的建议是使用FopFactory和最新的FOP(1.0)。

关于java - FOP驱动程序配置与FOPFactory相同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5042486/

10-10 17:50