我有一个CGI脚本,它从HTML页面生成一个.pdf
文件。我的问题是,当它从Web浏览器启动时,没有创建.pdf
文档。
到目前为止我做了什么:
.cgi
脚本正常工作为什么从Web浏览器运行时脚本不起作用?
#!/usr/bin/perl
use LWP::Simple;
use HTML::HTMLDoc;
use CGI;
print "Content-type: text/html\n\n";
print "<html><head><title>test</title></head>";
print "<body>";
my $htmldoc->set_html_content(qq~<html><body>A PDF file</body></html>~);
my $pdf = $htmldoc->generate_pdf() or die($!);
$pdf->to_file('/var/www/tom.pdf');
print "</body></html>";
答案 0 :(得分:1)
您将生成的文件发送到浏览器的哪个位置?
请注意,您无法在HTML中嵌入PDF;你必须
application/pdf
,然后只返回文件(周围没有任何HTML标记)。答案 1 :(得分:1)
最可能的原因是/var/www
无法写入apache进程(或您正在使用的任何Web服务器),因此如果您从命令行运行它 - 使用您的用户权限 - 它成功了,但是当从Web浏览器调用时,Web服务器使用自己的(非常有限的)权限运行它,然后写入失败。
您需要先检查to_file
方法的返回码以查看写入是否成功,其次 - 写入允许Web服务器写入的目录,例如{{1} }。