2

私は現在、次のようにドライバーを使用して埋め込まれた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();  

しかし、複数の解像度のファイルを作成する必要があるため、プログラムで特に出力解像度にアクセスしたいと思います。72dpi150dpi 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);

Driverを使用してFOPエンジンを制御する方法はありますか、それともFOPFactoryに切り替える必要がありますか?そうすることの利点/問題は何ですか?

4

1 に答える 1

5

このDriverクラスは、FOPの古いバージョンとメンテナンスされていないバージョン(0.20.5以前)でのみ使用できます。「新しい安定したAPI」(を含むFopFactory)は数年前に導入されました。したがって、私のアドバイスはFopFactory、最新のFOP(1.0)を使用することです。

于 2011-02-19T18:31:27.893 に答える