我正在使用APACHE FOP(v.1.0)和XSL-FO模板来构建PDF。我想要做的是将此PDF导出到外部文件(最终,一个服务器文件,但现在,只是我桌面上的一个文件夹)。
我知道的XSL代码工作正常,但问题是它目前只呈现由servlet处理的Web PDF(使用。我想要创建的是一个独立的文件。
Apache FOP XML - XLS-FO generates invalid pdf
上一个问题为我提供了一些指导,但我似乎无法将FopFactory或MimeConstsants导入到我的代码中。是否有一些先决条件导入我可能会丢失?或者我们的FOP版本是不是比我希望的那么强大?
到目前为止代码(从包含适当的xsl-fo代码的StringBuffer开始)
String stringReadFromReader = buff.toString();
File tmp = new File("[Desktop Directory]" );
FileOutputStream stream = new FileOutputStream(tmp);
stream.write(stringReadFromReader.getBytes());
stream.close();
StringReader reader = new StringReader(buff.toString());
InputSource isource = new InputSource(reader);
InputSourceDocument isDoc = new InputSourceDocument();
isDoc.setMimeType("application/pdf");
isDoc.setInputSource(isource);
它的总和是:如何获取原始xsl-FO代码并生成PDF文件?
答案 0 :(得分:1)
我之前遇到过关于FopFactory和MIME_CONSTANTS的关于通过我的IDE捕获错误的问题,但最终它无论IDE的声明如何都能正常工作。您添加到路径中的一些罐子之间可能存在相互矛盾的定义,但如果您使用FOP的稳定版本并且只添加了随附的罐子,则不应该存在问题。至于如何使用你的java代码生成一个PDF来调用FOP并传入你的xsl-fo文件,这应该可以让你开始......
File xmlfile = new File(xmlFile);
File xsltfile = new File(xslFile);
File pdffile = new File(outDir, outputPDF);
//make your fop factory
final FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI());
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
// Setup output
OutputStream out = new java.io.FileOutputStream(pdffile);
out = new java.io.BufferedOutputStream(out);
try {
// Construct fop with desired output format
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out);
// Setup XSLT
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(xsltfile));
transformer.setParameter("versionParam", "2.0");
// Setup input for transformations to take effect upon
Source src = new StreamSource(xmlfile);
// Generated FO file needs to be passed along to FOP
Result res = new SAXResult(fop.getDefaultHandler());
// Start XSLT transformation and FOP processing
transformer.transform(src, res);
} finally {
out.close();
}
上面的代码显示了如何设置工厂并将参数输入到FOP,其中xmlFile,outputPDF和xslFile是文件的路径。希望这有点帮助...
我强烈建议您查看Apache提供的示例,以便更好地了解您已经发生的事情。