pdf - Print Colors Java -


how can configure awt-printerjob using specific printerservice print in colors?

my goal print pdf-file contains gray background colors. converted pdf pdfbox buffered image , set own printable class overwriting print method printerjob.

now if draw red rect within print method ignored. black rect printed.

when saving pdf-bufferedimage png file looks valid & good.

import java.awt.color; import java.awt.color.colorspace; import java.awt.image.bufferedimage; import java.awt.image.colorconvertop; import java.awt.print.pageformat; import java.awt.print.paper; import java.awt.print.printable;  import java.awt.print.printerjob;   import javax.imageio.imageio; import javax.print.docflavor; import javax.print.printservice; import javax.print.printservicelookup; import javax.print.attribute.hashprintrequestattributeset; import javax.print.attribute.printrequestattributeset; import javax.print.attribute.standard.chromaticity; import javax.print.attribute.standard.copies;  import org.apache.pdfbox.pdmodel.pddocument; import org.apache.pdfbox.pdmodel.pdpage;    public class printingissue {     public static void main(string[] args) throws printerexception, ioexception {         file file = new file("resources/tmp/1380731960.pdf");          printrequestattributeset pras = new hashprintrequestattributeset();         pras.add(new copies(1));         pras.add(chromaticity.color);          printservice pss[] = printservicelookup.lookupprintservices(null, pras);          printservice service = pss[0];           printerjob printjob = printerjob.getprinterjob();          final pddocument document = pddocument.load(file);         printjob.setpageable( document );         printjob.setcopies(1);          final pageformat pf1 = printjob.defaultpage();         paper paper = new paper();         double margin = 36; // half inch         paper.setimageablearea(margin, margin, paper.getwidth() - margin * 2, paper.getheight()                 - margin * 2);         pf1.setpaper(paper);         printjob.setprintservice( service );         final list<pdpage> pdfpages = document.getdocumentcatalog().getallpages();         printjob.setprintable(new printable()         {           @override           public int print( graphics g, pageformat pf, int page ) throws printerexception           {             if (page >= pdfpages.size())               return no_such_page;             try             {                 colorspace cs = colorspace.getinstance(colorspace.cs_ciexyz);                  colorconvertop op = new colorconvertop(cs, null);                 g.setcolor(color.red);                 g.drawrect(100, 100, 10, 200);                 pdfpages.get(page).converttoimage();  //                g.drawimage( op.filter( pdfpages.get(page).converttoimage() , null) //                          ,(int)pf.getimageablex() //                          ,(int)pf.getimageabley() //                          ,(int)pf.getimageablewidth() //                          ,(int)pf.getimageableheight() //                          ,null);             }             catch (ioexception e)             {              }             return page_exists;           }         }, pf1);         printjob.print( pras );     } } 


Comments

Popular posts from this blog

c++ - CryptStringToBinary API behavior -

java.util.scanner - How to read and add only numbers to array from a text file -

iphone - Three second countdown in cocos2d -