我需要在我们的一个cgi中调用Ghostscript将PDF文件转换为PNG图像。这个cgi在请求中有编码的PDF流,然后对其进行解码,如
my $PDF_ENCODED = $q->param('PDF_ENCODED'); my $PDF_DECODED = decode_base64($PDF_ENCODED);
它将通过调用'gs'命令在磁盘上生成PNG图像。
我的问题是我不知道如何将$ PDF_DECODED传递给gs命令行。我试过了
system("$PDF_DECODED | gs -dNOPAUSE -q -r300 -sDEVICE=png16m -dBATCH -sOutputFile=/tmp/ghostscript/new-test.png-")
但它没有用。
感谢。
再次感谢,golimar和simbabque。 它正在与
一起使用$SIG{PIPE} = 'IGNORE'; open(FH, "| gs -dNOPAUSE -q -r300 -sDEVICE=png16m -dBATCH -sOutputFile=/tmp/ghostscript/new-test.png -") or die "can't fork: $!"; print FH "$PDF_DECODED\n" or die "can't write: $!"; close FH or die "can't close: status=$?";
答案 0 :(得分:0)
在Perl中,您可以像处理文件一样打开进程,当您写入“文件”句柄时,不是将数据写入文件,而是将数据传输到进程,请参阅Using open() for IPC in perlipc
。< / p>