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,如需转载请自行联系原作者
目录
相关文章
|
6月前
动态将用户指定的内表的内容通过 Excel 导出
动态将用户指定的内表的内容通过 Excel 导出
38 0
|
4月前
|
Java
Java 读取 Excel 模板,将数据填入Excel表格,后转换为PDF文件(实用)
Java 读取 Excel 模板,将数据填入Excel表格,后转换为PDF文件(实用)
102 0
|
5月前
|
存储 数据处理 Python
批量读取docx文件中的excel表格格式数据
批量读取docx文件中的excel表格格式数据
68 6
|
9月前
|
存储 数据处理 索引
将物模型数据导出到本地并保存为Excel文件
将物模型数据导出到本地并保存为Excel文件
200 3
|
存储
有关使用Excel读取用户上传模板问题
有关使用Excel读取用户上传模板问题
77 0
|
Windows Python
【Excel自动化办公Part1】:处理Excel文件的相关模块介绍、打开和读取表格内容
【Excel自动化办公Part1】:处理Excel文件的相关模块介绍、打开和读取表格内容
【Excel自动化办公Part1】:处理Excel文件的相关模块介绍、打开和读取表格内容
|
存储 Java C#
C#操作Excel文件三种方式
C#操作Excel文件三种方式
604 0
|
Java
编写Java程序,在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内
编写Java程序,在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内
230 0
编写Java程序,在硬盘中选取一个 txt 文件,读取该文档的内容后,追加一段文字“[ 来自新华社 ]”,保存到一个新的 txt 文件内
|
数据采集 存储 数据挖掘
数据预处理:自定义PDF格式批量转换TXT系统
导读:随着大数据的快速发展,自然语言处理、数据挖掘、机器学习技术应用愈加广泛。针对大数据的预处理工作是一项庞杂、棘手的工作。首先数据采集和存储,尤其高质量数据采集往往不是那么简单。采集后的信息文件格式不一,诸如pdf,doc,docx,Excel,ppt等多种形式。
3503 0