明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2234|回复: 15

【PDFtk】合并特定文件夹中的PDF

[复制链接]
发表于 2024-2-4 17:17:37 | 显示全部楼层 |阅读模式
本帖最后由 kucha007 于 2024-3-3 19:19 编辑

Pdftk素材来自:http://bbs.mjtd.com/plugin.php?i ... yOTUzOHwxODE2NzE%3D
  1. (defun K:MPDF4Folder (OriPatch TgtPatch PreNam / TKPath PDFNam FlieNam BatFile)
  2.   (if
  3.       (and
  4.           (setq TKPath (findfile "pdftk.exe"));如果Pdftk存在
  5.           (vl-file-directory-p OriPatch);源文件夹存在
  6.           (vl-file-directory-p TgtPatch);目标文件夹存在
  7.           (vl-directory-files OriPatch "*.PDF" 1);源文件夹存在PDF
  8.           (setq PDFNam (strcat PreNam "-合并.pdf"));合并后的文件名
  9.       )
  10.       (progn
  11.           (if (findfile (strcat TgtPatch PDFNam))(vl-file-delete (strcat TgtPatch PDFNam)));删除旧PDF
  12.           (setq FlieNam (vl-filename-mktemp "PDF合并" nil ".BAT"))
  13.           (setq BatFile (open FlieNam "w"))
  14.           (Write-Line (strcat
  15.                           "start /min \"\" "
  16.                           TKPath
  17.                           " "
  18.                           OriPatch ;源文件路径"%cd%\\
  19.                           "*.pdf"
  20.                           " cat output "
  21.                           TgtPatch ;储存文件路径%cd%\\
  22.                           PDFNam ;文件名
  23.                       )
  24.                       BatFile
  25.           )
  26.           (close BatFile)
  27.           (command "Shell" FlieNam "");运行BAT
  28.           (if (findfile (strcat TgtPatch PDFNam))(vl-file-delete FlieNam));删除BAT
  29.           (vlax-invoke-method (vlax-create-object "Shell.Application") 'Open TgtPatch)
  30.       )
  31.       (if (vl-file-directory-p OriPatch)
  32.           (vlax-invoke-method (vlax-create-object "Shell.Application") 'Open OriPatch)
  33.       )
  34.   )
  35. )


参考用法:
  1. (setq DwgPath (getvar 'DWGPREFIX))
  2. (setq FolderPath (strcat DwgPath "--PDF--\\"))
  3. (K:MPDF4Folder DwgPath FolderPath (vl-filename-base (getvar 'DwgName)))




发表于 2024-2-8 11:15:33 | 显示全部楼层
qazxswk 发表于 2024-2-8 10:25
因为用了BAT,放弃用BAT就可以了,借PDFTK工具,在纯LISP代码中可以实现合并的效果的。

怎么写呢,能不能发出来看看
回复 支持 1 反对 0

使用道具 举报

发表于 2024-4-10 18:46:23 | 显示全部楼层
本帖最后由 sandyvs 于 2024-4-10 18:53 编辑
kucha007 发表于 2024-2-26 15:38
求个代码学习一下~

(setq myapp(vlax-create-object "WScript.Shell"))
                        (Vlax-invoke-method myapp "run" (strcat "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe " FlieNam) 0 true)   
                        (vlax-release-object myapp)

这样可以不


这样吧

(setq myapp (vlax-create-object "Shell.Application"))
                          (vlax-invoke-method myapp "shellexecute" FlieNam "" "" "runas" 0)
                          (vlax-release-object myapp)

发表于 3 天前 | 显示全部楼层
本帖最后由 qazxswk 于 2024-11-19 22:06 编辑
烟盒迷唇 发表于 2024-2-15 09:27
明白了,用wscript.shell就可以没有黑屏闪过了

用wscript.shell,没有黑屏闪过,只针对系统安装的软件吧,比如JPG看图软件,看PDF文档软件。好像对pdftk.exe没有效果。
回复 支持 反对

使用道具 举报

发表于 2024-2-5 08:38:38 | 显示全部楼层
下一步要整合到批打了么?
发表于 2024-2-5 10:49:51 | 显示全部楼层
这个可以,我以前一直是使用其他单独的软件来合并的,现在方便了
发表于 2024-2-5 12:27:03 | 显示全部楼层
很多批打都是用这个来合并PDF的
发表于 2024-2-7 09:19:57 | 显示全部楼层
黑屏闪过怎么消除呢
发表于 2024-2-8 10:25:40 来自手机 | 显示全部楼层
本帖最后由 qazxswk 于 2024-2-8 10:30 编辑
烟盒迷唇 发表于 2024-2-7 09:19
黑屏闪过怎么消除呢

因为用了BAT,放弃用BAT就可以了,借PDFTK工具,在纯LISP代码中可以实现合并的效果的。
发表于 2024-2-14 07:00:54 | 显示全部楼层
烟盒迷唇 发表于 2024-2-8 11:15
怎么写呢,能不能发出来看看

试试 startapp
发表于 2024-2-15 09:27:32 | 显示全部楼层

明白了,用wscript.shell就可以没有黑屏闪过了
 楼主| 发表于 2024-2-26 15:38:51 | 显示全部楼层
烟盒迷唇 发表于 2024-2-15 09:27
明白了,用wscript.shell就可以没有黑屏闪过了

求个代码学习一下~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-22 21:30 , Processed in 0.218287 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表