Конфигурация драйвера FOP такая же, как у FOPFactory - PullRequest
2 голосов
/ 18 февраля 2011

В настоящее время я использую 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 с помощью Driver или мне придется переключиться на FOPFactory и каковы преимущества / проблемы при этом?

1 Ответ

4 голосов
/ 19 февраля 2011

Класс Driver доступен только в старых и не поддерживаемых версиях FOP (0.20.5 и более ранних). «новый стабильный API» (включая FopFactory) был представлен несколько лет назад.Поэтому мой совет - использовать FopFactory и последнюю версию FOP (1.0).

...