最后,我在这个邮件列表上找到了一个解决方案Fop from PHP Java,这样可以很好的与上一个发布的FOP 0.9x版本配合使用。现在唯一的问题是,当tomcat在生成的pdf上完成他的工作时,最后一次保持锁定状态,无法在不重新启动服务器的情况下打开它。
任何想法?以前感谢:)
编辑:好吧,我的坏是一个真正的白俄罗斯noob没有帮助我。事实上,麻烦的是我打开了一个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();
我实际上使用专用服务器并始终支持Java EE。你的想法很敏锐,但是在通过exec()或system()方法传递时经常会遇到许可麻烦,shell/prompt中允许的Java命令不能总是由php启动。 有一半的时间,我有一个错误,告诉我“java”命令没有被识别,如果我直接在shell /提示符下输入,它运行的很好。这就是为什么我试图访问该命令而不使用exec()。 编辑:我刚刚获得访问java.lang.System类与桥,所以我想麻烦来自* java_require()* :( – kitensei 2010-06-29 15:26:35