我必须编写从.pdf文件中获取代码并将其复制到任何其他pdf文件中。我为打开文件而编写的代码如下:
<%args>
$fullname
$filename
</%args>
<%init>
use IO::File;
$r->content_type('application/pdf');
$r->header_out( 'Content-disposition' => "attachment; filename=$filename" );
my $tmpfile = $filename;
my $forread = new IO::File "< $fullname";
my @lines = <$forread>;
foreach my $key (@lines){
print $key;
}
return $fullname;
</%init>
其中文件名是要将 PDF 内容保存到的文件的名称,"全名"是从中获取内容的 PDF
您当前正在阅读文本文件。您应该首先binmode
非文本(如PDF)。并且,切勿使用间接对象语法。
my $fh = IO::File->new($fullname, 'r');
$fh->binmode(1);
所以试试这样的东西,改编自梅森书。
use Apache::Constants qw(OK);
my $fh = IO::File->new($fullname, 'r');
$fh->binmode(1);
$m->clear_buffer; # avoid extra output (but it only works when autoflush is off)
$r->content_type('application/pdf');
$r->send_http_header;
while ( my $data = $fh->getline ) {
$m->print($data);
}
$fh->close;
$m->abort;