Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: Writing PDF binary file from stream yields malformed PDF

by BrowserUk (Pope)
on Jun 27, 2013 at 08:46 UTC ( #1040958=note: print w/ replies, xml ) Need Help??


in reply to Writing PDF binary file from stream yields malformed PDF

The problem here is that you are using readline() on a binary file.

You are relying on the fact that many binary files happen to contain bytes that look like line ends.

And using for with a file handle means you are slurping the whole file into a list.

And if the file contains (say) a lot of packed binary integers, it could mean that you are reading and writing the file in a gazillion iddy-biddy chunks.

You say you've tried sysread and syswrite but don't show any code, or how the results failed -- ie. did you compare the input and output files?

Your best bet would be to replace the read/write loop above with something like:

open OUT ... { local $\; my $buffer; while( read( STDIN, $buffer, 4096 ) ) { print OUT $buffer; } } close OUT;

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.


Comment on Re: Writing PDF binary file from stream yields malformed PDF
Download Code
Re^2: Writing PDF binary file from stream yields malformed PDF (readline bytes)
by Anonymous Monk on Jun 27, 2013 at 08:59 UTC

    look ma, no line ends

    local $/ = \(8 * 1024); # blocksize while( readline ...

      No shit Sherlock!

      Now explain it to the OP who might benefit from it -- if you can bring yourself to type an actual explanation that is.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

        ... woof ...

        Nice

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1040958]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (16)
As of 2014-08-27 16:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (244 votes), past polls