2011-03-08 66 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);