Class MemoryLimitsAwareHandler
java.lang.Object
com.itextpdf.text.pdf.MemoryLimitsAwareHandler
A
MemoryLimitsAwareHandler handles memory allocation and prevents decompressed pdf streams from occupation of more space than allowed.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate long(package private) booleanprivate longprivate intprivate longprivate static final intprivate static final intprivate static final longprivate static final int -
Constructor Summary
ConstructorsConstructorDescriptionCreates aMemoryLimitsAwareHandlerwhich will be used to handle decompression of pdf streams.MemoryLimitsAwareHandler(long documentSize) Creates aMemoryLimitsAwareHandlerwhich will be used to handle decompression of pdf streams. -
Method Summary
Modifier and TypeMethodDescription(package private) MemoryLimitsAwareHandlerBegins handling of current pdf stream decompression.private static longcalculateDefaultParameter(long documentSize, int scale, long min) (package private) MemoryLimitsAwareHandlerconsiderBytesOccupiedByDecompressedPdfStream(long numOfOccupiedBytes) Considers the number of bytes which are occupied by the decompressed pdf stream.(package private) MemoryLimitsAwareHandlerEnds handling of current pdf stream decompression.private void(package private) longlongGets the maximum allowed size which can be occupied by all decompressed pdf streams.intGets the maximum allowed size which can be occupied by a single decompressed pdf stream.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.
-
Field Details
-
SINGLE_SCALE_COEFFICIENT
private static final int SINGLE_SCALE_COEFFICIENT- See Also:
-
SUM_SCALE_COEFFICIENT
private static final int SUM_SCALE_COEFFICIENT- See Also:
-
SINGLE_DECOMPRESSED_PDF_STREAM_MIN_SIZE
private static final int SINGLE_DECOMPRESSED_PDF_STREAM_MIN_SIZE- See Also:
-
SUM_OF_DECOMPRESSED_PDF_STREAMW_MIN_SIZE
private static final long SUM_OF_DECOMPRESSED_PDF_STREAMW_MIN_SIZE- See Also:
-
maxSizeOfSingleDecompressedPdfStream
private int maxSizeOfSingleDecompressedPdfStream -
maxSizeOfDecompressedPdfStreamsSum
private long maxSizeOfDecompressedPdfStreamsSum -
allMemoryUsedForDecompression
private long allMemoryUsedForDecompression -
memoryUsedForCurrentPdfStreamDecompression
private long memoryUsedForCurrentPdfStreamDecompression -
considerCurrentPdfStream
boolean considerCurrentPdfStream
-
-
Constructor Details
-
MemoryLimitsAwareHandler
public MemoryLimitsAwareHandler()Creates aMemoryLimitsAwareHandlerwhich 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 aMemoryLimitsAwareHandlerwhich 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 with two or more filters of identical type occupies more memory than allowed.- Parameters:
maxSizeOfSingleDecompressedPdfStream- the maximum allowed size which can be occupied by a single decompressed pdf stream.- Returns:
- this
MemoryLimitsAwareHandlerinstance.
-
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 reading iText will throw an exception if during decompression pdf streams with two or more filters of identical type occupy more memory than allowed.- Parameters:
maxSizeOfDecompressedPdfStreamsSum- he maximum allowed size which can be occupied by all decompressed pdf streams.- Returns:
- this
MemoryLimitsAwareHandlerinstance.
-
considerBytesOccupiedByDecompressedPdfStream
Considers the number of bytes which are occupied by the decompressed pdf stream. If memory limits have not been faced, throws an exception.- Parameters:
numOfOccupiedBytes- the number of bytes which are occupied by the decompressed pdf stream.- Returns:
- this
MemoryLimitsAwareHandlerinstance.
-
beginDecompressedPdfStreamProcessing
MemoryLimitsAwareHandler beginDecompressedPdfStreamProcessing()Begins handling of current pdf stream decompression.- Returns:
- this
MemoryLimitsAwareHandlerinstance.
-
endDecompressedPdfStreamProcessing
MemoryLimitsAwareHandler endDecompressedPdfStreamProcessing()Ends handling of current pdf stream decompression. If memory limits have not been faced, throws an exception.- Returns:
- this
MemoryLimitsAwareHandlerinstance.
-
getAllMemoryUsedForDecompression
long getAllMemoryUsedForDecompression() -
calculateDefaultParameter
private static long calculateDefaultParameter(long documentSize, int scale, long min) -
ensureCurrentStreamIsReset
private void ensureCurrentStreamIsReset()
-