本帖最后由 kucha007 于 2025-2-23 22:11 编辑
Pdftk素材来自:http://bbs.mjtd.com/plugin.php?i ... yOTUzOHwxODE2NzE%3D
函数主体:
20250223-修复了文件名带空格,以及bat闪窗的情况
 - ;使用PDFtk合并特定文件夹中的PDF
- (defun K:MPDF4Folder (OriPatch TgtPatch PreNam / TKPath PDFNam FlieNam BatFile obj)
- (if
- (and
- (setq TKPath (findfile "pdftk.exe"))
- (vl-file-directory-p OriPatch);源文件夹存在
- (vl-file-directory-p TgtPatch);目标文件夹存在
- (vl-directory-files OriPatch "*.PDF" 1);源文件夹存在PDF
- (setq PDFNam (strcat (substr (rtos (getvar "cdate") 2 0) 1 8) "-" 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)
- (setq obj (vlax-create-object "Shell.Application"))
- (vlax-invoke-method obj "shellexecute" FlieNam "" "" "runas" 0);运行BAT
- (vlax-release-object obj)
- (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 TgtPatch (getvar 'DWGPREFIX))
- (setq OriPatch (strcat TgtPatch "--PDF--\\"))
- (setq PreNam (vl-filename-base (getvar 'DwgName)))
- (K:MPDF4Folder OriPatch TgtPatch PreNam)
|