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)