« 【Acrobat AppleScripts】フルスクリーン開始 | トップページ | 【Acrobat】Acrobatフォームでデータ印字(その4) »

【Acrobat】Acrobatフォームでデータ印字(その5)

スクリプトのサンプルになります

(*
読み込みデータをフォームの値として
PDFを作成する
20210809 V1 初回作成




*)

--////////////////読み込みデータファイル(TAB区切りテキスト)
(* Data フォルダ内に保存してください *)
set theDataFile to "ユーザーデータ.tab.txt" as text

--////////////////テンプレートファイル名
set theTemplatesFile to "Templates.pdf" as text

--////////////////テンプレートPDFのフォーム名を設定
set theFormNameA to "textA" as text
set theFormNameB to "textB" as text
set theFormNameC to "textC" as text
set theFormNameD to "textD" as text


--////設定項目ここまで


--////////////////このファイルのディレクトリ
tell application "Finder"
set theDefaultLocation to (container of (path to me)) as text
end tell
--////////////////UNIXパスに
set theDefaultLocationDir to (POSIX path of theDefaultLocation) as text
--////////////////読み込むテンプレートPDFのファイルまでのパス
set theTemFilePath to ("" & theDefaultLocationDir & theTemplatesFile & "") as text
--////////////////出力先のフォルダを作成
tell application "Finder"
try
make new folder at theDefaultLocation with properties {name:("OutPut")}
end try
end tell
--////////////////保存先としてパスにしておく
set theOutPutDir to ("\"" & theDefaultLocationDir & "OutPut\"") as text
--////////////////読み込みデータファイルまでのパス
set theDataFile to ("\"" & theDefaultLocationDir & "Data/" & theDataFile & "\"") as text
--////////////////データファイル読み込み
set theData to (do shell script "cat " & theDataFile) as «class utf8»
--////////////////読み込みデータを整形UNIX改行の場合
set AppleScript's text item delimiters to {"\n"}
set listData to (every text item of theData) as list
set numDataCnt to (count of listData) as integer
set AppleScript's text item delimiters to {""}
--////////////////読み込みデータを整形Mac改行の場合
if numDataCnt is 1 then
set AppleScript's text item delimiters to {"\r"}
set listData to (every text item of theData) as list
set numDataCnt to (count of listData) as integer
set AppleScript's text item delimiters to {""}
end if
--////////////////1行目が項目名なので2行目から読み込む
(* 1行目からデータの場合はここを1に*)
set numReadCnt to 2 as integer
--////////////////リピートの開始
repeat (numDataCnt - 1) times
--////////////////値がNULの場合に備えて初期化
set theLineData1 to ("") as text
set theLineData2 to ("") as text
set theLineData3 to ("") as text
set theLineData4 to ("") as text
--////////////////X行目を読み込む
set theReadListData to (item numReadCnt of listData) as text
--////////////////TAB区切りでリストに
set AppleScript's text item delimiters to {"\t"}
--////////////////リスト化
set listReadListData to (every text item of theReadListData) as list
set AppleScript's text item delimiters to {""}
--////////////////項目順に値に変更
set theData1 to (item 1 of listReadListData) as text --- 通番
set theData2 to (item 2 of listReadListData) as text --- 名前
set theData3 to (item 3 of listReadListData) as text --- メール
set theData4 to (item 4 of listReadListData) as text --- パスワード
log "theData1:" & theData1
log "theData2:" & theData2
log "theData3:" & theData3
log "theData4:" & theData4
--////////////////名前にスペースがある場合はスペース削除
set theData2 to doReplace(theData2, " ", "") as text
set theData2 to doReplace(theData2, " ", "") as text
--////////////////氏名でファイル名にする
set theSaveFileName to (theData2 & ".pdf")
--////////////////保存するファイルとしてパスにしておく
set theOutPutFile to ("" & theDefaultLocationDir & "OutPut/" & theSaveFileName & "") as text
--////////////////本処理
tell application "Adobe Acrobat"
----activate
--////////////////テンプレートファイルを開く
do script "app.openDoc(\"" & theTemFilePath & "\");"
--////////////////開いたファイルを処理
tell window 1
---theFormNameA
---取り出したデータを宣言する
do script "var theAText = \"" & theData1 & "\";"
---フォームにデータを渡す
do script " this.getField(\"" & theFormNameA & "\").value = theAText;"
---フォームのデータを取り出して(これは実際は不要)
do script "var theTextA = this.getField(\"" & theFormNameA & "\").value;"
---コンソールにログにする(これは実際は不要)
do script "console.println('theTextA: ' + theTextA);\n"
---theFormNameB
do script "var theBText = \"" & theData2 & "\";"
do script " this.getField(\"" & theFormNameB & "\").value = theBText;"
do script "var theTextB = this.getField(\"" & theFormNameB & "\").value;"
do script "console.println('theTextB: ' + theTextB);\n"
---theFormNameC
do script "var theCText = \"" & theData3 & "\";"
do script " this.getField(\"" & theFormNameC & "\").value = theCText;"
do script "var theTextC = this.getField(\"" & theFormNameC & "\").value;"
do script "console.println('theTextC: ' + theTextC);\n"
---theFormNameD
do script "var theDText = \"" & theData4 & "\";"
do script " this.getField(\"" & theFormNameD & "\").value = theDText;"
do script "var theTextD = this.getField(\"" & theFormNameD & "\").value;"
do script "console.println('theTextD: ' + theTextD);\n"
--////////////////フォームを統合
do script "this.flattenPages();"
--////////////////サムネイル削除
do script "this.removeThumbnails();"
--////////////////ファイルを保存
do script "this.saveAs(\"" & theOutPutFile & "\");"
--////////////////1秒まつ
delay 1
--////////////////ファイルを閉じる
do script "closeDoc();"
end tell
end tell
--////////////////カウントアップ
set numReadCnt to (numReadCnt + 1) as integer
--////////////////
end repeat


--------文字の置き換え
to doReplace(theText, orgStr, newStr)
set oldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to orgStr
set tmpList to every text item of theText
set AppleScript's text item delimiters to newStr
set tmpStr to tmpList as text
set AppleScript's text item delimiters to oldDelim
return tmpStr
end doReplace

-----------------------------------------------------------------------
スタッフ全員に何かを配布する場合なんかに使ってください。

ダウンロード - pdfformprint.zip


-----------------------------------------------------------------------


|

« 【Acrobat AppleScripts】フルスクリーン開始 | トップページ | 【Acrobat】Acrobatフォームでデータ印字(その4) »

Acrobat PDF Form Print」カテゴリの記事