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

Timo Boehme commented on PDFBOX-4601:
-------------------------------------

As I don't have this buggy environment it is a bit hard to recomment. Maybe 
writing the last byte of the enlarged RAF may trigger the correct length, 
something like
{code:java}
long origFilePointer = raf.getFilePointer();
raf.seek(fileLen - 1);
raf.write(0);
raf.seek(origFilePointer);
{code}
maybe already the seek operation is enough?

Please report back if this helps - maybe finding the least costly IO-operation 
for getting the real size. We may add this as an optional workaround which 
could be enabled using a system property.

> in AWS lambda pdf merge giving error as Error in pdf consolidation: Expected 
> scratch file size of 196608 but found 192512
> -------------------------------------------------------------------------------------------------------------------------
>
>                 Key: PDFBOX-4601
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-4601
>             Project: PDFBox
>          Issue Type: Bug
>    Affects Versions: 2.0.12, 2.0.16
>         Environment: AWS Lambda
>            Reporter: biswajit
>            Priority: Major
>             Fix For: 2.0.17
>
>
> in AWS lambda pdf merge giving error as
> {{Error in pdf consolidation: Expected scratch file size of 196608 but found 
> 192512.}}
> *Code:*
> {code}
> PDFMergerUtility pdfMerger = new PDFMergerUtility();
> pdfMerger.addSources(sources);
> pdfMerger.setDestinationStream(mergedPDFOutputStream);
> pdfMerger.mergeDocuments(MemoryUsageSetting.setupTempFileOnly());
> {code}
> both InputStream and OutputStream are ByteArrayInputStream and 
> ByteArrayOutputStream. AWS Lambda environment has 512MB space available only 
> for /tmp partition. This could be an issue or not I am not sure. And AWS 
> lambda do not permit other directory than /tmp partition to create files.
> And while reading into the code I found below piece of code which I think 
> always be true. Because if you add some constant amount to an integer that 
> will always be constant amount greater than its original value
> in ScratchFile.java => enlarge() method:
> {code}
> if (pageCount + ENLARGE_PAGE_COUNT > pageCount)
> {
>   fileLen += ENLARGE_PAGE_COUNT * PAGE_SIZE;
>   raf.setLength(fileLen);
>   freePages.set(pageCount, pageCount + ENLARGE_PAGE_COUNT);
> }
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

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

Reply via email to