[ https://issues.apache.org/jira/browse/PDFBOX-3024?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15029889#comment-15029889 ]
Guillaume Monteils commented on PDFBOX-3024: -------------------------------------------- Today, I tried your idea, by disabling the length check for character code 0, in 2.0.0-RC2. it works for my case, but i was wondering if the following correction is rigth {code} try { int code = font.readCode(in); if (code != 0){ fontContainer.checkGlyphWidth(code); } } catch (IOException e) { registerError("Encoding can't interpret the character code", ERROR_FONTS_ENCODING_ERROR, e); return; } {code} In fact, i am a little bit lost with all those codes, cids and gids, and so do not really know if a code 0 character shoud not have length. Do you think that preventing this length check is a good solution ? > 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 > Attachments: 004973.pdf, PDF-Tools.png, PDFBox.png, eclipse-1.jpg, > eclipse-2.jpg > > > 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 : > {code} > 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)... > {code} > 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. > {code} > (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}) }) > {code} > The problem is that at the end of one step of the analysis, the clear method > is called 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 works 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: dev-unsubscr...@pdfbox.apache.org For additional commands, e-mail: dev-h...@pdfbox.apache.org