乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: Grrr1337

确定程序ID

[复制链接]

61

主题

792

帖子

35

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1015
发表于 2018-2-26 18:04:49 | 显示全部楼层

http://youtu.be/5qHNQxZGZKU啊,完全不知道这个乐队的存在
最终得到了什么是CAcroPDDoc对象:
  1. (setq o (vlax-get-or-create-object "AcroExch.PDDoc")) ; returns #
Tho,did#039;t意识到,在VBA代码中,PartDocs是一个数组——如果是这样的话:看起来它无法在LISP中获得
哦,或者你的意思是他为vla对象手动创建了一个安全阵列,并在稍后用CAcroPDDoc对象填充它
我有点明白了(当我在那里看他的第一个代码建议时)…尽管我更喜欢#039;d来处理完整的.pdf文件路径,所以这是关于的ReDim函数
这是很有价值的信息,起初我试图添加单个PDF文档对象-然后我认为这似乎不寻常,在循环中创建相同的对象而不释放它
这就是我的lisp代码不同的原因。但是在看了一堆类似的vba acrobat脚本代码后,我意识到我'我错了
对我来说,这是代码中最令人沮丧的部分。最后,我开始寻找;“最简单的建议”;在web上,只想看看InsertPages是如何工作的
停止这个简单的例子,关于如何合并两个PDF文档,点击子按钮1\u,看起来我明白了
;现在我们有了一个LISP子来合并PDF:
  1. ;| Examples:
  2. (MergePDFs
  3.   (strcat (getenv "userprofile") "\\Desktop\\Hale 515\\PDFs") ; in
  4.   (strcat (getenv "userprofile") "\\Desktop\" "MergedPDFS.pdf") ; out
  5. )
  6. (MergePDFs
  7.   (list ; in
  8.     (getfiled "Specify PDF file" (strcat (getenv "userprofile") "\\Desktop\") "pdf" 16)
  9.     (strcat (getenv "userprofile") "\\Desktop\\I_Dont_Exist.pdf")
  10.     (getfiled "Specify PDF file" (strcat (getenv "userprofile") "\\Desktop\") "pdf" 16)
  11.     (getfiled "Specify PDF file" (strcat (getenv "userprofile") "\\Desktop\") "pdf" 16) ; You can cancel and provide nil if you want to
  12.   ); list
  13.   (strcat (getenv "userprofile") "\\Desktop\" "MergedPDFS.pdf") ; out
  14. )
  15. |;
  16. ; in - folder that contains .pdf files, or a list of ("\\.pdf" "\\.pdf" ..)
  17. ; out - path\\filename.pdf - Overwrites the existing (if theres one)
  18. ; If successful, Returns assoc list of '(( PageCount) ..)
  19. (defun MergePDFs ( in out / *error* AcroApp L PD r )
  20.   ; http://www.theswamp.org/index.php?topic=53974.msg586248#msg586248
  21.   (defun *error* ( m )
  22.     (and L (foreach x (mapcar 'car L) (vl-catch-all-apply 'vlax-invoke-method (list x 'Close)) (vl-catch-all-apply 'vlax-release-object (list x))))
  23.     (and AcroApp
  24.       (vl-catch-all-apply 'vlax-invoke-method (list AcroApp 'CloseAllDocs))
  25.       (vl-catch-all-apply 'vlax-invoke-method (list AcroApp 'Exit))
  26.       (vl-catch-all-apply 'vlax-release-object (list AcroApp))
  27.     ); and
  28.     (gc) (gc) (and m (princ m)) (princ)
  29.   ); defun *error*
  30.   
  31.   (and in out
  32.     (or (setq AcroApp (vlax-get-or-create-object "AcroExch.App")) (prompt "\nUnable to interfere with Acrobat object.") )
  33.     (cond
  34.       ( (eq 'STR (type in)) ; folder provided
  35.         (setq L ((lambda (pat / tmp) (if (setq tmp (vl-directory-files pat "*.pdf" 1)) (mapcar (function (lambda (x) (list (vlax-get-or-create-object "AcroExch.PDDoc") (strcat pat "\" x)))) tmp))) in))
  36.       )
  37.       ( (vl-consp in) ; list of .pdf filepaths'n'names provided
  38.         (setq L (mapcar (function (lambda (x) (list (vlax-get-or-create-object "AcroExch.PDDoc") x))) in))
  39.       )
  40.     ); cond
  41.     (setq L (apply (function append) (mapcar (function (lambda (x) (if (eq :vlax-true (vlax-invoke-method (car x) 'Open (cond ((cadr x)) ("")))) (list (append x (list (vlax-invoke-method (car x) 'GetNumPages))))))) L)))
  42.     (setq PD (caar L))
  43.     (progn
  44.       (foreach x (cdr L) ; L - assoc list of (#  )
  45.         (if (eq :vlax-false (vlax-invoke-method PD 'InsertPages (1- (vlax-invoke PD 'GetNumPages)) (car x) 0 (caddr x) :vlax-true))
  46.           (prompt (strcat "\nCannot insert pages from "" (cadr x) """))
  47.         )
  48.       )
  49.       (or (eq :vlax-true (vlax-invoke-method PD 'Save 1 out)) ; 1 = PDSaveFull
  50.         (prompt "\nCannot save the modified document")
  51.       ); or
  52.     ); progn
  53.     (setq r (mapcar 'cdr L))
  54.   ); and
  55.   
  56.   (*error* nil) r
  57. ); defun MergePDFs
再次感谢您的帮助,我'我会尽量调整我的眼睛以适应VBA编码,尽管写LISP更舒服。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 00:10 , Processed in 0.135150 second(s), 52 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表