Hi,

just for convenience I'd prefer to use the setters (if available) instead of creating a dictionaries from scratch, e.g.

PDShadingType2 shading = new PDShadingType2(new COSDictionary());
shading.setShadingType(PDShading.SHADING_TYPE2);
shading.setColorSpace(PDDeviceRGB.INSTANCE);
.....


BR
Andreas Lehmkühler

Am 16.07.2014 06:42, schrieb Tilman Hausherr:
For the 1.8 version the code is slightly different:


             PDDocument document = new PDDocument();
             PDPage page = new PDPage();
             document.addPage(page);

             // shading attributes
             COSDictionary dict = new COSDictionary();
             dict.setInt(COSName.SHADING_TYPE, 2);
             dict.setName(COSName.COLORSPACE, "DeviceRGB");
             COSArray coords = new COSArray();
             coords.add(COSInteger.get(100));
             coords.add(COSInteger.get(400));
             coords.add(COSInteger.get(400));
             coords.add(COSInteger.get(600));
             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"));
             c0.add(COSFloat.get("0"));
             c0.add(COSFloat.get("0"));
             COSArray c1 = new COSArray();
             c1.add(COSFloat.get("0.5"));
             c1.add(COSFloat.get("1"));
             c1.add(COSFloat.get("0.5"));
             fdict.setItem(COSName.DOMAIN, domain);
             fdict.setItem(COSName.C0, c0);
             fdict.setItem(COSName.C1, c1);
             fdict.setInt(COSName.N, 1);
             dict.setItem(COSName.FUNCTION, fdict);

             PDShadingType2 shading = new PDShadingType2(dict);

             // create and add to shading resources
             page.setResources(new PDResources());
             Map<String, PDShadingResources> shadings = new HashMap<String,
PDShadingResources>();
             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("shtest.pdf");
             document.close();

Reply via email to