【原创】用纯lisp实现打印任意尺寸pdf
本帖最后由 baitang36 于 2024-2-18 13:49 编辑惊惊大侠在cad.net 读写pc3,pmp打印机文件 - 惊惊 - 博客园 (cnblogs.com)中实现了用c#打印任意尺寸pdf,用autolisp能不能做到呢?
为了实现这一功能,我研究了两个多月,踩坑无数,经过多次的cad崩溃,一次又一次的试验,屡败屡战,我自己也有点佩服自己的毅力了。
多次想要放弃,又重新拾起来,终于在年假期间做出来了,今天上班第一天,拿出来和大家分享。
低版本的acad的dwg to pdf.pc3有缺陷,本程序只支持2018及以后版本。
加载本程序后,执行命令是syzpdf。选择图框后进行批量打印成pdf。(注意只能选图框,不能选其它矩形实体)
程序代码参考了kucha007llsheng_73大侠的部分代码,在此表示感谢。
程序实现原理是在打印每一个图框之前临时建立打印机,根据图框的尺寸来建立纸张。这样就可以不用考虑图框大小,实现打印任意尺寸的pdf
程序中定义了一个函数 syz-create-pmp1,作用是临时创建pc3和pmp文件,打印机名是 syzpdf.pc3纸张是usertk1
用法是这样的:
(setq pdfw (strcat (itoa (fix Width)) ".0")) ;pdf纸张宽度
(setq pdfh (strcat (itoa (fix Lenght)) ".0"));;pdf纸张高度
(syz-create-pmp1 pdfw pdfh) ;建立打印机和纸张
(command "_.plot"
"Yes"
(car XX)
"syzpdf.PC3"
"usertk1"
"Millimeters"
(if (>= LenX LenY)
"Landscape";横向
"Portrait";纵向
)
"No"
"Window"
(cadr XX)
(caddr XX)
"Fit"
"Center"
"Yes"
"monochrome.ctb"
"Yes"
""
)
部分代码参考这里【TT】批量打印、图框排序、图框大小、图框加长 - 源码共享 - AutoCAD论坛 - 明经CAD社区 - Powered by Discuz! (mjtd.com)
需要本程序源码者请联系作者QQ5520971(不免费)
太厉害了,等待大佬解密! 本帖最后由 crtrccrt 于 2024-2-23 15:44 编辑
利用PDF-factory自定义尺寸,也可以方便打印任意尺寸pdf,配合自研的批量打印,按图号顺序批量+自动打印,事半千倍。
说来惭愧,明经陪伴我廿多年了,自从**年前论坛改规则后,没有独立发帖权,借本贴共享一个思路。
友情【提醒】各位注意:附件谨慎下载(BAT批处理部分代码,仅定义【--A3--__--0】尺寸,其余尺寸没有贴出),级别不够的,也不要抱怨。
不喜勿喷。不喜勿喷。不喜勿喷。
也不会回复任何疑问。
=========================================================
=========================================================
修改PDF-factory自定义尺寸,可以使用BAT/REG/INF/LSP,BAT/REG/INF/三者能够相互转换,我采用LSP直接生成BAT/REG/INF/LSP四种格式。
REG/INF/LSP三种格式部分代码如下::
LSP方法:
(vl-registry-delete"HKCU\\Software\\FinePrint Software\\pdfFactory8\\CustomPapers\\--A3--__--0" )
(vl-registry-write "HKCU\\Software\\FinePrint Software\\pdfFactory8\\CustomPapers\\--A3--__--0" "Width" (atoi "00445000"))
INF方法:
hkcu,"Software\FinePrint Software\pdfFactory8\CustomPapers\--A3--__--0", "Width", 0x10001,48,CA,06,00
REG方法:
[-HKCU\Software\FinePrint Software\pdfFactory8\CustomPapers\--A3--__--0]
"Width"=dword:0006CA48
BAT方法见附件
不靠附件挣明经币。《《《《前后矛盾》》》》应坛友请求,降低下载权限。钻石会员以上可以下载了。
=========================================================
=========================================================
利用PDF-factory自定义尺寸,经测试,支持XP++(PDF-f--3.5.1/7.2.1),Win10-64++(PDF-f--3.5.1/7.2.1/8.17),Win-7/8未测试,支持PDF-factory-3.5.1/7.2.1/8.17,其他PDF-factory未测试。
zhang007 发表于 2024-2-23 09:01
以前一直没找到自定义打印纸张任意尺寸的方法,就用了个最笨的方法,在一台电脑上设置了大量能用得着的自定 ...
其实还有第三种思路:裁剪pdf,效果也不差。。 以前一直没找到自定义打印纸张任意尺寸的方法,就用了个最笨的方法,在一台电脑上设置了大量能用得着的自定义纸张,然后把DWG To PDF.pmp、DWG To PDF.pc3拷贝到其他电脑上,再用程序寻找大小最接近的纸张来实现自动出图 本帖最后由 你有种再说一遍 于 2024-2-18 15:02 编辑
鼓掌鼓掌鼓掌鼓掌鼓掌鼓掌鼓掌鼓掌鼓掌
要不要做一个lisp编译器
赞一个! 谢谢分享 谢谢大佬分享,,太好了。。。 给大佬点赞
太厉害了,对于玩lisp的来说太好了,c#自定义纸张的虽然大佬搞出来了,但是需要会c#才可以,要是有大佬把c#的搞成lisp可调用的函数才能直接供lisp玩家使用。 厉害了大佬,可以继续完善加入顺序等功能
这些文件数据都是zlib加密的,难道大神自己用lisp写了zlib解析库么,大神牛逼。