1

我需要在我们的一个 cgi 中调用 Ghostscript 将 PDF 文件转换为 PNG 图像。此 cgi 在请求中有编码的 PDF 流,然后对其进行解码,例如

我的 $PDF_ENCODED = $q->param('PDF_ENCODED');
我的 $PDF_DECODED = decode_base64($PDF_ENCODED);

它会通过调用'gs'命令在磁盘上生成一个PNG图像。

我的问题是我不知道如何将 $PDF_DECODED 传递到 gs 命令行。我试过了

系统(“$PDF_DECODED | gs -dNOPAUSE -q -r300 -sDEVICE=png16m -dBATCH -sOutputFile=/tmp/ghostscript/new-test.png-”)

但它不起作用。

谢谢。

再次感谢 golimar 和 simbabque。它正在与

$SIG{管道} = '忽略';
open(FH, "| gs -dNOPAUSE -q -r300 -sDEVICE=png16m -dBATCH -sOutputFile=/tmp/ghostscript/new-test.png -") 或者死 "不能分叉:$!";
print FH "$PDF_DECODED\n" 或 die "can't write: $!";
关闭 FH 或死“无法关闭:status=$?”;
4

1 回答 1

0

在 Perl 中,您可以像打开文件一样打开进程,并且当您写入“文件”句柄时,不是将数据写入文件,而是将数据通过管道传输到进程,请参阅perlipc.

于 2012-06-11T13:55:59.443 回答