2

.pdf我有一个从 HTML 页面生成文件的 CGI 脚本。我的问题是,当它从 Web 浏览器启动时,没有创建.pdf文档。

到目前为止我做了什么:

  • chmod 设置设置为上述建议 (777)
  • 测试了脚本文件的正常输出,效果很好
  • 从命令行在服务器上本地运行时,.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>";
4

2 回答 2

1

最可能的原因是/var/wwwapache进程(或您正在使用的任何Web服务器)不可写,因此如果您从命令行运行它 - 使用您的用户权限 - 它会成功,但是当从Web浏览器调用时服务器以自己的(非常有限的)权限运行它,然后写入失败。

需要先检查to_file方法的返回码,看是否写入成功,然后写入允许web服务器写入的目录,比如/var/tmp.

于 2014-10-05T16:05:10.670 回答
1

你在哪里将生成的文件发送到浏览器?

请注意,您不能在 HTML 中嵌入 PDF;你必须要么

  • 将文件放在您的网络服务器将交付它的地方,并将文件的链接发送到浏览器
  • 或将内容类型设置为application/pdf并仅返回文件(周围没有任何 HTML 标记)。
于 2009-05-28T10:41:12.910 回答