使用PHP从Java生成器提供内存中的pdf
我正在创建一个web前端,供客户下载他们的报告。该公司使用的程序是用Java编写的,由31个mysql表和4个需要的报告组成,每个报告有140多个数据点。我正在用PHP制作网站,用Java制作报告生成器,但我在查找有关如何将内存中的PDF直接加载到客户端浏览器的信息时遇到了问题。我想使用一个从Java到PHP的TCP客户机/服务器,但如何编写它,使其不必写入服务器驱动器并作为链接提供。我也不想将17000行Java重写为PHP,因为我对PHP还不熟悉。有什么办法可以完成这件事吗? 先谢谢你使用PHP从Java生成器提供内存中的pdf,java,php,pdf,Java,Php,Pdf,我正在创建一个web前端,供客户下载他们的报告。该公司使用的程序是用Java编写的,由31个mysql表和4个需要的报告组成,每个报告有140多个数据点。我正在用PHP制作网站,用Java制作报告生成器,但我在查找有关如何将内存中的PDF直接加载到客户端浏览器的信息时遇到了问题。我想使用一个从Java到PHP的TCP客户机/服务器,但如何编写它,使其不必写入服务器驱动器并作为链接提供。我也不想将17000行Java重写为PHP,因为我对PHP还不熟悉。有什么办法可以完成这件事吗? 先谢谢你 正如
有一个pdf生成库。请找到链接取决于java应用程序运行多长时间,您可以考虑使用<代码> PROCEOPENT//COD>来创建一个到java程序的管道:
<?php
$desc = array(array('pipe','r'),array('pipe','w'));
$resource= proc_open('bash',$desc,$pipes);
if (!is_resource($resource))
{
throw new Exception('PDF stream creation failed');
}
usleep(5);//for safety
fwrite($pipes[0],'java mkPDF paras'."\n");//double quoted \n is crucial
fclose($pipes[0]);
usleep(100);//while java app is running;
$pdf = stream_get_contents($pipes[1]);
fclose($pipes[1]);
proc_close($resource);
?>
与:
后者未经测试,因此我不确定这是否适用于您的情况。。。但是你得到了这个想法取决于java应用程序运行多长时间,你可以考虑使用<代码> PROCKOPENG//CODE >来创建一个到java程序的管道:
<?php
$desc = array(array('pipe','r'),array('pipe','w'));
$resource= proc_open('bash',$desc,$pipes);
if (!is_resource($resource))
{
throw new Exception('PDF stream creation failed');
}
usleep(5);//for safety
fwrite($pipes[0],'java mkPDF paras'."\n");//double quoted \n is crucial
fclose($pipes[0]);
usleep(100);//while java app is running;
$pdf = stream_get_contents($pipes[1]);
fclose($pipes[1]);
proc_close($resource);
?>
与:
后者未经测试,因此我不确定这是否适用于您的情况。。。但是你得到了这个想法难道你不能让web请求触发java应用程序并将pdf流式传输到php,然后由php将其发送到客户端吗?让php查询java应用程序并获得结果流不会是一个问题。我的关键问题是不知道/不理解将流从php端口移动到客户端的代码。遗憾的是,我对php非常陌生。难道你不能让web请求触发java应用程序并将pdf流式传输到php,然后php再将其发送到客户端吗?让php查询java应用程序并获得结果流不会有问题。我的关键问题是不知道/不理解将流从php端口移动到客户端的代码。遗憾的是,我对php非常陌生,所以你是说,我应该在php中生成pdf,而不是用已经编写好的代码在Java中创建pdf,因为php本身不具备数据流的能力。这是不幸的,我的印象是java端没有这样的特性。是的,通过使用web服务这样做,您可以按照自己的方式设计PDF。因此,您的意思是,我应该在php中生成PDF,而不是使用已经编写的代码在Java中创建PDF,因为php本身不具备流式传输数据的能力。这是不幸的,我的印象是java端没有这样的特性。是的,通过使用web服务这样做,您可以按照自己的方式设计PDF。
usleep(10);//while java app is running;
$pdf = '';
while (($pdfBuff = fgets($pipes[1],1024)) !== null)
{
$pdf.=$pdfBuff;//or echo, or whatever
}
fclose($pipes[1]);