baitang36 发表于 2024-2-18 13:40:59

【原创】用纯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(不免费)


不一样地设计 发表于 2024-2-19 17:57:57

太厉害了,等待大佬解密!

crtrccrt 发表于 2024-2-19 10:25:12

本帖最后由 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未测试。



陨落 发表于 2024-2-27 10:45:14

zhang007 发表于 2024-2-23 09:01
以前一直没找到自定义打印纸张任意尺寸的方法,就用了个最笨的方法,在一台电脑上设置了大量能用得着的自定 ...

其实还有第三种思路:裁剪pdf,效果也不差。。

zhang007 发表于 2024-2-23 09:01:59

以前一直没找到自定义打印纸张任意尺寸的方法,就用了个最笨的方法,在一台电脑上设置了大量能用得着的自定义纸张,然后把DWG To PDF.pmp、DWG To PDF.pc3拷贝到其他电脑上,再用程序寻找大小最接近的纸张来实现自动出图

你有种再说一遍 发表于 2024-2-18 13:54:28

本帖最后由 你有种再说一遍 于 2024-2-18 15:02 编辑

鼓掌鼓掌鼓掌鼓掌鼓掌鼓掌鼓掌鼓掌鼓掌
要不要做一个lisp编译器

clinber 发表于 2024-2-18 14:21:38

sandyvs 发表于 2024-2-18 14:36:08

赞一个!

ps122hb 发表于 2024-2-18 14:54:58

谢谢分享

yaojing38 发表于 2024-2-18 16:10:50

谢谢大佬分享,,太好了。。。

落魄山人 发表于 2024-2-18 16:23:27

给大佬点赞

jun353835273 发表于 2024-2-18 16:45:58

太厉害了,对于玩lisp的来说太好了,c#自定义纸张的虽然大佬搞出来了,但是需要会c#才可以,要是有大佬把c#的搞成lisp可调用的函数才能直接供lisp玩家使用。

rhww 发表于 2024-2-18 17:12:52

厉害了大佬,可以继续完善加入顺序等功能

ludaweb 发表于 2024-2-18 17:15:12


这些文件数据都是zlib加密的,难道大神自己用lisp写了zlib解析库么,大神牛逼。
页: [1] 2 3 4 5 6 7 8
查看完整版本: 【原创】用纯lisp实现打印任意尺寸pdf