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

2024-01-14

我需要将报告从 Java 桌面应用程序打印到点阵打印机 (Epson LX-300 II)。报告由文本和一些图形组成。打印机通过 USB 连接,我使用 CUPS 进行打印。我正在使用 Printable 接口(Java 中相当标准)进行打印。

我的问题:

每种打印机分辨率(60x60、120x60、120x72)的文本打印质量都非常低。某些打印机驱动程序中似乎根本没有字体提示。字母看起来非常难看。我无法使用直接文本输出来移植(它看起来很棒),因为我还需要在同一页面上打印图形。

看来问题不在 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,但我不会排除其他的。

另一个想法是,在某个地方屏幕分辨率会缩放到打印分辨率;一个带有 DIY 打印功能的小型 Java 应用程序将显示这一点。

你没有做rotate, 你是否? (只是看到照片)。

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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 点阵打印机上的 Java 打印质量 的相关文章

  • Criteria eager fetch-joined 集合以避免 n+1 选择

    假设 Item 和 Bid 是实体 一个 Item 有多个 Bid 它们被映射到休眠在典型的父子关系中
  • 如何在perl中使用O_ASYNC和fcntl?

    我想使用 O ASYNC 选项 当管道可以读取时 SIGIO 的处理程序将运行 但以下代码不起作用 任何人都可以帮助我吗 bin env perl use Fcntl SIG IO sub print catch SIGIO n my fl
  • 平衡括号问题的优化解

    给定一个仅包含字符的字符串 and 判断输入字符串是否有效 输入字符串在以下情况下有效 左括号必须由相同类型的括号封闭 左括号必须按正确的顺序关闭 请注意 空字符串也被视为有效 示例1 Input Output true Example 2
  • 使用用户名进行 Java LDAP 身份验证

    好吧 这让我发疯 我正在尝试使用 Java 创建 LDAP 身份验证 如果我在 SECURITY PRINCIPAL 中使用我的名字和姓氏 一切都很好 这是我的代码 try Hashtable
  • Eclipse 内容协助无法在枚举常量参数列表中工作

    使用 eclipse 当我输入以下内容时 public enum Foo A Integer private final Integer integer private Foo Integer integer this integer in
  • IntelliJ Idea,如何从控制台删除java文件目录?

    当您运行文件时 它会打开控制台窗口 并且一直在顶部显示该文件所在的目录 这非常令人恼火 因为现在 为了将其他行与目录混合分开 我必须在启动任何 System out println 命令之前使用 n C Program FILEs 我想摆脱
  • Android Studio 找不到 com.android.support:support-v4:19.1.0

    我已将一个项目导入Android Studio但我收到错误 找不到 com android support support v4 19 1 0 我在哪里可以找到这个文件 我已经使用导入了项目Gradle 我有Android Studio v
  • Android Google 地图:隐藏整个地图的多边形或形状

    我试图隐藏除一个区域之外的整个地图 因为我使用的多边形在我想要显示的区域中有一个洞 问题在于 根据缩放的不同 空白区域会被多边形的颜色覆盖 或者多边形会失去其颜色 这是代码 polygon hide all world map float
  • 无法从 ViewPager 中的 Fragment 编辑 ActionBar 标题

    我有一个Activity它通过一个托管多个片段ViewPager 在活动的onCreate方法我使用以下代码来更改ActionBar title Toolbar toolbar findViewById R id toolbar setSu
  • 不想保留一对一的实体

    假设我有两节课Employee and Department In Employee我已经写了 OneToOne fetch FetchType EAGER cascade CascadeType ALL JoinColumn name d
  • 运行 shell 命令并将输出发送到文件?

    我需要能够通过 php 脚本修改我的 openvpn 身份验证文件 我已将我的 http 用户设置为免通 sudoer 因为这台机器仅在我的家庭网络中可用 我目前有以下命令 echo shell exec sudo echo usernam
  • 使用泛型进行选择排序

    我对整数进行了选择排序并且它正在工作 当我尝试修改程序以使用泛型时 编译器会抱怨 我不知道如何修复它 如果有人能提出一些建议和建设性意见 我将不胜感激 这是代码 public class SelelctionSort public stat
  • C3P0:生产中未返回的连接超时?

    参数unreturnedConnectionTimeout给定时间段后未返回的连接超时 我正在尝试决定是否应该在我的制作中使用它persistence xml 使用它的一大优点是连接池将能够从泄漏的连接中恢复 一个很大的缺点是泄漏的连接将很
  • Android 以编程方式停止 toast 通知?

    有没有办法以编程方式停止 Toast 消息 假设我有一个按钮 单击它可以滚动 toast 消息 并且在 onclick 事件中我想停止队列中的所有消息并只显示新消息 我该怎么做 我的代码的简化版本如下 代码 public class Hel
  • SecurityContextHolder.getContext().getAuthentication() 返回 null

    我想使用以下代码手动绕过 spring Security 的用户 User localeUser new User UsernamePasswordAuthenticationToken auth new UsernamePasswordA
  • 使用 OpenNLP 获取句子的解析树。陷入困境。

    OpenNLP 是一个关于自然语言处理的 Apache 项目 NLP 程序的目标之一是解析一个句子 并给出其语法结构的树 例如 天空是蓝色的 这句话 可能会被解析为 S NP VP The sky is blue where S是句子 NP
  • 如何设置 commons-logging 来使用 logback?

    我们使用 slf4j logback 并且碰巧有一些使用 commons logging 的第三方库 如何设置它以使用 logback 答案是不要使用 commons logging jar 因为 SLF4J 的设计目的与 commons
  • 需要同步仅增量计数器吗?

    我使用整数作为计数器 该整数只会增加 并且肯定有多个线程会同时增加它 当没有其他线程尝试访问其值时 在程序执行结束时读取该计数器的值 我假设我不必为这种仅增量计数器使用锁或任何类型的同步 这是正确的吗 如果这有什么区别的话 我用 Java
  • Java分数计算器

    我对 Java 编程还很陌生 我的 AP 计算机编程课程有作业要完成 所以请耐心等待 我必须弄清楚如何将两个分数相乘 我想知道是否有任何方法可以在方法内部声明变量并在该方法外部使用它 我在介绍方法中的 while 循环 谢谢您 希望这不会令
  • 如何获取 res.drawable 文件夹的路径来复制文件?

    我正在编写我的应用程序AndroidStudio 我的里面有gif文件drawable gifs文件夹 我希望将该文件复制到MediaStore Images Media单击按钮后的文件夹 目前 即使使用发布的一些答案 我也无法获取我的 g

