Ответ в том, что это действительно зависит от того, сколько вы используете FOP.
Когда мы обновили версию .2 * до версии .9, а затем версии 1.0, нам пришлось немного пересмотреть, но мы сгенерировали большое разнообразие FO (мы преобразовали FO в PostScript) и нам нужно было сгенерировать Разнообразие PostScripts, чтобы увидеть, что работает, а что нет в новых версиях. Скорее всего, вы найдете легкую замену всему, что могло исчезнуть в зависимости от того, что вы делали раньше.
К счастью, у нас были консолидированные ссылки на классы Driver и Fop для пользовательской утилиты, и поэтому переход от простой замены ссылки на новую утилиту, которая использовала FopFactory, был не так уж и плох.
Ваш первый шаг должен состоять в том, чтобы написать абстрактный Facade, так как @Wivani предлагает объединить ваши старые ссылочные вызовы fop, убедиться, что он работает в вашем коде, а затем двигаться вперед, заменив ваш старый Facade реализацией, использующей более новый код.
Единственное, что меня не устраивало в Fop, это то, что сообществу требуется довольно много времени, чтобы применить исправления ошибок и создать новые релизы. Мы использовали v1 в производстве с XML Graphics 1.4 без проблем (базовый FO для генерации файлов PostScript и TIFF).
Я дополню этот пост в понедельник кодом помощника, если он вам понадобится.
UPDATE
Вот что мы использовали для преобразования файла FO в PostScript:
String foAsString = "your_fo_as_string";
File destination = new File("path_to_file"");
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(destination));
Driver driver = new Driver(new InputSource(new StringReader(foAsString)), out);
driver.setRenderer(Driver.RENDER_PS);
driver.run();
out.close();
return destination;
Вот краткое изложение того, что мы используем сейчас.
FopFactory создается как уровень экземпляра как
this.fopFactory = FopFactory.newInstance();
код:
import javax.xml.transform.Source;
import javax.xml.transform.Templates;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.apache.fop.apps.Fop;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.apps.MimeConstants;
// ...
String foAsString = "your_fo_as_string";
File destination = new File("path_to_file"");
OutputStream outStream = new BufferedOutputStream(new FileOutputStream(destination));
Fop fop = fopFactory.newFop(MimeConstants.MIME_POSTSCRIPT, outStream);
Transformer transformer = transformerFactory.newTransformer();
Source source = new StreamSource(new StringReader(foAsString));
Result result = new SAXResult(fop.getDefaultHandler());
transformer.transform(source, result);
outStream.close();
return destination;