1
我想要使用Apache FOP来转换XML文件为PDF文件,但我只收到一个空白页空白页,这是我的代码:XML到PDF使用FOP返回
protected byte[] buildPDF(byte[] xml) throws IOException {
FileOutputStream fos;
byte[] pdfBytes = null;
try{
// Setup input and output files
File xmlfile = new File(MULTIMEDIA_PATH + File.separator + "xml/report.xml");
File xsltfile = new File(MULTIMEDIA_PATH + File.separator + "xml/transformation.xsl");
fos = new FileOutputStream(xmlfile);
fos.write(xml);
fos.close();
// Step 1: Construct a FopFactory
FopFactory fopFactory = FopFactory.newInstance();
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
// Step 2: Setup output stream
OutputStream out = new BufferedOutputStream(new FileOutputStream((MULTIMEDIA_PATH + File.separator + "xml/result.pdf")));
try {
// Step 3: Construct FOP with desired output format
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out);
// Step 4: Setup JAXP using identity transformer
Source xslt = new StreamSource(xsltfile);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(xslt);
// Step 5: Setup input and output for XSLT transformation
Source src = new StreamSource(xmlfile);
Result res = new SAXResult(fop.getDefaultHandler());
// Step 6: Start XSLT transformation and FOP processing
transformer.transform(src, res);
} finally {
out.close();
}
} catch (Exception e) {
e.printStackTrace(System.err);
System.exit(-1);
}
return pdfBytes;
}
你对这个问题有什么想法?
谢谢!
我out.pdf文件是一个空白页面,但如果我使用氧气进行转换,所有工作正常。我认为问题出在代码中。 P.S. pdfBytes为空,因为首先我希望PDF生成工作正常。 –
你有一些静态文本或只有基于report.xml的动态? U是否使用与Oxygen相同的FOP版本(我不知道这个应用程序,只是读它与在FOP内建)?也许你当地的FOP conf是不正确的?任何日志输出(警告,错误来自FOP)? –