Ghostscript:如何包含它曾经包含的 Apple ImageWriter 驱动程序?

Posted

技术标签:

【中文标题】Ghostscript:如何包含它曾经包含的 Apple ImageWriter 驱动程序?【英文标题】:Ghostscript: How to include the Apple ImageWriter drivers it used to include? 【发布时间】:2019-10-11 20:58:56 【问题描述】:

过去,Ghostscript 用于整合以下 Apple Imagewriter 设备:iwhiiwloiwlq。我一直使用的版本是 gs 8.7,它不兼容 64 位。 macOS Catalina 无法使用它或任何其他 32 位代码,因此无法打印到这些设备。

包括最新的Ghostscript 9.27 在内的最新版本省略了这些设备。我不知道它们何时被省略或为什么被省略,但似乎是不久前的事了。更糟糕的是,我不知道它们是如何融入 Ghostscript 的。除了我已经完成的从源代码构建 gs 之外,我不知道从哪里开始。新的 Ghostscript 9.27 本身在 macOS Catalina 中运行良好。它包括许多“内置”设备,但没有我需要的 ImageWriter 设备。

驱动程序和 Ghostscript 最初是从 Linux 基金会的 Open Printing 网站:https://openprinting.org/printer/Apple/Apple-ImageWriter_II 获得的,但它们以最新 macOS 版本无法处理的包形式捆绑和分发。该网页还表明驱动程序是“类型:内置 Ghostscript”,在最近的版本中不再存在。

这里是gs -h 使用已安装的 32 位版本:

