工作中要用到PDF虚拟打印机,找了几个都不太满意,最后无意中遇到了clawPDF,试用了一下还不错,既然开源的那就自己编译一份玩玩吧。以此记录下过程,以免忘记,也算是给需要的朋友开个路
这款c#开发的虚拟打印机功能很强大,并且有很多参数可以设置,我用到的主要功能是可以在打印完PDF后向我的自己开发程序发一个命令,并且带参数进去,这个参数就是刚打印的PDF文件的完整路径,还有一个功能是打印成PDF后可以调用物理打印机再打印出纸质的,就是这么丝滑。
正片开始,先从GitHub - clawsoftware/clawPDF: Open Source virtual PDF printer for Windows // Print to PDF, PDF/A, PDF/X, PNG, JPEG, TIF and text我的环境是
windows11 netframework 4.6.2 visual studio 2019
下载源码,解压之,\clawPDF-master这个是主目录,双击clawPDF.sln,二话不说先解决个小问题,在文件夹clawPDF-master\clawmon\monitorUI\下面的monitorUI.cpp文件有点问题,找到这个文件的第495行
//controlliamo se la porta esiste gi? bRes = XcvDataW(printer, L"PortExists", (PBYTE)pc.szPortName, sizeof(pc.szPortName),
将光标定位在bRes前面,按下回车换行,使之和496行组合成为
//controlliamo se la porta esiste gi?
bRes = XcvDataW(printer, L"PortExists", (PBYTE)pc.szPortName, sizeof(pc.szPortName),
(PBYTE)&bPortExists, sizeof(bPortExists), &cbOutputNeeded, &dwStatus);
之后下面的操作主旨:目标是要生成安装msi,这个msi是由解决方案里的项目clawPDF_setup生成的,下面所有的操作都是为了让其他几个项目给clawPDF_setup生成所需要的文件,均会生成到\clawPDF-master\_Build\Release文件夹里,我们需要在32位和64位都可以安装使用,所以左上角先选Any CPU
此时右击解决方案,生成解决方案(我直接release测试的)是会报错的
这个错误是因为在生成安装项目(clawPDF_setup)时要复制文件到 clawPDF_setup指定目录,但是没有这些目录及文件,所以到clawPDF-master\clawPDF目录下建立clawmon目录,clawmon下再建x86和x64目录,但是这下面的文件在哪里呢?项目是里没有的我从其它地方找来这几个文件(我作成压缩包供使用 点此下载)放到相对应的目录下
x86文件夹下也是要放的,并且文件是不一样的 ,虽然名字一样
现在试一把clawPDF_setup需要收集的文件是否齐活,右击clawPDF_setup,点成生,报错
看一下这个文件夹里确实没有,是因为下面这两个项目是要单独生成32位和64位的
此时把左上角Any CPU改成x64,分别右击clawmon和clawmonui, 点击生成,此时clawmonui可以生成成功,但是clawmon会生成失败,
原因是这个项目下面的openssl下面没有64位的头文件和lib, 从各种渠道找来(我作成压缩包供使用 点此下载)放在 clawPDF-master\clawmon\openssl下
此时右击clawmon生成,成功
现在clawPDF_setup需要的东西完备了,右击clawPDF_setup生成,稍微等一下,成功
经测试window11 64位 window7 32位都可以正常安装使用
使用方面就不多说了,安装后会在打印机列表里出现一个clawPDF打印机,想要打印成pdf文件时选这个打印机,点打印后会弹出PDF文件保存路径选择框,确认了就可以了,当然还有很多设置,比如自动保存,质量设置,pdf合并,后处理(发邮件,调起程序,ftp上传等),都在开始---clawPDF 打开后的“文件参数设置”里设置。