My recommendation is to use a program, such as Adobe Illustrator, that can create PDFs with multi-colored gradients and then look at the output. That way you can control the values you want and see the results.
Yes, it's all about the functions! Leonard -----Original Message----- From: Jeremy Wood [mailto:[email protected]] Sent: Friday, May 29, 2009 10:46 AM To: [email protected] Subject: Re: [iText-questions] Gradients with Multiple Colors > Of course - you can have as many colors as you want (provided they > are all in the same colorspace). Just making sure. :) > You will definitely need to read the PDF Reference/ISO 32000-1 in > order to understand how to encode such things, since it is more > complex than a simple gradiants. Thanks for the reference. I started by exploring section 8.7.4.5.3: "Type 2 (Axial) Shadings". However I couldn't find a way to support more than 2 colors. When two colors are used, you use "C0" and "C1" to define the color at t=0 and t=1, but I couldn't figure out how to to introduce n-many colors with a type 2 function. (I tried using floating points, and also increasing my domain by a factor of 10 so my dictionary included "C0", "C5", and "C10" (for example). I gave up on this approach, and then turned to section 7.10.4: "Type 3 (Stitching) Functions". (I'm trying to use a type 2 shading with a type 3 function.) My current new PdfShading method is included below. When I fill a rectangle with this shading... the resulting PDF appears blank. (Based on previous results, I assume this basically means there is an error parsing it?) Soooo... at this point I'm feeling pretty stuck. I don't suppose anyone has any pointers on what I'm doing wrong? I tried to be concise in this email, but I could discuss in more detail exactly what I'm doing if anything is too vague. Regards, - Jeremy The following method I added to PdfShading.java to complement the "simpleAxial" methods: public static PdfShading complexAxial(PdfWriter writer, float x0, float y0, float x1, float y1, Color[] colors,float[] times, boolean extendStart, boolean extendEnd) { if(colors.length!=times.length) { System.err.println("colors.length = "+colors.length); System.err.println("times.length = "+times.length); throw new IllegalArgumentException("colors.length must equal times.length"); } for(int a = 1; a<colors.length; a++) { checkCompatibleColors(colors[0], colors[a]); } float[][] colorArrays = new float[colors.length][]; for(int a = 0; a<colors.length; a++) { colorArrays[a] = getColorArray(colors[a]); } normalize(times); PdfFunction[] functions = new PdfFunction[times.length-1]; float[] encode = new float[functions.length*2]; for(int a = 0; a<functions.length; a++) { functions[a] = PdfFunction.type2(writer, new float[] {0,1}, null, colorArrays[a], colorArrays[a+1], 1); encode[2*a+0] = 0; encode[2*a+1] = 1; } float[] bounds = new float[functions.length-1]; for(int a = 0; a<bounds.length; a++) { bounds[a] = times[a+1]; } PdfFunction function = PdfFunction.type3(writer, new float[] {0,1}, null, functions, bounds, encode); return type2(writer, colors[0], new float[]{x0, y0, x1, y1}, null, function, new boolean[]{extendStart, extendEnd}); } ------------------------------------------------------------------------------ Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT is a gathering of tech-side developers & brand creativity professionals. Meet the minds behind Google Creative Lab, Visual Complexity, Processing, & iPhoneDevCamp as they present alongside digital heavyweights like Barbarian Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com _______________________________________________ iText-questions mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/itext-questions Buy the iText book: http://www.1t3xt.com/docs/book.php Check the site with examples before you ask questions: http://www.1t3xt.info/examples/ You can also search the keywords list: http://1t3xt.info/tutorials/keywords/ ------------------------------------------------------------------------------ Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT is a gathering of tech-side developers & brand creativity professionals. Meet the minds behind Google Creative Lab, Visual Complexity, Processing, & iPhoneDevCamp as they present alongside digital heavyweights like Barbarian Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com _______________________________________________ iText-questions mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/itext-questions Buy the iText book: http://www.1t3xt.com/docs/book.php Check the site with examples before you ask questions: http://www.1t3xt.info/examples/ You can also search the keywords list: http://1t3xt.info/tutorials/keywords/
