You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Michel Pawlak (JIRA)" <ji...@apache.org> on 2014/06/06 17:22:01 UTC
[jira] [Created] (PDFBOX-2121) NullPointerException when calling
org.apache.pdfbox.pdmodel.edit.PDPageContentStream.setFont()
Michel Pawlak created PDFBOX-2121:
-------------------------------------
Summary: 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.2#6252)