You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Maciej Woźniak (JIRA)" <ji...@apache.org> on 2016/01/23 15:01:40 UTC

[jira] [Updated] (PDFBOX-3116) COSNumber NumberFormatException for large number

     [ https://issues.apache.org/jira/browse/PDFBOX-3116?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Maciej Woźniak updated PDFBOX-3116:
-----------------------------------
    Attachment: PDFBOX_3116.patch

I've added COSDouble class. Minimum and maximum values for float type are much smaller than for double. When we use COSFloat, we get exception:

java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.NumberFormatException
    org.apache.pdfbox.debugger.pagepane.PagePane$RenderWorker.done(PagePane.java:175)
    sun.swing.AccumulativeRunnable.run(Unknown Source)
    java.security.AccessController.doPrivileged(Native Method)
    java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
Caused by: java.util.concurrent.ExecutionException: java.lang.NumberFormatException
    org.apache.pdfbox.debugger.pagepane.PagePane$RenderWorker.done(PagePane.java:164)
    sun.swing.AccumulativeRunnable.run(Unknown Source)
    java.security.AccessController.doPrivileged(Native Method)
    java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
Caused by: java.lang.NumberFormatException: null
    java.math.BigDecimal.<init>(Unknown Source)
    java.math.BigDecimal.<init>(Unknown Source)
    java.math.BigDecimal.<init>(Unknown Source)
    org.apache.pdfbox.cos.COSFloat.<init>(COSFloat.java:43)
    org.apache.pdfbox.pdmodel.common.PDRectangle.<init>(PDRectangle.java:131)
    org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject.getBBox(PDFormXObject.java:187)
    org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:442)
    org.apache.pdfbox.contentstream.PDFStreamEngine.showForm(PDFStreamEngine.java:178)
    org.apache.pdfbox.contentstream.operator.graphics.DrawObject.process(DrawObject.java:70)
    org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:814)
    org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:471)
    org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:445)
    org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149)
    org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:187)
    org.apache.pdfbox.rendering.PDFRenderer.renderPage(PDFRenderer.java:208)
    org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:139)
    org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:68)
    org.apache.pdfbox.debugger.pagepane.PagePane$RenderWorker.doInBackground(PagePane.java:155)
    org.apache.pdfbox.debugger.pagepane.PagePane$RenderWorker.doInBackground(PagePane.java:138)
    java.lang.Thread.run(Unknown Source)

But when we use COSDouble:

java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.ClassCastException: sun.awt.geom.Edge cannot be cast to sun.awt.geom.Curve
    org.apache.pdfbox.debugger.pagepane.PagePane$RenderWorker.done(PagePane.java:175)
    sun.swing.AccumulativeRunnable.run(Unknown Source)
    java.security.AccessController.doPrivileged(Native Method)
    java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
Caused by: java.util.concurrent.ExecutionException: java.lang.ClassCastException: sun.awt.geom.Edge cannot be cast to sun.awt.geom.Curve
    org.apache.pdfbox.debugger.pagepane.PagePane$RenderWorker.done(PagePane.java:164)
    sun.swing.AccumulativeRunnable.run(Unknown Source)
    java.security.AccessController.doPrivileged(Native Method)
    java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
Caused by: java.lang.ClassCastException: sun.awt.geom.Edge cannot be cast to sun.awt.geom.Curve
    sun.awt.geom.AreaOp.addEdges(Unknown Source)
    sun.awt.geom.AreaOp.calculate(Unknown Source)
    org.apache.pdfbox.pdmodel.graphics.state.PDGraphicsState.intersectClippingPath(PDGraphicsState.java:574)
    org.apache.pdfbox.pdmodel.graphics.state.PDGraphicsState.intersectClippingPath(PDGraphicsState.java:553)
    org.apache.pdfbox.contentstream.PDFStreamEngine.clipToRect(PDFStreamEngine.java:529)
    org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:443)
    org.apache.pdfbox.contentstream.PDFStreamEngine.showForm(PDFStreamEngine.java:178)
    org.apache.pdfbox.contentstream.operator.graphics.DrawObject.process(DrawObject.java:70)
    org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:814)
    org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:471)
    org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:445)
    org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149)
    org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:187)
    org.apache.pdfbox.rendering.PDFRenderer.renderPage(PDFRenderer.java:208)
    org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:139)
    org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:68)
    org.apache.pdfbox.debugger.pagepane.PagePane$RenderWorker.doInBackground(PagePane.java:155)
    org.apache.pdfbox.debugger.pagepane.PagePane$RenderWorker.doInBackground(PagePane.java:138)
    java.lang.Thread.run(Unknown Source)

