答えは、あなたがFOPをどのくらい使っているかによって大きく変わるはずです。
.2 *バージョンから.9、そして1.0バージョンに更新したとき、かなり修正する必要がありましたが、FO(PostScriptにFOを変換しました)新しいバージョンで何が成功し、何が失敗したのかを知るためのさまざまなPostScriptがあります。あなたがしていたことに基づいて消えた可能性のあるものは、簡単に置き換えることができます。
ドライバとFopクラスへの参照がカスタムユーティリティに統合されていたため、FopFactoryを使用した新しいユーティリティリファレンスを単に交換するだけではあまり変わりありませんでした。
あなたの最初のステップは、抽象Facadeを書くことです@Wivaniはあなたの古いFop参照呼び出しを統合し、あなたのコードで動作することを確認し、古いFacadeを新しいコードを使用する実装。
Fopについて私に不快感を与えたのは、コミュニティがバグパッチを適用して新しいリリースを生成するまでかなりの時間がかかります。本番ではv1をXML Graphics 1.4で問題なく使用しました(PostScriptとTIFFファイルを生成するための基本的なFO)。
月曜日にこの投稿を補足します。必要な場合はヘルパーコードを追加します。ここで
UPDATE たちはPostScriptにFOファイルを変換するのに使用するために使用するものである:ここでは
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;
私はちょうどページ@ApacheFopその「以前のバージョンからのアップグレード」を読んで、あなたが持っている私には思えますいくつかの書き換えがあります。 – Wivani
@Wivani、私は恐れていましたが、私はいくつかの簡単な方法があることを望んでいました。 – Veger
これまでのところ、両方のAPIのために 'Facade'を書いてApache FOPプロジェクトに貢献することができます;-) – Wivani