Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FOP:javaxml->;pdf转换速度比控制台慢6倍_Java_Xml_Pdf_Xslt_Apache Fop - Fatal编程技术网

FOP:javaxml->;pdf转换速度比控制台慢6倍

FOP:javaxml->;pdf转换速度比控制台慢6倍,java,xml,pdf,xslt,apache-fop,Java,Xml,Pdf,Xslt,Apache Fop,我使用ApacheFop从xml生成带有xsl:foXSL样式表的PDF文件。 传入的XML(存储在StringWriter中)大约有266000-300000行。结果PDF大约有250-300页 Java大约在30-35秒内生成相同的文件。如果我只使用控制台,那么在大约5-6秒内生成相同的文件 下面是java代码的摘录,该代码处理XML和XSL:FO并生成PDF Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, outPutStream);

我使用ApacheFop从xml生成带有xsl:foXSL样式表的PDF文件。 传入的XML(存储在StringWriter中)大约有266000-300000行。结果PDF大约有250-300页

Java大约在30-35秒内生成相同的文件。如果我只使用控制台,那么在大约5-6秒内生成相同的文件

下面是java代码的摘录,该代码处理XML和XSL:FO并生成PDF

Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, outPutStream);
TransformerFactory transformerFactory = new net.sf.saxon.TransformerFactoryImpl();
Transformer transformer = transformerFactory.newTransformer(new StreamSource(xsltFile));

transformer.setParameter("versionParam", "2.0");
transformer.setParameter("interval", messagingService.getReportInterval());    
transformer.setParameter("clientId", messagingService.getReportClientId());
transformer.setParameter("clientName",messagingService.getReportClientName());
transformer.setParameter("transactionTime", messagingService.getReportTransactionTime());
transformer.setParameter("transactionReceipt", messagingService.getReportReceipt());
transformer.setParameter("bruttoAmount", messagingService.getReportBruttoSum());
transformer.setParameter("feeAmount", messagingService.getReportFee());
transformer.setParameter("nettoAmount", messagingService.getReportNettoSum());
transformer.setParameter("currency", messagingService.getReportCurrency());
transformer.setParameter("total", messagingService.getReportTotal());

Source source = new StreamSource(new StringReader(xmlSource.toString()));
Result result = new SAXResult(fop.getDefaultHandler());
transformer.transform(source, result);
也许我做错了什么,或者有一个技巧可以提高性能