kucha007 发表于 2024-2-4 17:17:37

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

本帖最后由 kucha007 于 2024-3-3 19:19 编辑

Pdftk素材来自:http://bbs.mjtd.com/plugin.php?i ... yOTUzOHwxODE2NzE%3D

(defun K:MPDF4Folder (OriPatch TgtPatch PreNam / TKPath PDFNam FlieNam BatFile)
(if
      (and
          (setq TKPath (findfile "pdftk.exe"));如果Pdftk存在
          (vl-file-directory-p OriPatch);源文件夹存在
          (vl-file-directory-p TgtPatch);目标文件夹存在
          (vl-directory-files OriPatch "*.PDF" 1);源文件夹存在PDF
          (setq PDFNam (strcat PreNam "-合并.pdf"));合并后的文件名
      )
      (progn
          (if (findfile (strcat TgtPatch PDFNam))(vl-file-delete (strcat TgtPatch PDFNam)));删除旧PDF
          (setq FlieNam (vl-filename-mktemp "PDF合并" nil ".BAT"))
          (setq BatFile (open FlieNam "w"))
          (Write-Line (strcat
                        "start /min \"\" "
                        TKPath
                        " "
                        OriPatch ;源文件路径"%cd%\\
                        "*.pdf"
                        " cat output "
                        TgtPatch ;储存文件路径%cd%\\
                        PDFNam ;文件名
                      )
                      BatFile
          )
          (close BatFile)
          (command "Shell" FlieNam "");运行BAT
          (if (findfile (strcat TgtPatch PDFNam))(vl-file-delete FlieNam));删除BAT
          (vlax-invoke-method (vlax-create-object "Shell.Application") 'Open TgtPatch)
      )
      (if (vl-file-directory-p OriPatch)
          (vlax-invoke-method (vlax-create-object "Shell.Application") 'Open OriPatch)
      )
)
)


参考用法:

(setq DwgPath (getvar 'DWGPREFIX))
(setq FolderPath (strcat DwgPath "--PDF--\\"))
(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_1:}

sandyvs 发表于 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)

qazxswk 发表于 5 天前

本帖最后由 qazxswk 于 2024-11-19 22:06 编辑

烟盒迷唇 发表于 2024-2-15 09:27
明白了,用wscript.shell就可以没有黑屏闪过了
用wscript.shell,没有黑屏闪过,只针对系统安装的软件吧,比如JPG看图软件,看PDF文档软件。好像对pdftk.exe没有效果。

lxl217114 发表于 2024-2-5 08:38:38

下一步要整合到批打了么?

lingduwx 发表于 2024-2-5 10:49:51

这个可以,我以前一直是使用其他单独的软件来合并的,现在方便了

烟盒迷唇 发表于 2024-2-5 12:27:03

很多批打都是用这个来合并PDF的

烟盒迷唇 发表于 2024-2-7 09:19:57

黑屏闪过怎么消除呢

qazxswk 发表于 2024-2-8 10:25:40

本帖最后由 qazxswk 于 2024-2-8 10:30 编辑

烟盒迷唇 发表于 2024-2-7 09:19
黑屏闪过怎么消除呢
因为用了BAT,放弃用BAT就可以了,借PDFTK工具,在纯LISP代码中可以实现合并的效果的。

baitang36 发表于 2024-2-14 07:00:54

烟盒迷唇 发表于 2024-2-8 11:15
怎么写呢,能不能发出来看看

试试 startapp

烟盒迷唇 发表于 2024-2-15 09:27:32

baitang36 发表于 2024-2-14 07:00
试试 startapp

明白了,用wscript.shell就可以没有黑屏闪过了

kucha007 发表于 2024-2-26 15:38:51

烟盒迷唇 发表于 2024-2-15 09:27
明白了,用wscript.shell就可以没有黑屏闪过了

求个代码学习一下~
页: [1] 2
查看完整版本: 【PDFtk】合并特定文件夹中的PDF