ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux上点阵打印机的Java打印质量

2019-07-09 20:50:56  阅读:268  来源: 互联网

标签:java linux printing ghostscript dot-matrix


我需要将报告从Java桌面应用程序打印到点阵打印机(Epson LX-300 II).报告包含文字和一些图形.打印机通过USB连接,我正在使用CUPS进行打印.我正在使用Printable接口进行打印(在Java中非常标准).

我的问题:

每个打印机分辨率(60×60,120×60,120×72)的文本打印质量都非常低.似乎某些打印机驱动程序中没有字体提示.信件看起来很难看.我不能使用直接文本输出端口(它看起来很棒),因为我还需要在同一页面上打印图形.

似乎问题不在Java中,导致相同的应用程序在Windows中打印出高质量的文本和图形.此外,似乎问题不在CUPS系统中,因为OpenOffice或Abiword使用相同的字体打印相同的文本,质量非常好(比在Windows中更差但仍然很好).

问题也不在于字体:我从Windows尝试了Tahoma字体,它也是这样:在java / linux中打印时质量低.

问题不在于X.Org中的BCI提示,在屏幕上显示效果很好.

当我将任何文档从OpenOffice导出到PDF并打印该PDF时,我得到了同样的效果 – 纸上的丑陋的未提示字体.如果从Office打印同一文档,一切正常.

我尝试了不同的Linux(KUbuntu 10.04,Puppy 2,Puppy 4.3.1),我在任何Linux上都有同样的效果.

也许问题出在Ghostscript中,我在Puppy上获得了9.x版本,但仍然是相同的.或者我认为CUPS光栅化器(‘rastertoepson’或’foomatic-rip’)可能存在问题.

这是输出的例子(对不起“移动” – 质量照片):

我不知道发生了什么事,请帮帮我.


附:我的最终解决方案是使用’ESCPrinter.java’开源类,根据Epson文档添加打印图像的功能.

解决方法:

你可以试试setRenderingHint;将一些调用复制在一起以便于输入.
也许它是TEXT_ANTIALIASING,但我不会排除其他人.

另一个想法是,某个地方的屏幕分辨率会缩放到打印分辨率;一个小的Java应用程序与自己动手打印将显示.

你没有做旋转,是吗? (只是看到照片).

public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
    Graphics2D g = (Graphics2D) graphics;
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_DEFAULT);
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
    g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT);
    g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
    g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
    g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_DEFAULT);
    g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED);
    g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
    g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
    return Printable.PAGE_EXISTS;
}

标签:java,linux,printing,ghostscript,dot-matrix
来源: https://codeday.me/bug/20190709/1416870.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有