如何让 emacs 正确打印 pdf? [已关闭]

问题描述 投票:0回答:1

如果您曾经走过 emacs 之路,您就会知道它有多么强大,但也毫无用处。

完全披露:我的 4800 行初始化文件(很快将达到 3000 行)确实设法在 27.5 秒内加载 125 个有用的包,这要归功于 org-babel 和 use-package ——但我仍然没有设法让它打印一个pdf。哦,emacs,最简单的事情吧?

当然,出于显而易见的原因,emacs 专家的数量正在减少,尽管如此,我猜测这里至少有一些人已经完全征服了 emacs。唉,我还不是你们中的一员。 (还没有!)

我的配置,2019-04-17 的 26.2(版本 1,x86_64-w64-mingw32),使用 ImageMagic 7 支持、pdftools、aspell 6(我没有使用)和许多其他 Windows Ready Gems 进行编译,仍然将 Postscript 直接推入我的非 Postscript 兼容激光打印机,打印机立即吐出 28 页垃圾。 BLLLLpt。

诚然,我对底层打印知之甚少,但我知道 emacs 仍然垫底 - 打印 pdf 并不难。所以这是设置:

Windows 版的 Ghostscript 和 Ghostview 已安装,并添加到路径中。 Pdftools 工作得很好,打开 pdf 时会覆盖 docview。初始化代码很短。

(require 'printing)

为了更好的衡量:

(add-to-list 'load-path "C:/Program Files (x86)/Ghostgum/gsview/gsview32.exe")
(add-to-list 'load-path "C:/Program Files/gs/gs9.26/bin/gswin64c.exe")

命令(我更喜欢通过 pr-path-alist 设置它们,但是,这没有多大意义)。

(setq pr-gs-command "C:/Program Files/gs/gs9.26/bin/gswin64c.exe")
(setq pr-ps-command "C:/Program Files/gs/gs9.26/bin/gswin64c.exe")

(setq lpr-command "C:/Program Files/gs/gs9.26/bin/gswin64c.exe")
(setq ps-lpr-command "C:/Program Files/gs/gs9.26/bin/gswin64c.exe")


(setq ps-lpr-switches '("-q" "-dNOPAUSE" "-dBATCH" "-sDEVICE=mswinpr2" "-sPAPERSIZE=a4"))

(setq pr-temp-dir "c:/emacs/.emacs.d/temp/")

我尝试过一些方法,ps-print.el 方法和printing.el 方法。我更喜欢使用 Printing.els 公关界面,因为它足够简单。

lpr 缓冲区和 lpr 区域

将打印作业发送到假脱机中,再也不会被发现。我的打印机是兄弟激光打印机,网络上唯一的一台,lpr不是应该比postscript更好吗?好吧,这里什么也没发生。

打印缓冲区打印区域 使用选项进行假脱机操作,但没有任何内容发送到打印机(脱机操作也不执行任何操作)。

ps 打印缓冲区

打印文本文档!然而,它会吐出 28 页的 pdf 垃圾文件。

pr-ps-打印缓冲区

假脱机,什么也没发生

pr-ps-缓冲区预览

打开 gsview(带有烦人的注册弹出窗口)并预览打印作业

pr-ps-region-using-ghostscript

28页垃圾。

所以看来我可能缺少一些基本知识。 Ghostscript 应该填写在 postscript 和非 postscript 或 pcl 驱动程序之间,是吗?

我错过了图书馆吗?还是我只需要更好地配置初始化?

有人知道我在说什么吗?

windows pdf printing emacs ghostscript
1个回答
2
投票

我知道这不是一个完整的答案,但评论太长了。

Ghostscript 不会在驱动程序之间“填充”。 mswinpr2 设备的工作原理是(抽象地去除细节)将输入渲染为位图,为打印机创建 DeviceContext,在设备上下文上绘制位图,然后告诉 DC 自行打印。

基本上它会渲染输入,然后使用 Windows 打印系统来完成繁重的工作。因此,您需要能够从 Windows 打印到打印机,我假设您已经可以做到这一点:-)

您是否尝试过从 Windows 命令 shell 使用 Ghostscript 命令行?有效果吗?

如果输入是 PDF,Ghostscript 不会将 PostScript“推送”到您的打印机中。除了“兄弟”之外,您还没有确切地说您使用的是哪种打印机,了解一下会很有用。例如,它是 PCL、PostScript 还是“其他”打印机。

最好知道打印的前几个字节是什么,看看它是 PDF 文件还是其他格式的开头。

我怀疑您是否真的启动了 Ghostscript,您是否看到了打印机选择器对话框?您的命令行似乎没有指定打印机,或者 QueryUser 切换为使用默认打印机,也没有选择 /NoCancel,所以我希望您看到一个进度对话框。

尝试将

-dQueryUser=1
添加到 Ghostscript 命令行,如果没有出现打印机选择器对话框,则说明您没有运行 Ghostscript。

恐怕我无法提供任何关于为什么会这样的建议。

© www.soinside.com 2019 - 2024. All rights reserved.