pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tilman Hausherr <THaush...@t-online.de>
Subject Re: Gradient paint
Date Tue, 15 Jul 2014 19:07:45 GMT
It should be possible... You need to create a dictionary the hard way, 
with everything, and don't forget the function. It starts like this:

COSDictionary dict = new COSDictionary();

then you set the elements. It should not be too difficult, if you KNOW 
what an axial shading is. Here's a segment in postscript:

<<
    /ShadingType 2
    /ColorSpace [ /DeviceRGB ]
    /Coords [100 400 400 600 ]
    /Function <<
                /FunctionType 2
                /Domain [ 0 1 ]
                /C0 [ 1 0 0 ]
                /C1 [ .5 1 .5 ]
                /N 1
              >>
 >>

This is the same in PDF:

14 0 obj
<< /ColorSpace /DeviceRGB
      /Coords [ 100 400 400 600 ]
      /Function 15 0 R
      /ShadingType 2 >>
endobj
15 0 obj
<<
/C0 [ 1 0 0 ]
/C1 [ 0.5 1 0.5 ]
/Domain [ 0 1 ]
/FunctionType 2
/N 1 >>
endobj


So basically you have to set all these elements, note that coords is an 
array, and function is itself a dictionary again. Try it, and if it 
doesn't work, post your code here. Good luck!

Tilman





Am 15.07.2014 20:44, schrieb Adriaan Joubert:
> Hi,
>
> I need to draw an axial gradient with PdfBox, but have not found an example
> of how to do this. I'm using pdfbox 1.8.6.
>
> I need to add a PDFunctionType2, but this always takes a dictionary - which
> suggests that this is only implemented for reading documents?
>
> I somehow need to create a PDShadingType2 so that I can initialise an
> AxialShadingPaint.
>
> Does anybody have a small example of how to draw a gradient, or give me any
> idea of how to proceed?
>
> Thanks,
>
> Adriaan
>


Mime
View raw message