Package com.itextpdf.kernel.pdf
Class MemoryLimitsAwareHandler
java.lang.Object
com.itextpdf.kernel.pdf.MemoryLimitsAwareHandler
A
MemoryLimitsAwareHandler
handles memory allocation and prevents decompressed pdf streams from occupation of more space than allowed.
A configured MemoryLimitsAwareHandler can be set as a property of ReaderProperties
instance which is passed to PdfReader
.
-
Constructor Summary
ConstructorDescriptionCreates aMemoryLimitsAwareHandler
which will be used to handle decompression of pdf streams.MemoryLimitsAwareHandler
(long documentSize) Creates aMemoryLimitsAwareHandler
which will be used to handle decompression of pdf streams. -
Method Summary
Modifier and TypeMethodDescriptionvoid
checkIfXrefStructureExceedsTheLimit
(int requestedCapacity) Performs a check of possible extension of xref structure.int
Gets maximum number of elements in xref structure.long
Gets the maximum allowed size which can be occupied by all decompressed pdf streams.int
Gets the maximum allowed size which can be occupied by a single decompressed pdf stream.boolean
Performs a check if thePdfStream
with provided setup of the filters requires memory limits awareness during decompression.void
setMaxNumberOfElementsInXrefStructure
(int maxNumberOfElementsInXrefStructure) Sets maximum number of elements in xref structure.setMaxSizeOfDecompressedPdfStreamsSum
(long maxSizeOfDecompressedPdfStreamsSum) Sets the maximum allowed size which can be occupied by all decompressed pdf streams.setMaxSizeOfSingleDecompressedPdfStream
(int maxSizeOfSingleDecompressedPdfStream) Sets the maximum allowed size which can be occupied by a single decompressed pdf stream.
-
Constructor Details
-
MemoryLimitsAwareHandler
public MemoryLimitsAwareHandler()Creates aMemoryLimitsAwareHandler
which will be used to handle decompression of pdf streams. The max allowed memory limits will be generated by default. -
MemoryLimitsAwareHandler
public MemoryLimitsAwareHandler(long documentSize) Creates aMemoryLimitsAwareHandler
which will be used to handle decompression of pdf streams. The max allowed memory limits will be generated by default, based on the size of the document.- Parameters:
-
documentSize
- the size of the document, which is going to be handled by iText.
-
-
Method Details
-
getMaxSizeOfSingleDecompressedPdfStream
public int getMaxSizeOfSingleDecompressedPdfStream()Gets the maximum allowed size which can be occupied by a single decompressed pdf stream.- Returns:
- the maximum allowed size which can be occupied by a single decompressed pdf stream.
-
setMaxSizeOfSingleDecompressedPdfStream
public MemoryLimitsAwareHandler setMaxSizeOfSingleDecompressedPdfStream(int maxSizeOfSingleDecompressedPdfStream) Sets the maximum allowed size which can be occupied by a single decompressed pdf stream. This value correlates with maximum heap size. This value should not exceed limit of the heap size.iText will throw an exception if during decompression a pdf stream which was identified as requiring memory limits awareness occupies more memory than allowed.
- Parameters:
-
maxSizeOfSingleDecompressedPdfStream
- the maximum allowed size which can be occupied by a single decompressed pdf stream. - Returns:
-
this
MemoryLimitsAwareHandler
instance. - See Also:
-
getMaxSizeOfDecompressedPdfStreamsSum
public long getMaxSizeOfDecompressedPdfStreamsSum()Gets the maximum allowed size which can be occupied by all decompressed pdf streams.- Returns:
- the maximum allowed size value which streams may occupy
-
setMaxSizeOfDecompressedPdfStreamsSum
public MemoryLimitsAwareHandler setMaxSizeOfDecompressedPdfStreamsSum(long maxSizeOfDecompressedPdfStreamsSum) Sets the maximum allowed size which can be occupied by all decompressed pdf streams. This value can be limited by the maximum expected PDF file size when it's completely decompressed. Setting this value correlates with the maximum processing time spent on document readingiText will throw an exception if during decompression pdf streams which were identified as requiring memory limits awareness occupy more memory than allowed.
- Parameters:
-
maxSizeOfDecompressedPdfStreamsSum
- he maximum allowed size which can be occupied by all decompressed pdf streams. - Returns:
-
this
MemoryLimitsAwareHandler
instance. - See Also:
-
isMemoryLimitsAwarenessRequiredOnDecompression
Performs a check if thePdfStream
with provided setup of the filters requires memory limits awareness during decompression.- Parameters:
-
filters
- is anPdfArray
of names of filters - Returns:
- true if PDF stream is suspicious and false otherwise
-
getMaxNumberOfElementsInXrefStructure
public int getMaxNumberOfElementsInXrefStructure()Gets maximum number of elements in xref structure.- Returns:
- maximum number of elements in xref structure.
-
setMaxNumberOfElementsInXrefStructure
public void setMaxNumberOfElementsInXrefStructure(int maxNumberOfElementsInXrefStructure) Sets maximum number of elements in xref structure.- Parameters:
-
maxNumberOfElementsInXrefStructure
- maximum number of elements in xref structure.
-
checkIfXrefStructureExceedsTheLimit
public void checkIfXrefStructureExceedsTheLimit(int requestedCapacity) Performs a check of possible extension of xref structure.- Parameters:
-
requestedCapacity
- capacity to which we need to expand xref array.
-