应';我把它定义为偏头痛:
- ;|
- (Merge ; Creates a file, but it contains only the first PDF file (I was testing on single-paged PDFs)
- (strcat (getenv "userprofile") "\\Desktop\\Hale 515\\PDFs") ; in
- (strcat (getenv "userprofile") "\\Desktop\" "MergedPDFS.pdf") ; out
- )
- |;
-
- ; in - folder that contains .pdf files
- ; out - path\\filename.pdf
- (defun Merge ( in out / *error* L n PartDocs ni n r )
-
- (defun *error* ( m )
- (and PartDocs (vl-catch-all-apply 'vlax-invoke-method (list PartDocs 'Close)))
- (and AcroApp (vl-catch-all-apply 'vlax-invoke-method (list AcroApp 'CloseAllDocs)))
- (and AcroApp (vl-catch-all-apply 'vlax-invoke-method (list AcroApp 'Exit)))
- (foreach x (list AcroApp AcroPDDoc) (and (eq 'VLA-OBJECT (type x)) (vl-catch-all-apply 'vlax-release-object (list x))))
- (gc) (gc) (and m (princ m)) (princ)
- ); defun *error*
-
- (setq AcroApp (vlax-get-or-create-object "AcroExch.App"))
- (setq L ((lambda (pat) (mapcar '(lambda (x) (strcat pat "\" x)) (vl-directory-files pat "*.pdf" 1))) in))
-
- ; Not Sure how to adjust 'n'
- (setq n (length L))
- ; (setq n 0)
-
- (foreach x L ; The issue is within this loop
- (setq PartDocs (vlax-get-or-create-object "AcroExch.PDDoc"))
-
- (eq :vlax-true (vlax-invoke-method PartDocs 'Open x))
- (setq ni (vlax-invoke-method PartDocs 'GetNumPages))
- ; Function InsertPages(nInsertPageAfter As Long, iPDDocSource As Object, lStartPage As Long, lNumPages As Long, lInsertFlags As Long) As Boolean
- (if (eq :vlax-true (vlax-invoke-method PartDocs 'InsertPages (1- n) PartDocs 0 ni :vlax-true)) ;
- (progn
- (setq n (+ n ni))
-
- ); progn
- (progn
- (setq n (+ 1 (vlax-invoke-method PartDocs 'GetNumPages)))
-
- ); progn
- ); if
- ; (vlax-invoke-method PartDocs 'Close)
- ; (vlax-release-object PartDocs)
- ); foreach
- (setq r
- (eq :vlax-true
- (vlax-invoke-method PartDocs 'Save
- 1 ; PDSaveFull
- out
- ); vlax-invoke-method
- ); eq
- ); setq r
- (*error* nil) r
- ); defun Merge
顺便说一句,谢谢李的意见,但我';我明天读。因为这就像喝伏特加。 |