You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "John Hewson (JIRA)" <ji...@apache.org> on 2014/11/06 06:48:33 UTC
[jira] [Closed] (PDFBOX-2121) NullPointerException when calling
org.apache.pdfbox.pdmodel.edit.PDPageContentStream.setFont()
[ https://issues.apache.org/jira/browse/PDFBOX-2121?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
John Hewson closed PDFBOX-2121.
-------------------------------
Resolution: Cannot Reproduce
> NullPointerException when calling org.apache.pdfbox.pdmodel.edit.PDPageContentStream.setFont()
> ----------------------------------------------------------------------------------------------
>
> Key: PDFBOX-2121
> URL: https://issues.apache.org/jira/browse/PDFBOX-2121
> Project: PDFBox
> Issue Type: Bug
> Components: Writing
> Affects Versions: 1.8.5
> Reporter: Michel Pawlak
> Priority: Critical
>
> *Context / how to reproduce *
> When creating a table and writing it to a pdf file, i get a NPE when setting the font size above a given size. As a result my application crashes. It seems to occur when the text i try to write is too large for the page.
> *Stack trace*
> java.lang.NullPointerException: null
> at org.apache.pdfbox.pdmodel.edit.PDPageContentStream.setFont(PDPageContentStream.java:321) ~[pdfbox-1.8.5.jar:na]
> at qa.reportgenerator.report.pdf.table.PDFTable.drawRow(PDFTable.java:67) ~[classes/:na]
> at qa.reportgenerator.report.pdf.SummaryGenerator.drawTableLine(SummaryGenerator.java:365) ~[classes/:na]
> at qa.reportgenerator.report.pdf.SummaryGenerator.drawTable(SummaryGenerator.java:268) ~[classes/:na]
> at qa.reportgenerator.report.pdf.SummaryGenerator.draw(SummaryGenerator.java:62) ~[classes/:na]
> at qa.reportgenerator.report.pdf.PDFReportGenerator.generate(PDFReportGenerator.java:28) ~[classes/:na]
> at qa.reportgenerator.report.pdf.PDFReportGenerator.generate(PDFReportGenerator.java:18) ~[classes/:na]
> at qa.reportgenerator.Runner.generatePDFReport(Runner.java:257) [classes/:na]
> at qa.reportgenerator.Runner.execute(Runner.java:76) [classes/:na]
> *Additional info*
> - PDFTable, is a class allowing me to easily create tables (adding cells, rows, setting text orientation, font /color / background of each cell, horizonal/vertical text alignment, etc.) The content of the line "qa.reportgenerator.report.pdf.table.PDFTable.drawRow(PDFTable.java:67)" is :
> {code}
> this.contentStream.setFont(cell.getFont(), cell.getFontSize());
> {code}
> - On this line, contentStream is a PDPageContentStream instance, and when the MPE occurs, cell.getFont returns PDType1Font.HELVETICA and cell.getFontSize returns 6.
> - I get no NPE when font size is < 6 or when the width of the text I try to write is smaller.
> - I do not close manually the PDPageContentStream.
> - Page size is A4.
> *Debuger data*
> When debugging, it appears that the problem occurs when calling the setFont method of the last cell of a row.
> Indeed, when calling setFont on the cell left to the last cell of the table, the content of the "resources" variable is :
> {code}
> resources PDResources (id=1692)
> colorspaces null
> fontMappings HashMap<K,V> (id=2032)
> cache null
> elementCount 2
> elementData HashMap$Entry<K,V>[16] (id=1714)
> hashMask 0
> keySet null
> loadFactor 0.75
> modCount 2
> threshold 12
> useAltHashing false
> valuesCollection null
> fonts HashMap<K,V> (id=1964)
> graphicsStates null
> images null
> patterns null
> resources COSDictionary (id=2802)
> direct false
> items LinkedHashMap<K,V> (id=1036)
> accessOrder false
> cache null
> elementCount 2
> elementData LinkedHashMap$LinkedHashMapEntry<K,V>[16] (id=1274)
> hashMask 0
> head LinkedHashMap$LinkedHashMapEntry<K,V> (id=1166)
> keySet LinkedHashMap$1 (id=1811)
> loadFactor 0.75
> modCount 2
> tail LinkedHashMap$LinkedHashMapEntry<K,V> (id=2803)
> threshold 12
> useAltHashing false
> valuesCollection null
> needToBeUpdate false
> shadings null
> xobjectMappings HashMap<K,V> (id=1253)
> cache null
> elementCount 1
> elementData HashMap$Entry<K,V>[16] (id=1796)
> hashMask 0
> keySet null
> loadFactor 0.75
> modCount 1
> threshold 12
> useAltHashing false
> valuesCollection null
> xobjects HashMap<K,V> (id=1947)
> cache null
> elementCount 1
> elementData HashMap$Entry<K,V>[16] (id=1580)
> hashMask 0
> keySet HashMap$1 (id=1463)
> this$0 HashMap<K,V> (id=1947)
> loadFactor 0.75
> modCount 1
> threshold 12
> useAltHashing false
> valuesCollection null
> {code}
> then the NPE occurs on the next call to setFont(). The resources object is not null, but it has then changed :
> {code}
> resources PDResources (id=1168)
> colorspaces null
> fontMappings HashMap<K,V> (id=1665)
> cache null
> elementCount 0
> elementData HashMap$Entry<K,V>[16] (id=1505)
> hashMask 0
> keySet null
> loadFactor 0.75
> modCount 0
> threshold 12
> useAltHashing false
> valuesCollection null
> fonts null
> graphicsStates null
> images null
> patterns null
> resources COSDictionary (id=2802)
> direct false
> items LinkedHashMap<K,V> (id=1036)
> accessOrder false
> cache null
> elementCount 2
> elementData LinkedHashMap$LinkedHashMapEntry<K,V>[16] (id=1274)
> hashMask 0
> head LinkedHashMap$LinkedHashMapEntry<K,V> (id=1166)
> keySet LinkedHashMap$1 (id=1811)
> loadFactor 0.75
> modCount 2
> tail LinkedHashMap$LinkedHashMapEntry<K,V> (id=2803)
> threshold 12
> useAltHashing false
> valuesCollection null
> needToBeUpdate false
> shadings null
> xobjectMappings null
> xobjects null
> {code}
> I hope that you have enough information.
> Thank you for your help !
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)