打印颜色Java
如何使用特定的Printerservice配置AWT Printerjob以彩色打印 我的目标是打印一个包含灰色背景色的PDF文件。 为此,我将带有pdfbox的PDF转换为缓冲图像,并将自己的可打印类设置为printerjob,以覆盖print方法 现在,即使我在print方法中绘制一个红色的rect,它也会被忽略。打印一个黑色矩形 将我的PDF BuffereImage保存到png文件时,所有内容看起来都有效且良好打印颜色Java,java,pdf,printing,pdfbox,Java,Pdf,Printing,Pdfbox,如何使用特定的Printerservice配置AWT Printerjob以彩色打印 我的目标是打印一个包含灰色背景色的PDF文件。 为此,我将带有pdfbox的PDF转换为缓冲图像,并将自己的可打印类设置为printerjob,以覆盖print方法 现在,即使我在print方法中绘制一个红色的rect,它也会被忽略。打印一个黑色矩形 将我的PDF BuffereImage保存到png文件时,所有内容看起来都有效且良好 import java.awt.Color; import java.awt
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 );
}
}
导入java.awt.Color;
导入java.awt.color.ColorSpace;
导入java.awt.image.buffereImage;
导入java.awt.image.ColorConvertOp;
导入java.awt.print.PageFormat;
导入java.awt.print.Paper;
导入java.awt.print.Printable;
导入java.awt.print.PrinterJob;
导入javax.imageio.imageio;
导入javax.print.DocFlavor;
导入javax.print.PrintService;
导入javax.print.PrintServiceLookup;
导入javax.print.attribute.HashPrintRequestAttributeSet;
导入javax.print.attribute.PrintRequestAttributeSet;
导入javax.print.attribute.standard.色度;
导入javax.print.attribute.standard.Copies;
导入org.apache.pdfbox.pdmodel.PDDocument;
导入org.apache.pdfbox.pdmodel.PDPage;
公共类打印问题{
公共静态void main(字符串[]args)抛出PrinterException、IOException{
File File=新文件(“resources/tmp/1380731960.pdf”);
PrintRequestAttributeSet pras=新的HashPrintRequestAttributeSet();
审慎监管局增加(新副本(1));
添加(色度、颜色);
PrintService pss[]=PrintServiceLookup.lookupPrintServices(null,pras);
PrintService服务=pss[0];
PrinterJob printJob=PrinterJob.getPrinterJob();
最终PDDocument文件=PDDocument.load(文件);
打印作业。可设置页面(文档);
打印作业。设置副本(1);
final PageFormat pf1=printJob.defaultPage();
纸张=新纸张();
双边距=36;//半英寸
paper.setImageableArea(页边距,页边距,paper.getWidth()-margin*2,paper.getHeight())
-保证金*2);
pf1.设定纸(纸);
printJob.setPrintService(服务);
最终列表pdfPages=document.getDocumentCatalog().getAllPages();
setPrintable(新的Printable()
{
@凌驾
公共整型打印(图形g、页面格式pf、整型页面)引发PrinterException
{
如果(第>=pdfPages.size()页)
不返回此类页面;
尝试
{
ColorSpace cs=ColorSpace.getInstance(ColorSpace.cs_CIEXYZ);
ColorConvertOp=新的ColorConvertOp(cs,null);
g、 setColor(Color.RED);
g、 drawRect(10010010200);
get(page.convertToImage();
//g.drawImage(op.filter(pdfPages.get(page.convertToImage(),null)
//,(int)pf.getImageTablex()
//,(int)pf.getImageTabley()
//,(int)pf.getImageableWidth()
//,(int)pf.getImageableHeight()
//,空);
}
捕获(IOE异常)
{
}
返回页面_存在;
}
},pf1);
printJob.print(pras);
}
}
Mybe我的问题是与ubuntu相关的问题吗?它仍然没有解决:(