在PHP中解析pdf2htmllex的标准错误


parsing stderr in php for pdf2htmlex

我有下面的php代码:

<?php
header('Content-Type: text/HTML; charset=utf-8');
header( 'Content-Encoding: none; ' );
//$cmd = "pdf2htmlEX --zoom 1.3 --override-fstype 1 --hdpi 720 --dest-dir test test/test_data/Harsh_Singh_191_Marketing_IM18.pdf";
$cmd = "ping 127.0.0.1";
$descriptorspec = array(
  0 => array("pipe", "r"),   // stdin is a pipe that the child will read from
  1 => array("pipe", "w"),   // stdout is a pipe that the child will write to
  2 => array("pipe", "w")    // stderr is a pipe that the child will write to
);
flush();
$process = proc_open($cmd, $descriptorspec, $pipes);
echo "<pre>";
if (is_resource($process)) {
   while ($s = fgets($pipes[1])) {
       print $s;
       flush();
   }
}
echo "</pre>";
?>

当$cmd被设置为"ping 127.0.0.1"时,这段代码工作得很好,它给出了一个实时的php输出:

Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Ping statistics for 127.0.0.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

但是pdf2htmlEX命令即$cmd = "pdf2htmlEX——zoom 1.3——overoverfstype 1——hdpi 720——dest-dir test test/test_data/Harsh_Singh_191_Marketing_IM18.pdf"不起作用。它确实转换文件并在目录中给出输出,但在网页上没有任何回显。我怎样才能让它工作?

pdf2htmllex不打印任何HTML输出到stdout,只打印到文件。

有两种方法来做你想做的事:

  • 先写入一个临时文件,然后输出这个文件。
  • 让pdf2htmllex写入FIFO(命名管道),以便PHP脚本可以在管道的另一边读取

我在Linux命令行上用FIFO测试了它,它应该以类似的方式与PHP脚本一起工作:

mkfifo htmlpipe.fifo
pdf2htmlEX foo.pdf htmlpipe.fifo

这将阻塞,直到您从管道中读取。在另一个终端:

cat htmlpipe.fifo
<style type="text/css">...............
#sidebar {.......