Acrobat自动批量存储为Reader可以Commenting的文件

简介:

测试环境:

Acrobat Professional 10.1

Acrobat Read 8.3

AutoIt v3.3.6.1

 

有很多pdf文件要变成Acrobat reader可以Commenting的,Acrobat professional没提供javascript等接口实现批量处理,所以只好用AutoIt实现自动转换了。

另外,如果从IE中调用Acrobat Reader读取PDF进行Commenting,Commenting工具条不能显示,这时可以通过Acrobat Professional的批量处理,把下面的JavaScript加入pdf:

 

 
 
  1. /* Acrobat Professional has a "Batch Processing" Option and you can "Run a JavaScript" as one of the processing options, you only need to add the script to insert a document level JavaScript. */ 
  2. this.addScript("CallabSet"'Collab.showAnnotToolsWhenNoCollab = true;'); 

 

 

下面是AutoIt代码:

 
 
  1.  
  2. BlockInput(1)
  3.  
  4. #include <File.au3> 
  5. #Include <Date.au3> 
  6.  
  7. $workdir = "e:\pdfs\" 
  8. $listfile = $workdir & "list.txt" 
  9. $logfile = $workdir & "log.txt" 
  10. Dim $pdfs[10000] 
  11. $acrobatprogram = 'C:\Program Files\Adobe\Acrobat 10.0\Acrobat\Acrobat.exe' 
  12. $acrobat = "Adobe Acrobat Pro" 
  13. $conn = " - " 
  14.  
  15. $totalfiles = _FileCountLines($listfile) 
  16. if $totalfiles = 0 Then 
  17.     MsgBox(0, "autoit","no list file"
  18.     Exit 
  19. endIf 
  20.  
  21. $fl = FileOpen($listfile, 0) 
  22. for $i = 1 to $totalfiles 
  23.     $pdfs[$i] = FileReadLine($fl, $i) 
  24. Next 
  25. FileClose($fl) 
  26.  
  27. Opt("MouseCoordMode", 0)    ;1=绝对坐标,相对屏幕, 0=相对坐标,相对当前激活窗体 
  28.  
  29. $log = FileOpen($logfile, 1) 
  30. FileWriteLine ($log, "Total " & $totalfiles & " files to be processed"
  31. FileWriteLine ($log, "Started at " & _NowDate() & " " & _NowTime()) 
  32.  
  33. Run($acrobatprogram) 
  34.  
  35. For $i = 1 To $totalfiles 
  36.     ;MsgBox(1,2,$pdfs[$i]) 
  37.     if $pdfs[$i] = "" Then 
  38.         ContinueLoop 
  39.     EndIf 
  40.  
  41.     $temp = $pdfs[$i] & $conn & $acrobat 
  42.  
  43.     _WinWaitActivate($acrobat,""
  44.     Send("^o"
  45.  
  46.     _WinWaitActivate("打开",""
  47.     Send($workdir & $pdfs[$i]) 
  48.     ControlClick ("打开""Open""Button2"
  49.  
  50.     _WinWaitActivate($temp,""
  51.     MouseClick("left",20,40,1) 
  52.     WinWait("","",1) 
  53.     MouseClick("left",20,140,1) 
  54.     WinWait("","",1) 
  55.     MouseClick("left",410,210,1) 
  56.     WinWait("","",1) 
  57.     MouseClick("left",580,230,1) 
  58.  
  59.     _WinWaitActivate("Save As",""
  60.     ControlClick ("Save As""""Button2"
  61.     WinWait("","",1) 
  62.     ControlClick ("Save As""""Button1"
  63.  
  64.     ;_WinWaitActivate($temp,"", 2) 
  65.     WinWaitActive($temp
  66.     Send("^w"
  67.  
  68.     FileWriteLine($log, $pdfs[$i]) 
  69.     FileFlush($log) 
  70. Next 
  71.  
  72. _WinWaitActivate($acrobat,""
  73. Send("^q"
  74.  
  75. BlockInput(0)
  76.  
  77. FileWriteLine ($log, "Stoped at " & _NowDate() & " " & _NowTime()) 
  78. FileClose($log) 
  79.  
  80. Func _WinWaitActivate($title,$text,$timeout=0) 
  81.     WinWait($title,$text,$timeout) 
  82.     If Not WinActive($title,$text) Then WinActivate($title,$text) 
  83.     WinWaitActive($title,$text) 
  84. EndFunc 

 

 

Adobe reader隐藏菜单和工具栏,把下面的javascript保存成文件hidefunction.js,放到下面目录中:

C:\Program Files\Adobe\Acrobat 8.0\Reader\JavaScripts

 

 
 
  1. disclosed = true
  2.  
  3. var sPlatform = app.viewerVariation; 
  4. var sLogin = identity.loginName; 
  5. var sPos = "5"
  6.  
  7. if (sPlatform == "Reader") { 
  8.   sPos = "5"
  9.  
  10. if (sPlatform == "Fill-In") { 
  11.   sPos = "5"
  12.  
  13. if (sPlatform == "Full") { 
  14.   sPos = "7"
  15.  
  16. //HIDE MENU ITEMS 
  17.   app.hideMenuItem("SaveAs"); 
  18.   app.hideMenu("All"); 
  19. //HIDE TOOLBARBUTTONS 
  20.   app.hideToolbarButton("Save"); 
  21.  
  22. //DETERMINE THE USER LEVEL OF CONTROL 
  23.   var sTemp = sLogin.toUpperCase(); 
  24.   switch (sTemp) { 
  25.     case 'ROBDOG888' : 
  26.       app.alert('Full Control Allowed To User: ' + sTemp,3,0); 
  27.     default : 
  28.       app.alert('Controlled Access Only!',3,0); 
  29.   } 









本文转自 h2appy  51CTO博客,原文链接:http://blog.51cto.com/h2appy/606678,如需转载请自行联系原作者
目录
相关文章
|
7月前
动态将用户指定的内表的内容通过 Excel 导出
动态将用户指定的内表的内容通过 Excel 导出
38 0
|
6月前
|
存储 数据处理 Python
批量读取docx文件中的excel表格格式数据
批量读取docx文件中的excel表格格式数据
69 6
|
7月前
|
对象存储
使用流式下载从阿里OSS获取PDF文件时,确保正确处理输入流的读取。
使用流式下载从阿里OSS获取PDF文件时,确保正确处理输入流的读取。
92 1
|
10月前
|
存储 数据处理 索引
将物模型数据导出到本地并保存为Excel文件
将物模型数据导出到本地并保存为Excel文件
205 3
|
10月前
|
Linux 数据安全/隐私保护 Windows
Linux中如何优雅的批量合并、拆分、加密pdf文件
在windows中合并个pdf还要让你冲会员,真的是狗。linux下有没有一款工具能完成对pdf的合并、切分的工具呢?
213 0
|
12月前
|
存储 小程序 数据库
小程序导出数据到excel表,借助云开发云函数实现excel数据的保存
小程序导出数据到excel表,借助云开发云函数实现excel数据的保存
135 0
|
前端开发 JavaScript 容器
vue导出excel表格-后端返回blob流文件,前端接收并导出(处理导出以后打开文件损坏问题)
vue导出excel表格-后端返回blob流文件,前端接收并导出(处理导出以后打开文件损坏问题)
728 0
|
存储
有关使用Excel读取用户上传模板问题
有关使用Excel读取用户上传模板问题
77 0
|
存储 Java C#
C#操作Excel文件三种方式
C#操作Excel文件三种方式
605 0
一个H264流,保存成多个文件需要注意的两个问题
一个H264流,保存成多个文件需要注意的两个问题
151 0