如何从CGI脚本启动HTMLDOC?
我有一个CGI脚本,它从HTML页面生成一个如何从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\
.pdf
文件。我的问题是,当它从Web浏览器启动时,没有创建.pdf
文档
到目前为止我所做的:
- chmod设置设置为以上推荐值(777)
- 测试了脚本中文件的正常输出,效果良好
- 从命令行在服务器上本地运行时,
脚本可以工作.cgi
#!/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服务器将交付的位置,并将指向文件的链接发送到浏览器
- 或者将内容类型设置为
,然后返回文件(文件周围没有任何HTML标记)application/pdf
/var/www
不可写入apache进程(或您正在使用的任何web服务器),因此,如果您使用用户权限从命令行运行它,它会成功,但当从web浏览器调用时,web服务器会以自己的方式运行它(非常有限)权限,然后写入失败
您需要首先-检查to_file
方法的返回代码以查看写入是否成功,然后-写入允许web服务器写入的目录,例如/var/tmp