最后,我在这个邮件列表Fop 上从 PHP Java中找到了一个解决方案,因此它适用于 FOP 0.9x 的最新发布版本。现在唯一的问题是,当tomcat完成他对生成的pdf的工作时,最后一个保持锁定状态,如果不重新启动服务器就无法打开它。
有任何想法吗 ?以前谢谢:)
编辑:好吧,我在Java中成为一个真正的菜鸟并没有帮助我。事实上,问题在于我打开了一个FileOutputStream并忘记在最后关闭它。如果这可以帮助某人,我是如何做到的:
require_once("java/Java.inc");
$input = 'D:/wamp/www/test/fo2pdf';
$output = 'D:/wamp/www/test/fo2pdf';
$sourcefile = 'test.fo';
$destfile = 'trys.pdf';
$pdffile = new Java("java.io.FileOutputStream", $output . "\\" . $destfile);
$mimes = new Java("org.apache.fop.apps.MimeConstants");
$fopfactory = new Java("org.apache.fop.apps.FopFactory");
$fopf = $fopfactory->newInstance();
$fopf->setUserConfig( new Java("java.io.File", "D:/wamp/www/myvisitV3/outils/FOP/conf/fop.xconf") );
$userf = $fopf->newFOUserAgent();
$fop = $fopf->newFop($mimes->MIME_PDF, $userf, $pdffile);
$transformerclass = new Java("javax.xml.transform.TransformerFactory");
$transformerfactory = $transformerclass->newInstance();
$transformerf = $transformerfactory->newTransformer();
$src = new Java("javax.xml.transform.stream.StreamSource", new Java("java.io.File", $input . "\\" . $sourcefile ));
$res = new Java("javax.xml.transform.sax.SAXResult", $fop->getDefaultHandler());
$transformerf->transform($src, $res);
$pdffile->close();