Uploaded image for project: 'PDFBox'
  1. PDFBox
  2. PDFBOX-2153

Setting the correct clipping path for shading

    Details

      Description

      While doing tests with the file eci_altona-test-suite-v2_technical_H.pdf (uncompressed) of PDFBOX-1915 I noticed that by removing a "W" (modifies the clipping region) operator of a type 7 shading I got a lot more correct shadings (type 6 and lower). It looked like PDFBox had been using the clipping of the type 7 when drawing the type 6, which is just a rectangle above in that rendering. This resulted in a blank.

      By adding

      graphics.setClip(getGraphicsState().getCurrentClippingPath());
      

      in PageDrawer.shfill() just before the graphics.fill() I get several files to render correctly that I hadn't before.

      (Setting null will probably do the same, didn't test that yet).

      The following PDFs are rendered correctly with the change:
      McAfee-ShadingType7.pdf
      eci_altona-test-suite-v2_technical_H.pdf
      crestron-p9.pdf (these three found in PDFBOX-1915)
      PDFBOX-1451.pdf ("alfresco")
      PDFBOX-1940.pdf ("chart")
      PDFBOX-1861-tracemonkey.pdf p.11

      Not solved by the change:
      PDFBOX-2098-asyTUG.pdf p.6 (this one doesn't use shfill)
      PDFBOX-1861-tracemonkey.pdf p.6 (not shading)
      PDFBOX-1416.pdf (not shading)
      texample-rgb-triangle.pdf (John has an explanation about that one)

      WDYT? Is there any reason NOT to set the clipping path in PageDrawer.shFill() ?

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                tilman Tilman Hausherr
                Reporter:
                tilman Tilman Hausherr
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: