[ 
https://issues.apache.org/jira/browse/PDFBOX-4028?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16284961#comment-16284961
 ] 

Tilman Hausherr edited comment on PDFBOX-4028 at 12/9/17 7:04 PM:
------------------------------------------------------------------

I looked at the "bad" result file, and it starts with content that belongs to 
position 4898816. That number is 2^14 * 13 * 23.

2^14 = 16384 which is a typical buffer size.

My theory is that something goes wrong while reading a RandomAccessFile and 
writing a FileOutputStream. I've tried to simplify the code in COSWriter to 
this:
{code}
    private void doWriteIncrement() throws IOException
    {
        ByteArrayOutputStream baos = (ByteArrayOutputStream) output; // that's 
the incremental part

        IOUtils.copy(new RandomAccessInputStream(incrementalInput), 
incrementalOutput);
        incrementalOutput.write(baos.toByteArray());
    }
{code}
and it still happened. Even if I read from incrementalInput directly and wrote 
into incrementalOutput and took care to seek in between, it still happened.


was (Author: tilman):
I looked at the "bad" result file, and it starts with content that belongs to 
position 4898816. That number is 2^14 * 13 * 13.

2^14 = 16384 which is a typical buffer size.

My theory is that something goes wrong while reading a RandomAccessFile and 
writing a FileOutputStream. I've tried to simplify the code in COSWriter to 
this:
{code}
    private void doWriteIncrement() throws IOException
    {
        ByteArrayOutputStream baos = (ByteArrayOutputStream) output; // that's 
the incremental part

        IOUtils.copy(new RandomAccessInputStream(incrementalInput), 
incrementalOutput);
        incrementalOutput.write(baos.toByteArray());
    }
{code}
and it still happened. Even if I read from incrementalInput directly and wrote 
into incrementalOutput and took care to seek in between, it still happened.

> SaveIncremental on same opened file
> -----------------------------------
>
>                 Key: PDFBOX-4028
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-4028
>             Project: PDFBox
>          Issue Type: Bug
>          Components: Writing
>    Affects Versions: 2.0.8
>            Reporter: Martin Mancuska
>         Attachments: pdf_reference_1-7.pdf
>
>
> The incremental save does not work correctly if it is done on the same opened 
> document. It produces corrupted file. The save incremental should append 
> changes at the end of file (after last origin EOF).
> Newly saved file contains changes also in the middle of the file not only at 
> the end. Changes in the middle of file contains zeroed bytes or garbage. 
> Tested with the latest stable version of PDFBox 2.0.8.
>  
> Sample code:
> {code:java}
> String fileName = "/path/to/document.pdf";
> PDDocument doc = PDDocument.load((new File(fileName));
> ...
> document changes
> ...
> try ( OutputStream outStream = new FileOutputStream(fileName)) {
>       doc.saveIcremental(outStream);
> }
> catch ....
> ...
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to