Altova StyleVision을 사용하여 XSLT-FO 템플릿을 생성합니다. XSLT 1.0 FO 파일을 생성 할 때 Apache FOP 변환을 사용하여 PDF로 변환 할 수 있습니다. 아래 코드를 참조하십시오.XSLT 2.0 변환 PDF로 변환 Saxon을 사용하여 Java에서 Apache FOP 및 스타일 비전 사용
DefaultConfigurationBuilder cfgBuilder = new DefaultConfigurationBuilder();
Configuration cfg = cfgBuilder
.buildFromFile(new File("fop.xconf"));
FopFactoryBuilder fopFactoryBuilder = new FopFactoryBuilder(
new File("fopbase").toURI()).setConfiguration(cfg);
FopFactory fopFactory = fopFactoryBuilder.build();
File xsltFile = new File(
"xslt1File.xslt");
StreamSource xmlSource = new StreamSource(
new File("xmlData.xml"));
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
OutputStream out;
out = new java.io.FileOutputStream("GeneratedPDF.pdf");
try {
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(xsltFile));
Result res = new SAXResult(fop.getDefaultHandler());
transformer.transform(xmlSource, res);
} finally {
out.close();
}
이 코드는 훌륭합니다.
문제 내가 StyleVision에서 XSLT-FO 2.0 템플릿을 생성 할 때, XSLT 2.0의 기능을 사용하기 위해 노력 해왔다 2.0
XSLT-FO.
나는 기사 Here을 읽었으며 Here 그래서 나는 saxon9.jar 다운로드 [경로를 구축하기 위해 추가, 난 그냥
DefaultConfigurationBuilder cfgBuilder = new DefaultConfigurationBuilder();
Configuration cfg = cfgBuilder
.buildFromFile(new File("fop.xconf"));
FopFactoryBuilder fopFactoryBuilder = new FopFactoryBuilder(
new File("fopbase").toURI()).setConfiguration(cfg);
FopFactory fopFactory = fopFactoryBuilder.build();
File xsltFile = new File(
"xslt1File.xslt");
StreamSource xmlSource = new StreamSource(
new File("xmlData.xml"));
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
OutputStream out;
out = new java.io.FileOutputStream("GeneratedPDF.pdf");
try {
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out);
TransformerFactory factory = new net.sf.saxon.TransformerFactoryImpl();
Transformer transformer = factory.newTransformer(new StreamSource(xsltFile));
Result res = new SAXResult(fop.getDefaultHandler());
transformer.transform(xmlSource, res);
} finally {
out.close();
}
하는 TransformerFactory 공장 아래 = 새로운 net.sf 같은 변압기 공장을 변경 .saxon.TransformerFactoryImpl(); 나는이 코드를 실행하면
, 나는 HE 색슨 사용하여 자바에서 PDF로 XML + XSLT 2.0 변환
Error at xsl:import-schema on line 12 column 67 of xsltfile.xslt:
XTSE1650: xsl:import-schema requires Saxon-EE
javax.xml.transform.TransformerConfigurationException: net.sf.saxon.s9api.SaxonApiException: xsl:import-schema requires Saxon-EE
at net.sf.saxon.jaxp.SaxonTransformerFactory.newTemplates(SaxonTransformerFactory.java:157)
at net.sf.saxon.jaxp.SaxonTransformerFactory.newTransformer(SaxonTransformerFactory.java:110)
at main.FopTransformer.convertToPDF(FopTransformer.java:60)
at main.FopTransformer.main(FopTransformer.java:29)
당신의 어떤 사람이 완벽한 솔루션을 알고 있나요 오류를 얻을.
도움을 주시면 감사하겠습니다.
감사합니다.
안녕하세요 relpy에 대한 죄송합니다. saxon9ee.jar을 추가했지만 여전히 동일한 오류가 있습니다. – IsaacK
오 마이 갓. XSLT 2.0 및 XPath 2.0 4th Edition의 저자로부터 응답을 얻지 못했다고 생각합니다. saxon9ee.jar가 여전히 실패하고 있지만 내 문제를 도와 주셔서 감사합니다. – IsaacK
클래스 패스에 Saxon-EE jar 파일을 넣는 것뿐만 아니라'TransformerFactory factory = new com.saxonica.config.EnterpriseTransformerFactory(); '와 함께 호출해야합니다. –