天天看點

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:

/* 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. */ 

this.addScript("CallabSet", 'Collab.showAnnotToolsWhenNoCollab = true;'); 

下面是AutoIt代碼:

BlockInput(1)

#include <File.au3> 

#Include <Date.au3> 

$workdir = "e:\pdfs\" 

$listfile = $workdir & "list.txt" 

$logfile = $workdir & "log.txt" 

Dim $pdfs[10000] 

$acrobatprogram = 'C:\Program Files\Adobe\Acrobat 10.0\Acrobat\Acrobat.exe' 

$acrobat = "Adobe Acrobat Pro" 

$conn = " - " 

$totalfiles = _FileCountLines($listfile) 

if $totalfiles = 0 Then 

    MsgBox(0, "autoit","no list file") 

    Exit 

endIf 

$fl = FileOpen($listfile, 0) 

for $i = 1 to $totalfiles 

    $pdfs[$i] = FileReadLine($fl, $i) 

Next 

FileClose($fl) 

Opt("MouseCoordMode", 0)    ;1=絕對坐标,相對螢幕, 0=相對坐标,相對目前激活窗體 

$log = FileOpen($logfile, 1) 

FileWriteLine ($log, "Total " & $totalfiles & " files to be processed") 

FileWriteLine ($log, "Started at " & _NowDate() & " " & _NowTime()) 

Run($acrobatprogram) 

For $i = 1 To $totalfiles 

    ;MsgBox(1,2,$pdfs[$i]) 

    if $pdfs[$i] = "" Then 

        ContinueLoop 

    EndIf 

    $temp = $pdfs[$i] & $conn & $acrobat 

    _WinWaitActivate($acrobat,"") 

    Send("^o") 

    _WinWaitActivate("打開","") 

    Send($workdir & $pdfs[$i]) 

    ControlClick ("打開", "Open", "Button2") 

    _WinWaitActivate($temp,"") 

    MouseClick("left",20,40,1) 

    WinWait("","",1) 

    MouseClick("left",20,140,1) 

    MouseClick("left",410,210,1) 

    MouseClick("left",580,230,1) 

    _WinWaitActivate("Save As","") 

    ControlClick ("Save As", "", "Button2") 

    ControlClick ("Save As", "", "Button1") 

    ;_WinWaitActivate($temp,"", 2) 

    WinWaitActive($temp) 

    Send("^w") 

    FileWriteLine($log, $pdfs[$i]) 

    FileFlush($log) 

_WinWaitActivate($acrobat,"") 

Send("^q") 

BlockInput(0)

FileWriteLine ($log, "Stoped at " & _NowDate() & " " & _NowTime()) 

FileClose($log) 

Func _WinWaitActivate($title,$text,$timeout=0) 

    WinWait($title,$text,$timeout) 

    If Not WinActive($title,$text) Then WinActivate($title,$text) 

    WinWaitActive($title,$text) 

EndFunc 

Adobe reader隐藏菜單和工具欄,把下面的javascript儲存成檔案hidefunction.js,放到下面目錄中:

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

disclosed = true; 

var sPlatform = app.viewerVariation; 

var sLogin = identity.loginName; 

var sPos = "5"; 

if (sPlatform == "Reader") { 

  sPos = "5"; 

if (sPlatform == "Fill-In") { 

if (sPlatform == "Full") { 

  sPos = "7"; 

//HIDE MENU ITEMS 

  app.hideMenuItem("SaveAs"); 

  app.hideMenu("All"); 

//HIDE TOOLBARBUTTONS 

  app.hideToolbarButton("Save"); 

//DETERMINE THE USER LEVEL OF CONTROL 

  var sTemp = sLogin.toUpperCase(); 

  switch (sTemp) { 

    case 'ROBDOG888' : 

      app.alert('Full Control Allowed To User: ' + sTemp,3,0); 

    default : 

      app.alert('Controlled Access Only!',3,0); 

  } 

本文轉自 h2appy  51CTO部落格,原文連結:http://blog.51cto.com/h2appy/606678,如需轉載請自行聯系原作者

繼續閱讀