我打印了两个文本字符,可是这两行的打印效果(字迹清晰度,墨迹饱和度)明显不同!请问怎么处理?
public class PrintTest implements Printable{public PrintTest() {
}public int print(Graphics gra, PageFormat pf, int pageIndex) throws PrinterException {
Graphics2D g2 = (Graphics2D) gra;
switch(pageIndex){
case 0:
g2.setColor(Color.black);
Font font = new Font("新宋体", Font.PLAIN, 11);
g2.setFont(font);
FontRenderContext frc = g2.getFontRenderContext();

// -1- 直接构造TextLayout打印
TextLayout layout = new TextLayout("北京百联美达美数码科技有限公司  版权所有", font, frc);
layout.draw(g2, 100f, 115f);

// -2- 用LineBreakMeasurer进行打印
AttributedString text = new AttributedString("北京百联美达美数码科技有限公司;;版权所有");
text.addAttribute(TextAttribute.FONT, font);
LineBreakMeasurer lineBreaker = new LineBreakMeasurer(text.getIterator(), frc);
float d = 0f;
double width = 900;
Point2D.Double pen = new Point2D.Double (100, 150);
while ( (layout = lineBreaker.nextLayout( (float) width)) != null)
{
pen.y += layout.getAscent();
//draw
layout.draw(g2, (float) 100+d, (float) 140);
pen.y += layout.getDescent() + layout.getLeading();
d += font.getSize();
}
return PAGE_EXISTS;
default:
return NO_SUCH_PAGE;
}
}/**
 * @param args
 */
public static void main(String[] args) {
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(new PrintTest());
try {
job.print();
} catch (PrinterException e) {
e.printStackTrace();
}
}}

解决方案 »

  1.   

    我通过设置ANTIALIASING效果不明显。
    g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
      

  2.   

    To Mark_Chen:我的任务是在修改原有代码,解决这个问题。不过谢谢关注。。
      

  3.   

    没搞过这样的打印
    我一般用crystal report 生成报表打印
      

  4.   

    To lcllcl987:你们幸福啊!我们用纯java api打印
      

  5.   

    我感觉问题在TextLayout的生成上,可是想不出解决办法!!
      

  6.   

    谢谢啊jiaojian843,祝你好人一生好运