随机推荐

  • 如何让用户输入两次以上?

    我是 C 新手 我试图了解如何利用 C 通用输入 cin 我正在尝试编写一个程序来检查句子的字符数量和输入句子中的元音数量 我已经成功完成了这一任务 但是当我尝试让代码再次运行一次时 出现了问题 当它再运行一次时 就不再允许第二次输入 我的
  • Python 中的静态方法和实例方法[重复]

    这个问题在这里已经有答案了 我可以将 Python 方法同时定义为静态方法和实例方法吗 就像是 class C object staticmethod def a self arg1 if self blah blah 这样我就可以同时调用
  • 记录 WCF 接口的最佳方式? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 因此 我正在使用 WCF 并且想要记录我的接口和服务 以便提供给另一家公司的内部应用程序 记录这些接口的最佳方法是什么 我更喜欢将文档与代码内联
  • Android 中的圆形按钮

    我想在 Android 程序中创建圆形按钮 我看过如何创建圆角的EditText https stackoverflow com questions 3646415 how to create edittext with rounded c
  • 在 Matplotlib 的条形图上显示负值的问题

    我正在尝试使用 Matplotlib 创建一个包含正值和负值的条形图 但在让负值显示在 Y 轴上时遇到困难 运行代码时 它将正确显示所有正值 以红色标记 但根本不显示负值 相反 我得到了标记为 y1 的字符串的正值的重复项 请参阅下面的图片
  • 如果每行包含不同数量的字段(数量很大),如何正确读取csv文件?

    我有一个来自亚马逊的文本文件 包含以下信息 user item time rating review text the header is added by me for explanation not in the text file d
  • 如何创建频道然后找到ID

    我正在创建一个频道message guild channels create 我该如何找到该频道的消息 ID 并在新创建的频道中发送消息 message guild channels create bug priority reportPr
  • JS中获取未知单键的对象的值

    如何获取具有未知单键的对象的值 例子 var obj dbm 45 我想在不知道其密钥的情况下获得 45 值 我知道我可以循环对象键 始终是一个 for var key in objects var value objects key 但我
  • 实现登录(身份验证)屏幕的最佳实践是什么?

    我想在我的应用程序中实现登录屏幕并寻找最佳实践 假设这段代码 public class LoginActivity extends Activity public void onCreate Bundle icicle super onCr
  • Restful Api Express postgres 数据库

    我正在使用node和express开发一个restful api 我的数据库是postgresql 我需要使用postgres包pg promise 我知道我需要将我的应用程序与 app js 文件中的数据库连接 但我的问题是 我应该如何在
  • iPhone 4" 屏幕上的 xcassets 无法提取正确的图像

    我正在尝试将 Images xcassets 实现到我正在开发的项目中 据我了解 我可以将不同设备的所有不同大小的图像放在那里 然后调用 UIImage imageNamed name of image set 它将返回我正在处理的设备的正
  • Access 和 SQL Server 计算日期的方式不同

    我们有一些通用工具 除其他外 可以保存和显示日期 它将把它保存为一个数字 例如 41247 如果我将其转换回 Access 中的日期 我会得到 2012 12 04 这是正确的 使用 Format 41247 常规日期 或 Format F
  • 将 XML jQuery 对象转换为字符串

    我有一个上传的 xml 文件 我正在使用 jQuery 通过var ts parseXML filecontents 在 XML 文档中查找对象时 我尝试使用以下方法转换回原始源 div append ts find Object clon
  • “新运营商”和“新运营商”之间的区别?

    新运营商 和 新运营商 有什么区别 我通常会尝试用不同的措辞来更好地区分两者 但无论如何 这是一个好问题 Operator new 是一个分配原始内存的函数 至少在概念上 它与malloc 尽管这相当不寻常 除非您正在编写类似自己的容器的东
  • 如何修复无法转换类型错误?

    我想创建一个有关电影的详细信息页面 但我收到此错误并且有点卡住了 我收到无法转换类型错误 我确实理解该错误 但我不知道如何修复它 这是 PAP 实体的索引 也是数据库实例 public class MoviesController Cont
  • NSToolbarItem 的自动样式/着色

    有没有办法告诉 OS X 自动设置样式 着色NSToolbarItem 我通过 IB Xcode 添加了一个 图像工具栏项 并将图标设置为黑色 PDF如文档中所述 https developer apple com library mac
  • 如何在组件类中使用调度(react-redux)

    My code class LoginPage extends Component render return div div
  • 什么是 text/ping?这是一个新标准吗?它依赖于浏览器吗?

    我正在对 Google 上的某些问题进行故障排除 并看到从浏览器到 Google 服务器的此请求 它是非阻塞的 这是新事物吗 它的文档在哪里 Chrome 是否不等待响应 Request URL https www google com u
  • 使用 C# 动态构建 XML

    我必须根据用户输入动态创建一个 XML 文件 这是我的想法 但我遇到了两个问题 如果存在相同元素的集合 MaxOccurs 10 例如 如果用户输入了 4 个帐户 那么我的代码应该如何 如果有选择的话 根据所选元素 子元素应该发生变化 有人
  • Linux 点阵打印机上的 Java 打印质量

    我需要将报告从 Java 桌面应用程序打印到点阵打印机 Epson LX 300 II 报告由文本和一些图形组成 打印机通过 USB 连接 我使用 CUPS 进行打印 我正在使用 Printable 接口 Java 中相当标准 进行打印 我