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.   } 

 

你可能感兴趣的:(reader,自动,批量,Acrobat,Commenting)