好了,所以这里是我想做的事情。 我想补充一点,无论打印用户的文档为PDF和发送它关闭设备之前增加了一些头打印选项。
我想我的问题是:如何添加一个虚拟的“打印机”驱动程序将启动我一直在开发,这将使PDF应用程序的用户(或使PDF并启动我的引用应用到新生成的PDF )? 如何用CUPS接口,用以生成的PDF? 我不知道我是清楚的,所以让我知道如果有更多的信息将是有益的。
我曾通过此打印与CUPS的教程 ,似乎把一切都设置好了,但文件似乎永远不会出现在适当的临时位置。 如果有人正在寻找一个用户端PDF打印机, 这杯-PDF换MAC-OS-X是指通过安装程序的工作原理,但我没有文件出现在指定的目录中相同的问题时,我下载源代码并按照自述的说明。 如果任何人都可以得到其中任一对通过终端Mac上工作,请让我知道一步一步,你是如何做到的。
要走的路是这样的:
设置打印队列与你喜欢的任何驱动程序。 但是,我建议使用PostScript驱动程序/ PPD。 (A的PostScript PPD是一个不包含任何*cupsFilter: ...
。线):
开始时,用(教育)CUPS命名后端2dir
。 :人们可以从这个网站复制KDE印刷开发工具的Wiki 。 复印时,你得到的行尾右侧(类Unix)确保。
命令行来设置初始队列:
使用lpadmin \ -p pdfqueue \ -v 2dir:/ tmp目录/ pdfqueue \ -E \ -P /path/to/postscript-printer.ppd
该2dir
现在后端将写入所有输出目录/tmp/pdfqueue/
,它会使用uniq的名称为每个作业。 每个结果应该现在是PostScript文件 。 (有没有修改你想要还)。 找到由该队列中使用的PPD /etc/cups/ppd/
(它的名称应pdfqueue.ppd
)。
添加以下行(最好的,附近的PPD的顶部):
* cupsFilter: “应用程序/ PDF 0 - ”
(确保*cupsFilter
开始在该行的开始。)这一行告诉cupsd
,以自动设定产生PDF,然后调用指定的最后一个过滤器的过滤链'-'
它通过后台将文件发送到前打印机。 这'-'
过滤器是一种特殊的一个:它什么也不做,这是一个直通滤波器。 重新启动CUPS调度:
须藤launchctl卸载/System/Library/LaunchDaemons/org.cups.cupsd.plist 须藤launchctl负载/System/Library/LaunchDaemons/org.cups.cupsd.plist
从现在起,你的pdfqueue
会导致打印到它各项工作最终以PDF /tmp/pdfqueue/*.pdf
。
究其2dir
后端脚本。 这是简单的bash,合理很好的注释。
修改2dir
中,在对结果保存之前将您所需的修改到PDF的方式/tmp/pdfqueue/*.pdf
...
更新:看起来像我忘了2个报价在我原先规定的*cupsFilter: ...
线之上。 抱歉!
我真希望我能接受两个答案,因为我不认为我能这样做没有所有的@Kurt Pfeifle的帮助为Mac细节和刚认识的打印机驱动程序和文件的位置做。 但这里是我所做的:
从codepoet下载源代码杯-PDF换MAC-OS-X 。 (对于非苹果电脑,你可以看看http://www.cups-pdf.de/ )自述大大详细的,如果你仔细阅读所有的指令,它会工作,但我有一个小麻烦都件,所以我将概述正是我在拯救别人一些麻烦的希望一样。 对于这一点,与源代码的目录被称为“杯具-pdfdownloaddir”。
编译包含在src文件夹杯,pdf.c的自述规定:
gcc -09 -s -lcups -o cups-pdf cups-pdf.c
有可能是一个警告: ld: warning: option -s is obsolete and being ignored
,但是这不构成问题对我来说。 复制二进制文件到/ usr / libexec目录/杯/后端。 你将有可能给sudo
命令,它会提示你输入密码。 例如:
sudo cp /cups-pdfdownloaddir/src/cups-pdf /usr/libexec/cups/backend
另外,不要忘记改变这个文件的权限 - 这需要root权限(700),它可以与移动cupd-PDF到后端目录后如下改变:
sudo chmod 700 /usr/libexec/cups/backend/cups-pdf
编辑包含在/cups-pdfdownloaddir/extra/cups-pdf.conf文件。 在“PDF转换设置”标题下,找到读取GhostScript作为下一个线#GhostScript /usr/bin/gs
。 我没有取消注释的情况下,我需要它,但只是添加它下面的线Ghostscript /usr/bin/pstopdf
。 (应该没有光标预#任何这些修饰的)
查找GSCall线下读取#GSCall %s -q -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePage\ s=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c .setpdfwrite \ -f %s
同样不受反注释此,根据本我增加了行GSCall %s %s -o %s %s
查找读取PDFVer线下#PDFVer 1.4
并将其更改为PDFVer
,没有空格或以下字符。
现在保存这个文件复制到/ etc /杯用下面的命令离开前编辑
sudo cp cups-pdfdownloaddir/extra/cups-pdf.conf /etc/cups
要小心在文本编辑器编辑的,因为在UNIX和Mac环境换行符是不同的,并有可能破坏脚本。 您可以随时使用一个Perl命令将其删除,但我偏执和不喜欢在第一时间处理它。
您现在应该能够打开一个程序(如Word,Excel和...),然后选择文件>>打印,并找到一个可用的打印机称为CUPS-PDF。 打印到这台打印机,你应该在默认情况下找到在/ var /卷轴/杯,PDF / yourusername /您的PDF。
*另外,我想是因为它帮助我,这可能是有益的:如果某样东西在下列指示搞砸了,你需要重新开始/摆脱它,为了消除你需要(1)取出杯子司机从-pdf后端/usr/libexec/cups/backend
(2)请从杯-pdf.conf /etc/cups/
(3)进入系统偏好设置>>打印与传真和删除CUPS-PDF打印机。
这就是我成功地建立了一个PDF后端/过滤器为我自己,但有更多的细节,并包含在自述文件上定制的其他信息。 希望这可以帮助别人!
文章来源: Programming a Filter/Backend to 'Print to PDF' with CUPS from any Mac OS X application