GPL Ghostscript 8.71 (2010-02-10)
Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.
Usage: gs [switches] [file1.ps file2.ps ...]
Most frequently used switches: (you can use # in place of =)
 -dNOPAUSE           no pause after page   | -q       `quiet', fewer messages
 -g<width>x<height>  page size in pixels   | -r<res>  pixels/inch resolution
 -sDEVICE=<devname>  select device         | -dBATCH  exit after last file
 -sOutputFile=<file> select output file: - for stdout, |command for pipe,
                                         embed %d or %ld for page #
Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PostScriptLevel3 PDF
Default output device: bbox
Available devices:
   alc1900 <snip> inferno iwhi iwlo iwlq jetp3852 jj100 <many other devices> <snip>
Search path:
   . : %rom%Resource/Init/ : %rom%lib/ :
   /usr/local/share/ghostscript/8.71/Resource/Init :
   /usr/local/share/ghostscript/8.71/lib :
   /usr/local/share/ghostscript/8.71/Resource/Font :
   /usr/local/share/ghostscript/fonts :
   /usr/local/share/fonts/default/ghostscript :
   /usr/local/share/fonts/default/Type1 :
   /usr/local/share/fonts/default/TrueType : /usr/lib/DPS/outline/base :
   /usr/openwin/lib/X11/fonts/Type1 : /usr/openwin/lib/X11/fonts/TrueType :
   /usr/share/cups/fonts
Initialization files are compiled into the executable.
For more information, see /usr/local/share/ghostscript/8.71/doc/Use.htm.
Please report bugs to bugs.ghostscript.com.
iMac4:ghostscript-9.27 john$ 

明显的症结就在我面前:“初始化文件被编译成可执行文件。”我知道,但是需要包含或修改哪些初始化文件(如果有)以确保将它们合并到构建中?我有 ImageWriter 的打印机 PPD。它们只是文本文件,我认为它们是必需的。他们应该吗?怎么样?

我尝试从源代码构建 gs 的唯一方法是使用 ./configure 后跟 make 这开始了一个需要几分钟的漫长编译过程,并生成了一个在 Catalina 中运行良好的可执行文件 gs .问题是它不包括我想要的驱动程序。尝试打印到该打印机会导致它以纯 ASCII 文本(非位图)打印“未知设备:iwhi”。

到现在为止,我应该很痛苦地明显我已经超出了我的头脑,不知道该转向哪里。谁能从这里指出我正确的方向?

一些背景可以在这里找到:Apple ImageWriter printer installation in… - Apple Community 。我写的。它的一些链接已经失效。如果图片未加载并且您想查看它,请单击它(这是站点问题)。

描述这种困境的最近讨论在这里:32-bit ghostscript, required for ImageWriter and other printers using CUPS

【问题讨论】:

Stack Overflow 用于编程问题,而不是关于使用或配置 Unix 及其实用程序的问题。 Unix & Linux 或 Super User 将是解决此类问题的更好地方。 谢谢 Barmar,我会这么做的! 似乎 Apple 正在放弃对不支持 IPP Everywhere 的打印机的支持。不确定他们与 Catalina 处于该计划的哪个阶段。见ftp.pwg.org/pub/pwg/liaison/openprinting/presentations/… 【参考方案1】:

引用的设备已在此commit 中删除如果您需要它们,那么您应该能够:

    克隆我们的 git 存储库,这方面的帮助是 here git checkout a87e380acd5e326f7d4e4380348bac393fac3058 将 ghostpdl/devices/gdevadmp.c 文件复制到方便的地方 git checkout master(或者如果你想要一个标记版本而不是前沿代码,例如git checkout ghostpdl-9.27) 将保存的文件复制回 ghostpdl/devices/gdevadmp.c 撤消 contrib.mak、configure.ac 和 unix-gcc.mak 中的更改 (使用link 到 gitweb 你可以看到差异,它们不是 广泛) 在ghostpdl目录中:./autogen.sh然后make

这一切都假设你有一个工作的 C 编译器(gcc、make 等)和开发环境,但你说你已经从源代码构建了 GS,所以应该没问题。最终结果应该是一个带有内置附加设备的 woking Ghostscript。

这个:

初始化文件被编译成可执行文件。

指的是 PostScript 初始化文件,对于用 C 语言编写且必须编译的设备没有帮助。虽然上面的行在技术上是正确的,但您可以使用 -I 开关来覆盖 ROM 文件系统(这是指的)并将初始化文件存储在磁盘上。

PPD 文件不会帮助您使用 Ghostscript,这些是 PostScript 打印机描述文件,它们由生成 PostScript 的应用程序使用,以自定义特定打印机的 PostScript 程序。这些(我认为)是 CUPS 使用的,但 Ghostscript 不是。

【讨论】:

【参考方案2】:

我认为这是删除 gdevadmp 的承诺。

我认为这是在一系列删除被称为“垂死的”MacOS 和经典 Mac 的东西的活动中删除的,我认为这种特定的删除是没有根据和不明智的,因为这些驱动程序今天仍在使用使用 foomatic-rip :

http://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=a87e380acd5e326f7d4e4380348bac393fac3058

【讨论】:

我是那个提交和其他类似路线的人。原因是:有问题的设备的某些变体存在与之相关的错误,或者对它们进行了更改(或需要更改),没有维护者,我们也无法测试它们。如果有人想自愿成为他们认为被不公平删除的设备的维护者,我会非常乐意在“contrib”目录中恢复设备(即不(完全)由 gs 维护的设备团队。不过,我认为每个人都必须意识到,在某些时候,每个人都必须放弃对过时硬件的支持! 克里斯,我很高兴自愿维护 ImageWriter 设备。事实上,不久前我被授予编辑托管 Ghostscript 和相关驱动程序包的打开打印页面的权限。我意识到它已经奄奄一息,我没有任何东西可以提供。不管怎样,除了表达我的兴趣,我不知道还能做什么。我不会对删除是否“不公平”做出任何判断。我只对保持这些设备保持服务的能力感兴趣。它们满足一个非常具体、有限的目的,并且本身非常简单。 Mike,如果您注册并在 bugs.ghostscript.com 上打开一个关于此的错误(最好提及您愿意承担维护),我们会成功的。 谢谢你,克里斯,我会很乐意接受你的建议。请不要断定这个迟到的回复意味着我不感兴趣;只是我在这个特定的项目上花费了零星的时间。我有动力、硬件和维护它的愿望。只要每个人都可以耐心等待,我非常愿意承担责任。我意识到错误 698663 表明它的关闭状态,但给出的原因之一是缺乏兴趣。您2年前的回复表明需要足够的兴趣,我很感兴趣!格兰特和我做 2。【参考方案3】:

我是另一个 Mac 用户和 ImageWriter 和 ImageWriterLQ 所有者,我不代表 Artifex。

在 9.05 版中,包含 appledmp、iwhi 和 iwlo 以及 iwlq 的文件 gdevadmp 被移动到“设备”文件夹中。它一直存在到版本 9.20。

在 9.20 版之后,它在仅包含 gdevadmp 及其支持文件的操作中被删除。注释没有说明为什么将其删除。

因此,ghostscript 9.20 的 64 位版本具有一定的潜力。

可在以下位置获得的文件: https://wiki.linuxfoundation.org/openprinting/macosx/foomatic#ghostscript_for_mac_os_x_103x_panther_-_mac_os_x_109x_mavericks

仍然很好,但是 gs 和过滤器需要移动到沙盒锁定后仍可访问的目录(关于 Mavericks) 建议的目录在您之前发布的苹果支持社区讨论中注明。

【讨论】:

【参考方案4】:

Ghostscript 网站上的链接表明,THIS (***) 是讨论 Ghostscript 相关问题的官方论坛。

如果这不合适,Artifex 和 Ghostscript 开发人员建议什么是 Ghostscript 问题的“官方”论坛?

【讨论】:

您可以随时在 GS 错误跟踪器上打开错误,包括增强请求。也不是 Artifex 的任何人建议在别处询问。我们一直在这个线程上活跃(尽管由于某种原因我没有收到通知,这就是为什么我没有回复更多,为此道歉)【参考方案5】:

我在进行一个就地避难所项目时偶然发现了这个线程,该项目通过为 Catalina 构建 Ghostscript 和 cups-filters 来复活我的 ImageWriter II。我的解决方案还没有。我可以在静默崩溃之前打印 75% 的 CUPS 打印机测试页。

击败沙盒的解决方案是编译 Ghostscript 并禁用动态链接。否则,即使您将 gs 可执行文件移动到沙盒受保护的位置,gs 进程也会在尝试链接驱动程序时立即被终止。从我的笔记中:

    下载 Ghostscript 9.20,使用 Apple 点阵驱动程序的最后一个 gs:https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/tag/gs920 使用静态链接的驱动程序构建 Ghostscript(否则沙盒会获取您):./configure --disable-dbus --disable-dynamic --disable-gtk --with-drivers=APPLE,PS --prefix=/ usr/local/ghostscript-9.20

我还没有尝试将 iwhi 驱动程序等转发到 Ghostscript 中;这是我的下一个任务,希望它能修复静默崩溃。

【讨论】:

感谢您对 tmwong 的关注。您可能有兴趣查看以下讨论,其中 Apple 支持贡献者慷慨地编译了经过签名和公证的 64 位 Ghostscript 版本:discussions.apple.com/thread/… 这是 GS 的旧 8.71 版本,但更高版本没有传达任何信息ImageWriter 的好处。

以上是关于Ghostscript:如何包含它曾经包含的 Apple ImageWriter 驱动程序?的主要内容,如果未能解决你的问题,请参考以下文章

未嵌入字体的 Ghostscript 和 PDF

VS2010如何去掉曾经包含的库文件

Ghostscript:获取用于从 PDF 渲染的 CMYK 值

在 node:7 镜像中安装 ghostscript4js; libgs.so 未找到

华为Fat AP基本调试以及升级Fit

Ghostscript:裁剪特定区域?