ava.lang.ArrayIndexOutOfBoundsException: arraycopy: source index -17320 out of bounds for byte[8092]
at com.spire.pdf.packages.spryvq.spr◍▕(RandomAccessFileBuffered.java:474) ~[spire.pdf-11.9.6.jar:11.9.6]
at com.spire.pdf.packages.spryvq.spr┧¶(RandomAccessFileBuffered.java:582) ~[spire.pdf-11.9.6.jar:11.9.6]
at com.spire.pdf.packages.sprmwv.read(FileStream.java:299) ~[spire.pdf-11.9.6.jar:11.9.6]
at com.spire.pdf.packages.sproog.spr┧¶(BinaryReader.java:166) ~[spire.pdf-11.9.6.jar:11.9.6]
at com.spire.pdf.packages.sprigo.spr┧¶(Unknown Source) ~[spire.pdf-11.9.6.jar:11.9.6]
at com.spire.pdf.packages.sprxnf.spr┚⌭(Unknown Source) ~[spire.pdf-11.9.6.jar:11.9.6]
at com.spire.pdf.packages.sprxnf.spr⌫⌭(Unknown Source) ~[spire.pdf-11.9.6.jar:11.9.6]
at com.spire.pdf.packages.sprxnf.spr┛⌭(Unknown Source) ~[spire.pdf-11.9.6.jar:11.9.6]
at com.spire.pdf.packages.sprxye.spr⑶⌮(Unknown Source) ~[spire.pdf-11.9.6.jar:11.9.6]
at com.spire.pdf.packages.sprxye.spr㈯⃠⌭(Unknown Source) ~[spire.pdf-11.9.6.jar:11.9.6]
at com.spire.pdf.packages.sprxye.sprㆁ⌭(Unknown Source) ~[spire.pdf-11.9.6.jar:11.9.6]
at com.spire.pdf.packages.sprkxe.spr™∮(Unknown Source) ~[spire.pdf-11.9.6.jar:11.9.6]
at com.spire.pdf.packages.sprnvo.spr™∮(Unknown Source) ~[spire.pdf-11.9.6.jar:11.9.6]
at com.spire.pdf.packages.sprwkf.spr╸⌭(Unknown Source) ~[spire.pdf-11.9.6.jar:11.9.6]
at com.spire.pdf.packages.sprwkf.spr┳⌭(Unknown Source) ~[spire.pdf-11.9.6.jar:11.9.6]
Environment:
* Java: 21.0.6
* Spire.PDF: 11.9.6
* Platform: Liferay (OSGi environment)
* Execution context: asynchronous workflow (multi-threaded)
Input handling:
We are loading and saving the PDF entirely in memory using byte streams, we need to return a byte[].
Here are some snippets.
- Code: Select all
byte[] inputByte = dlFileEntry.getContentStream();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ByteArrayInputStream bais = new ByteArrayInputStream(inputByte);
PdfDocument pdfDocument = new PdfDocument();
pdfDocument.loadFromStream(bais);
pdfDocument.saveToStream(byteArrayOutputStream);
byte[] streamPDF = byteArrayOutputStream.toByteArray();
Additional context:
The same logic works correctly in other flows.
The PDF is successfully loaded (loadFromStream does not throw errors).
The exception occurs only during saveToStream in some cases.
Request:
Could you please clarify:
- 1. Possible causes for this exception during saveToStream
2. Whether there are known issues with stream-based processing in version 11.9.6
3. Recommended approach for handling PDFs entirely in memory
Thanks.