Guillaume Monteils created PDFBOX-3024:
------------------------------------------
Summary: Preflight validation call PDType0Font.clear at the wrong
time
Key: PDFBOX-3024
URL: https://issues.apache.org/jira/browse/PDFBOX-3024
Project: PDFBox
Issue Type: Bug
Components: Preflight
Affects Versions: 1.8.10
Reporter: Guillaume Monteils
I used the algorythm here to test PDF / A compliance :
https://pdfbox.apache.org/1.8/cookbook/pdfavalidation.html
With one pdf document (which i cant give you due to confidentiality), an
NullPointerException occur here :
java.lang.NullPointerException
at
org.apache.pdfbox.pdmodel.font.PDType0Font.getFontWidth(PDType0Font.java:188)
at
org.apache.pdfbox.preflight.font.container.FontContainer.checkGlyphWith(FontContainer.java:114)
at
org.apache.pdfbox.preflight.content.ContentStreamWrapper.validText(ContentStreamWrapper.java:372)...
As i dug deeper, i found that preflight loads a font context where it puts all
pdf fonts. The PDType0Font is also created and put in this context.
(CSObject : COSDictionary{(COSName{BaseFont}:COSName{INWHIX+TimesNewRomanPSMT})
(COSName{DescendantFonts}:COSArray{[COSObject{349, 0}]})
(COSName{Encoding}:COSName{Identity-H}) (COSName{Subtype}:COSName{Type0})
(COSName{ToUnicode}:COSDictionary{(COSName{Filter}:COSName{FlateDecode})
(COSName{Length}:COSInt{260}) }) (COSName{Type}:COSName{Font}) })
The problem is that at the end of one step of the analysis, the clear method is
call on the PDType0Font (see eclipse-1.jpg), but the font is still present in
the context. On a second step, the same font is retrieved from the context,
with no data in it, and the NullPointerException occurs (see eclipse-2.jpg).
I tried the validation after removing the clear method from PDType0Font and it
work just fine.
I think the problem comes from this context, and a clear on a font should also
trigger a deletion in this map.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]