Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从CGI脚本启动HTMLDOC?_Html_Pdf_Cgi - Fatal编程技术网

如何从CGI脚本启动HTMLDOC?

如何从CGI脚本启动HTMLDOC?,html,pdf,cgi,Html,Pdf,Cgi,我有一个CGI脚本,它从HTML页面生成一个.pdf文件。我的问题是,当它从Web浏览器启动时,没有创建.pdf文档 到目前为止我所做的: chmod设置设置为以上推荐值(777) 测试了脚本中文件的正常输出,效果良好 从命令行在服务器上本地运行时,.cgi脚本可以工作 为什么从web浏览器运行时脚本不起作用 #!/usr/bin/perl use LWP::Simple; use HTML::HTMLDoc; use CGI; print "Content-type: text/html\

我有一个CGI脚本,它从HTML页面生成一个
.pdf
文件。我的问题是,当它从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>";
#/usr/bin/perl
使用LWP::Simple;
使用HTML::HTMLDoc;
使用CGI;
打印“内容类型:text/html\n\n”;
打印“测试”;
打印“”;
我的$htmldoc->设置html内容(qq~A PDF文件~);
my$pdf=$htmldoc->generate_pdf()或die($!);
$pdf->to_文件('/var/www/tom.pdf');
打印“”;

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

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

  • 将文件放在web服务器将交付的位置,并将指向文件的链接发送到浏览器
  • 或者将内容类型设置为
    application/pdf
    ,然后返回文件(文件周围没有任何HTML标记)

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

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