Also the problem is (partially) resolved, I think. 

> COSNumber NumberFormatException for large number
> ------------------------------------------------
>
>                 Key: PDFBOX-3116
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-3116
>             Project: PDFBox
>          Issue Type: Bug
>          Components: Parsing
>    Affects Versions: 2.0.0
>            Reporter: Andrei T
>            Priority: Minor
>         Attachments: PDFBOX_3116.patch, source.pdf
>
>
> When trying to load a pdf containing the following:
> <</Type/Pattern/TilingType 2/Resources 52 0 R/XStep 32767/BBox[-89884656743115785407263711865852178399035283762922498299458738401578630390014269380294779316383439085770229476757191232117160663444732091384233773351768758493024955288275641038122745045194664472037934254227566971152291618451611474082904279666061674137398913102072361584369088590459649940625202013092062429184 -89884656743115785407263711865852178399035283762922498299458738401578630390014269380294779316383439085770229476757191232117160663444732091384233773351768758493024955288275641038122745045194664472037934254227566971152291618451611474082904279666061674137398913102072361584369088590459649940625202013092062429184 89884656743115785407263711865852178399035283762922498299458738401578630390014269380294779316383439085770229476757191232117160663444732091384233773351768758493024955288275641038122745045194664472037934254227566971152291618451611474082904279666061674137398913102072361584369088590459649940625202013092062429184 89884656743115785407263711865852178399035283762922498299458738401578630390014269380294779316383439085770229476757191232117160663444732091384233773351768758493024955288275641038122745045194664472037934254227566971152291618451611474082904279666061674137398913102072361584369088590459649940625202013092062429184]/Matrix[0.61 0 0 -0.601 0 0.319]/YStep 32767/Length 28563/Filter/FlateDecode/PatternType 1/PaintType 1>>stream
> I get a NumberFormatException in 
> 	at org.apache.pdfbox.cos.COSNumber.get(COSNumber.java:109)
> 	at org.apache.pdfbox.pdfparser.BaseParser.parseDirObject(BaseParser.java:929)
> 	at org.apache.pdfbox.pdfparser.BaseParser.parseCOSArray(BaseParser.java:648)
> 	at org.apache.pdfbox.pdfparser.BaseParser.parseDirObject(BaseParser.java:856)
> 	at org.apache.pdfbox.pdfparser.BaseParser.parseCOSDictionaryValue(BaseParser.java:148)
> 	at org.apache.pdfbox.pdfparser.BaseParser.parseCOSDictionaryNameValuePair(BaseParser.java:272)
> 	at org.apache.pdfbox.pdfparser.BaseParser.parseCOSDictionary(BaseParser.java:205)
> 	at org.apache.pdfbox.pdfparser.BaseParser.parseDirObject(BaseParser.java:844)
> 	at org.apache.pdfbox.pdfparser.COSParser.parseFileObject(COSParser.java:751)
> 	at org.apache.pdfbox.pdfparser.COSParser.parseObjectDynamically(COSParser.java:720)
> 	at org.apache.pdfbox.pdfparser.COSParser.parseObjectDynamically(COSParser.java:651)
> 	at org.apache.pdfbox.pdfparser.COSParser.parseDictObjects(COSParser.java:612)
> 	at org.apache.pdfbox.pdfparser.PDFParser.initialParse(PDFParser.java:203)
> 	at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:230)
> 	at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:972)
> 	at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:876)
> Adobe Reader and Chrome consider it a valid pdf and it load it.
> 	
> I cannot share the PDF because of copyright issues, but I reproduced it with :"pdfbox\src\test\resources\input\rendering\source.pdf" from pdfbox-2.0.0-RC1-src.zip.
> Changing the value 0 from "/BBox [0 0 2480 3508]" to -89884656743115785407263711865852178399035283762922498299458738401578630390014269380294779316383439085770229476757191232117160663444732091384233773351768758493024955288275641038122745045194664472037934254227566971152291618451611474082904279666061674137398913102072361584369088590459649940625202013092062429184 
> throws the exception. 	
> Using "new COSFloat(number)" works in this case.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: dev-help@pdfbox.apache.org