2011-03-08 60 views
1

我正在阅读PDF文件到字节数组byte[],并将其发送到Perl SOAP :: Lite网络服务。一旦Perl服务接收到这个字节数组,我想将它们写入一个文件(当然有一个PDF扩展)。使用Perl将PDF文件字节写入文件?

我该如何做到这一点?我可以挖掘的所有例子都假设我想先打开一个文件,阅读,然后编写......但如果只有原始数据可以使用呢?

回答

4

我不认为字节数组是很好的使用Perl的数据结构,你会浪费大量的内存这种方式。只需使用字符串文件内容,并将其写入二进制文件(:raw设置在open):

my $pdf_data = 'contents of PDF ...'; 
open my $ofh, '>:raw', 'output.pdf' 
    or die "Could not write: $!"; 
print {$ofh} $pdf_data; 
close $ofh; 
+0

此代码创建一个文件,但该文件似乎得到某种方式损坏。想法? – YourMomzThaBomb 2011-03-08 19:47:11

+0

@YourMomzThaBomb - 确保您在所有方面(发送和接收)使用二进制模式,以防止不必要的换行符转换。使用一些二进制比较工具来确定差异。 – bvr 2011-03-08 20:32:08

0

这是否适合您?我的Perl有点生疏。

open(OUTFILE,">>output.pdf"); 
    binmode OUTFILE; 
    foreach my $byte (@bytes){ 
    print OUTFILE $byte; 
    } 
    close(OUTFILE);