Hi,
My answer was a bit short. Next thing for you to do would be to have a
look at the file from PDFBOX-2217 with the PDFDebugger command line app,
and/or make tests with the "cm" operator.
If you still don't know what to do, just tell and I'll invest more time
to help you.
Tilman
Am 14.10.2014 um 18:16 schrieb Tilman Hausherr:
You can do this by using a transformation matrix with different x and
y scales.
See PDFBOX-2217, it has a sample PDF.
Note that correct rendering is not yet supported.
Tilman
Am 14.10.2014 um 17:39 schrieb [email protected]:
Hello,
I'm validating the use of pdfbox 1.8.6 for the creation of a pdf file
for an editor.
Therefore I need to create a shading within an ellipse, which looks
like the following:
I wrote a test program, which creates a *circular* shading:
*public**static**void*main(String[] args) {
/testLinearGradient/();
/testCircularGradient/();
}
*public**static**void*testCircularGradient() {
*try*{
*float*width = 600.0f;
*float*height = 600.0f;
PDRectangle sizePDF = *new*PDRectangle(width, height);
PDDocument document = *new*PDDocument();
PDPage page = *new*PDPage(sizePDF);
document.addPage(page);
// shading attributes
COSDictionary dict = *new*COSDictionary();
dict.setInt(COSName./SHADING_TYPE/, 3);
dict.setName(COSName./COLORSPACE/, "DeviceRGB");
COSArray coords = *new*COSArray();
coords.add(COSInteger./get/(300)); //x1
coords.add(COSInteger./get/(300)); //y1
coords.add(COSInteger./get/(300)); //x2
coords.add(COSInteger./get/(300)); //y2
*int*radius = 300;
coords.add(COSInteger./get/(radius)); //r1
coords.add(COSInteger./get/(0)); //r2
dict.setItem(COSName./COORDS/, coords);
// function with attributes
COSDictionary fdict = *new*COSDictionary();
fdict.setInt(COSName./FUNCTION_TYPE/, 2);
COSArray domain = *new*COSArray();
domain.add(COSInteger./get/(0));
domain.add(COSInteger./get/(1));
COSArray c0 = *new*COSArray();
c0.add(COSFloat./get/("1")); //color 1 red
c0.add(COSFloat./get/("0"));
c0.add(COSFloat./get/("0"));
COSArray c1 = *new*COSArray();
c1.add(COSFloat./get/("0")); // _color_ 2 _blue_
c1.add(COSFloat./get/("0"));
c1.add(COSFloat./get/("1"));
fdict.setItem(COSName./DOMAIN/, domain);
fdict.setItem(COSName./C0/, c0);
fdict.setItem(COSName./C1/, c1);
fdict.setFloat(COSName./N/, 1.0f);
dict.setItem(COSName./FUNCTION/, fdict);
PDShadingType3 shading = *new*PDShadingType3(dict);
// create and add to shading resources
page.setResources(*new*PDResources());
_Map_ shadings = *new*_HashMap_();
_shadings.put(__"sh1"__, (PDShadingResources) shading)_;
page.getResources().setShadings(_shadings_);
// invoke shading from content stream
PDPageContentStream contentStream = *new*
PDPageContentStream(document, page, *true*, *false*);
contentStream.appendRawCommands("/sh1 sh");
contentStream.close();
document.save("c:\\pdfCircularGradient.pdf");
document.close();
} *catch*(Exception e) {
System./out/.println(" error creating pdf file."+
e.toString());
}
}
Does anyone has an idea, how I can change the program, so it will
create an elliptic shading.
Is an elliptic shading supported by the pdf specification?
Thanks
Klaus Graaf
Sitz der Gesellschaft / Corporate Headquarters: Lufthansa Systems AS
GmbH, Norderstedt, Registereintragung / Registration: Amtsgericht
Norderstedt 3688NO
Geschaeftsfuehrung / Management Board: Bernd Appel