使用PHP从Java生成器提供内存中的pdf

使用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还不熟悉。有什么办法可以完成这件事吗? 先谢谢你 正如

我正在创建一个web前端,供客户下载他们的报告。该公司使用的程序是用Java编写的,由31个mysql表和4个需要的报告组成,每个报告有140多个数据点。我正在用PHP制作网站,用Java制作报告生成器,但我在查找有关如何将内存中的PDF直接加载到客户端浏览器的信息时遇到了问题。我想使用一个从Java到PHP的TCP客户机/服务器,但如何编写它,使其不必写入服务器驱动器并作为链接提供。我也不想将17000行Java重写为PHP,因为我对PHP还不熟悉。有什么办法可以完成这件事吗? 先谢谢你

  • 正如前面所说,直接向java应用程序发送web请求,并将pdf流式传输到php

  • 使用web服务

    I.在java端开发一些web服务,只发送XML、jSon等格式的数据

    二,。编写代码来使用这些web服务,并开发代码来生成pdf并流式传输这些pdf

  • 有一个pdf生成库。请找到链接

  • 正如前面所说,直接向java应用程序发送web请求,并将pdf流式传输到php

  • 使用web服务

    I.在java端开发一些web服务,只发送XML、jSon等格式的数据

    二,。编写代码来使用这些web服务,并开发代码来生成pdf并流式传输这些pdf


  • 有一个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]);