답변은 FOP의 사용 정도에 따라 달라집니다.
.2 * 버전을 .9, 1.0 버전으로 업데이트했을 때 우리는 꽤 많이 수정해야했지만 FO (PostScript로 변환 된)를 다양하게 만들었고 어떤 PostScript가 새로운 버전에서 작동하고 어떤 점이 실패했는지 확인하는 다양한 PostScript. 당신이 해왔 던 일을 기반으로 사라진 것이 무엇이든 쉽게 대체 할 수 있습니다.
드라이버 및 Fop 클래스에 대한 통합 참조가 사용자 지정 유틸리티에 통합되어 있으므로 FopFactory를 사용하는 새로운 유틸리티 참조를 단순히 전환하는 것이 좋지 않았습니다.
첫 번째 단계는 @Wivani가 이전의 fop 참조 호출을 통합하고 코드에서 작동하는지 확인한 다음 이전 Facade를 새 코드를 사용하는 구현으로 대체하여 앞으로 이동하는 것처럼 추상 Facade를 작성하는 것입니다 .
Fop에 대해 나에게 불쾌감을 줄 수있는 유일한 점은 커뮤니티에서 버그 패치를 적용하고 새로운 릴리스를 생성하는 데 꽤 오래 걸리는 것입니다. 우리는 문제없이 XML 그래픽 1.4를 사용하여 프로덕션 환경에서 v1을 사용했습니다 (PostScript 및 TIFF 파일을 생성하는 기본 FO).
필요할 경우이 헬프 코드로 월요일에이 게시물을 보완 할 것입니다.
UPDATE 는 여기에 우리가 포스트 스크립트로 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;
우리가 지금 무엇을 사용의 추상이다.
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 '이전 버전에서 업그레이드'읽었습니다 그리고 당신은 나에게 보인다
FopFactory는
코드
로 인스턴스 레벨로 생성된다 약간의 다시 쓰기. – Wivani@Wivani, 나는 두려웠지만 몇 가지 쉬운 방법이 있기를 바랬습니다. – Veger
당신이 그것에 익숙하다면 두 API 모두를위한 'Facade'를 작성하여 Apache FOP 프로젝트에 기여할 수 있습니다 ;-) – Wivani