入力フォームつきのPDFにデータ入力して別名保存するAppleScriptです。
PDFフォームといっても、別に入力したその場でどこかのサーバーにデータが送信されるわけでもなく、ただ紙に筆記用具で名前を書き込むがごとく、記入欄にデータが入力されたPDFが出来上がるだけです。
サンプルのフォーム入りPDFをみつくろって、チェックボックス項目だけ値を変更して、別名保存してみました。
本AppleScriptではフォームのうちチェックボックスのものの値だけ書き換えてみましたが、テキスト入力型の記入欄に文字データを突っ込むのも難しくはありません(多値ポップアップメニューからの選択がめんどくさい)。
AppleScript名:PDFフォームに入力して別名保存 |
— Created 2019-12-05 by Takaaki Naganoya — 2019 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "Quartz" property |NSURL| : a reference to current application’s |NSURL| property PDFDocument : a reference to current application’s PDFDocument set aHFSPath to (choose file of type {"com.adobe.pdf"} with prompt "Choose a PDF with Form") set aPOSIX to POSIX path of aHFSPath set aURL to (|NSURL|’s fileURLWithPath:aPOSIX) set aPDFdoc to PDFDocument’s alloc()’s initWithURL:aURL set pCount to aPDFdoc’s pageCount() set firstPage to (aPDFdoc’s pageAtIndex:0) set anoList to (firstPage’s annotations()) as list if anoList is not equal to {missing value} then –指定PDF中にAnotationが存在する場合のみ処理 repeat with i in anoList set aName to (i’s fieldName()) as string if aName ends with "Check Box" then set aState to (i’s buttonWidgetState()) as boolean if aState = false then (i’s setButtonWidgetState:true) set bState to (i’s buttonWidgetState()) as boolean end if end if end repeat end if –PDFの保存先のファイル名を入力させる(あらかじめパス文字列を作成しておいてもよい) set newFileName to POSIX path of (choose file name with prompt "Input File name to save") if newFileName does not end with ".pdf" then set newFileName to newFileName & ".pdf" end if –フォーム内容を変更したPDFを指定のパスに新規保存 set pdfRes to (aPDFdoc’s writeToFile:newFileName) as boolean |