Конфигурация драйвера FOP такая же, как FOPFactory

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


person Theresa Forster    schedule 18.02.2011    source источник


Ответы (1)


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

person mzjn    schedule 19.02.2011
comment
Проблема в том, что мы используем модифицированную версию FOP - модифицированную для добавления в PDF CMYK и Spotcolor / Pantone. Другая проблема заключается в том, что предыдущий разработчик, ушедший из компании, назвал свою версию 1.11.111 - person Theresa Forster; 28.02.2011
comment
Насколько я могу судить, FOP 0.20.5 не предоставляет никакого доступа к настройкам разрешения (см. stylusstudio.com/api/fop-0.20.5/index.htm). Если вам абсолютно необходима эта функциональность, похоже, вам нужно укусить пулю и обновиться. - person mzjn; 01.03.2011
comment
@Theresa: Изначально вопрос касался Driver vs. FopFactory. Я бы сказал, что на него есть ответ. Тот факт, что вы используете пользовательскую версию FOP, не входил в вопрос. Если вам нужна помощь в устранении дополнительных сложностей, задайте новый вопрос. - person mzjn; 06.03.2011