如何使用CGI请求Ghostscript

时间:2012-06-11 13:46:46

标签: perl cgi ghostscript

我需要在我们的一个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=$?";

1 个答案:

答案 0 :(得分:0)

在Perl中,您可以像处理文件一样打开进程,当您写入“文件”句柄时,不是将数据写入文件,而是将数据传输到进程,请参阅Using open() for IPC in perlipc。< / p>