Acrobat PDF Form Print

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

Macでデータ印字って言うと
1:イラストレーターの変数を利用したデータ印字
2:インデザインのデータ結合を利用したデータ印字
3:ワード・エクセルやLibreOfficeを利用した差し込み印字
4:宛先印字に特化した専用アプリによるデータ印字
なんかがあります。
それをAcrobatでやります。簡単です

順番に見る場合はこちらからみてください
-----------------------------------------------------------------------
タブ区切りテキスト+PDFフォームで
1_20210817205801

テキストデータをPDFフォームに渡して フォームをフラットにして出来上がり
2_20210817210001

-----------------------------------------------------------------------
手順
1:データを用意する
2:PDFフォームを用意する
3:スクリプトを用意する
4:実行

なります
続く

|

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

1:データを用意する
スクリプトで『タブ区切りテキスト』を利用しますので
コピペでタブ区切りテキストを作ります。
私は普段はJedit ΩかVisual Studio Codeを使っていますが
サンプルはCotEditorです。
-----------------------------------------------------------------------
12
-----------------------------------------------------------------------
サンプルデータはこちらを利用しました

ダウンロード - data.zip

-----------------------------------------------------------------------
続く

|

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

2:PDFフォームを用意する

こちらも簡単
データ印字したい項目分のフォームを作るだけです
もちろん
フォームのID(名前)はユニークである必要があります。
-----------------------------------------------------------------------
飾りっ気ないですが
基本的にはこんな感じ

23

-----------------------------------------------------------------------
サンプルPDF

ダウンロード - templates.pdf

|

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

3:スクリプトを用意する

データテキストを読み込んで(サンプルは50件あります)
1件づつ処理します(件数は『改行』でリスト化します)
1件につき4つタブで区切ったデータをそれぞれ定義して
(タブ毎にリスト化します)
4つの値を取り出してテキストとして
フォームに渡す

いった感じになります

-----------------------------------------------------------------------
データをPDFフォームに渡す部分はこんな感じ
theTextA=フォームに渡すテキスト

tell application "Adobe Acrobat"
do script "var theTextA = this.getField(\"渡すフォーム名はここに\").value;"
end tell

-----------------------------------------------------------------------
実行するとこんな感じ

-----------------------------------------------------------------------
出来上がりPDFはデータから取った名前になって保存されます

Screencapture-20210817-220657

|

【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


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


|

その他のカテゴリー

Accessibility AccessibilityCheck AccessibilityForm AccessibilityInDesign AccessibilityPDF Acrobat Acrobat Action Acrobat Annotation Acrobat AppleScripts Acrobat Character Acrobat Layer Acrobat PDF Embed API Acrobat PDF Form Print Acrobat Plug-ins Acrobat Portfolios Acrobat Print AcrobatBarcode AcrobatDialog AcrobatForm AcrobatJS AcrobatMenu AcrobatPDF AcrobatStamp AcrobatYouTube AddressBook Adobe Adobe InDesign Adobe Photoshop AdobeAppleScript AdobeBridge AdobeIllustrator AdobeJSX aed Alfresco Android AnimationGif Apple AppleScript AppleScriptBasics AppleScriptCharacter AppleScriptColor AppleScriptDroplet AppleScriptErrorNum AppleScriptFolder AppleScriptFontBook AppleScriptRename AppleScriptTools AppleSymbols Applications Barcode Barcode2D BarcodePostal BetterHTMLExport Book BOX Browser buzz Certificates CharacterEntity CharacterSets Colors Cool Site CSS Cutting DecoMail DecorationMail Design Desktop Diff DJ dmg DNS Documents Download DTP eBook Editer eMail Envelopes ExifTool Facebook FFmpeg File System Fonts FontsTool FontsWeb FOOD FormPrint ftp Gadget Gif Animation Google Google Chrome Enterprise HexEditor HTML info iPhoto ISBN ISO iTunes iWork iWorkNumbers iWorkNumbersCalendar iWorkNumbersTimecard iWorkPages JavaScript JeditX JeditX Regexp JeditXAppleScript JIS jquery Letterpress Library logo Mac Admin Mac Archiver Mac Browser Mac Browser Plugin Mac QuickLook Mac Setup Mac Spotlight Mac Video Map Memo Microsoft Teams Mobby mobileconfig Moto Movies Music Network Basic ntp OCR Office OfficePowerPoint OSX Paint Pantone Paper PDFlib Permission Photo Pictograms Print Public Python QuickLook QuickTime QuickTimeSetting QuickTimeSound Real Media ReName ResourceFork ruby Sample Screen ScreenCast Search Security SEO Sharing SLAResource Sound Spotlight Stamp SWF TCC.db Tutorial PSD TV Twitter Typography Unicode Utilities Video WEB APP WebFont Wedding Windows WindowsMedia XML XMP XPS YouTube YouTube Rss