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
Post a Comment