gpt4 book ai didi

cocoa - 使用任何 Mac OS X 应用程序中的 CUPS 将过滤器/后端编程为 'Print to PDF'

转载 作者:行者123 更新时间:2023-12-03 16:06:08 27 4
gpt4 key购买 nike

好的,这就是我想做的。我想添加一个打印选项,将用户的文档打印到 PDF 中,并在将其发送到设备之前添加一些标题。

我想我的问题是:如何为用户添加一个虚拟“打印机”驱动程序,该驱动程序将启动我一直在开发的应用程序,该应用程序将制作 PDF(或制作 PDF 并启动我的应用程序并引用新生成的 PDF)?如何与 CUPS 交互来生成 PDF?我不确定我是否清楚,所以请告诉我更多信息是否有帮助。

我已经解决了this printing with CUPS tutorial似乎一切都设置好了,但该文件似乎从未出现在适当的临时位置。如果有人正在寻找用户端 PDF 打印机,this cups-pdf-for-mac-os-x是通过安装程序运行的一个,但是当我下载源代码并按照自述文件中的说明进行操作时,我遇到了同样的问题,即指定目录中没有出现文件。如果有人可以通过终端让其中任何一个在 Mac 上运行,请告诉我您是如何做到的。

最佳答案

要走的路是这样的:

  • 使用您喜欢的任何驱动程序设置打印队列。但我建议使用 PostScript 驱动程序/PPD。 (PostScript PPD 不包含任何 *cupsFilter: ... 行。):

  • 首先,使用名为 2dir 的(教育)CUPS 后端。该内容可以从以下网站复制:KDE Printing Developer Tools Wiki确保复制时行尾正确(类似于 Unix)。

  • 用于设置初始队列的命令行:

    lpadmin \    -p pdfqueue \    -v 2dir:/tmp/pdfqueue \    -E \    -P /path/to/postscript-printer.ppd
    2dir后端现在会将所有输出写入目录 /tmp/pdfqueue/它将为每个作业使用一个唯一的名称。每个结果现在应该是一个 PostScript 文件。 (尚未进行任何您想要的修改)。

  • /etc/cups/ppd/ 中找到此队列使用的 PPD (其名称应为 pdfqueue.ppd )。

  • 添加以下行(最好位于 PPD 顶部附近):

    *cupsFilter: "application/pdf  0  -"
    (确保 *cupsFilter 从该行的最开头开始。)此行告诉 cupsd自动设置生成 PDF 的过滤链,然后调用名为 '-' 的最后一个过滤器在通过后端将文件发送到打印机之前。那'-'过滤器是一个特殊的过滤器:它不执行任何操作,它是一个直通过滤器。

  • 重新启动 CUPS 调度程序:

    sudo launchctl unload /System/Library/LaunchDaemons/org.cups.cupsd.plistsudo launchctl load /System/Library/LaunchDaemons/org.cups.cupsd.plist

  • 从现在起您的pdfqueue将导致打印到其中的每个作业最终为 PDF /tmp/pdfqueue/*.pdf .

  • 研究2dir后端脚本。它是简单的 Bash,而且评论也相当不错。

  • 修改2dir在将结果保存到/tmp/pdfqueue/*.pdf之前,将您想要的修改添加到PDF中。 ...

<小时/>

更新: 看来我忘记了最初规定的 *cupsFilter: ... 中的 2 个引号。上面的线。抱歉!

关于cocoa - 使用任何 Mac OS X 应用程序中的 CUPS 将过滤器/后端编程为 'Print to PDF',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11192396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com