PDFの作り方とフォームで自動集計をする方法-JavaScript

PDFの作り方とフォームで自動集計をする方法-JavaScript

人に何か情報を渡す時、最近ではPDFを使う事が多くなりましたね。

その理由は、多種多様な端末が使われるようになったからです。Windows、Mac、iPhone、iPad、Androidなど、OSも違えば画面の大きさも違うわけです。

そのためワード(WORD)やエクセル(EXCEL)などで、ドキュメントを作って渡しても、同じように表示されない、同じように印刷されないという問題が起こります。

でも、PDFにしておけばどんな端末で開いても、基本的には同じデザインで表示されます。ユーザーはそれを拡大縮小して見たり、印刷したりします。

では、PDFはどうやって作るのでしょうか?

この記事では、PDFファイルの簡単な作り方と、PDFファイルの開き方、フォーム形式にしたときの自動集計の方法を知ることができます。

PDFファイルの作り方

Windows:保存の時にファイルの保存形式を変更

MicrosoftOfficeであればWordでもExcelでも方法は同じです。ファイルを保存する時に、「ファイルの種類」で「PDF」を選ぶだけです。

これだけで、作成してるドキュメントがPDFファイルになります。再び編集する必要があるなら、WORDまたはEXCELの形式でも保存しておくようにしましょう。

他のOffice系ソフトでも同じような機能があります。無料のソフトでもPDF保存は可能です。

Windows:印刷の時にプリンターの種類を変更

こちらも、MicrosoftOfficeがインストールされていればですが、印刷の時に「Microsoft Print to PDF」を選ぶことで、印刷を実行すればPDFファイルで保存する場所を聞いてきます。場所を指定して、PDF形式で保存することができます。

再び編集する必要があるなら、WORDまたはEXCELの形式でも保存しておくようにしましょう。

iPad:ファイルを保存する時にPDF形式を選ぶ

iPadの場合、いろいろなソフトがあります。保存の仕方はそれぞれなのですが、pagesで操作した場合以下のようになります。

ドキュメントを作成して、右上の丸いマークをタップして、「書き出し」を選択します。この時、形式を選択できるのでPDFで保存すればPDF形式になります。

他のソフトにも書き出しの際に形式を選択できる場合が多いので、ドキュメントを作成する前に、その機能があるか確認しておきましょう。

この場合も、再び編集する必要があれば専用形式で保存します。人に渡すときだけPDFに変更するということになります。

Android:ソフトによって操作が異なる

AndoroidのスマホでMicrosoftWordでドキュメントを作った場合、ファイルの保存からはファイル形式が変更できません。しかし、MicrosoftOfficeのオンラインサービスを使う事によって、PDF化ができます。

「PDFとして共有」を選択すると、共有の画面になって、そこからデバイスかオンラインストレージに保存したり、誰かに送ったりできます。

ただし、この操作を行うためには、Wi-Fiかモバイルインターネットでインターネット回線につながっている必要があります。

AndroidではPDF化に対応していないソフトも多いので、PDFファイルはiPadかWindowsパソコンで作るのか良いかと思います。

PDFファイルを開くソフト

PDFファイルはほぼどの端末でも開くことができます。

WindowsでPDFを開く

色々なソフトが対応していますが、無料のソフトは表示、印刷、フォームへの入力を保存、注釈の記入くらいしかできません。フォームの変更などは有料ソフトが必要です。

無料閲覧ソフトは以下のものが一般的です。

  • Microsoft Edge(ブラウザ)
  • Google Chrome(ブラウザ)
  • Adobe Acrobat Reader DC

Edgeは他の対応ソフトを入れた後は関連付けが消えて、開けなくなることがあります。ドラッグアンドドロップでもエラーが出る場合は、右クリックしてアプリケーションを指定すれば開けます。ただ、フォームの部分にデータを入力する場合は、自動計算機能が埋め込まれていても処理が動かないことがあります。

Chromeはインターネット上から直接開く場合や、ドラッグアンドドロップで開く時、閲覧することができます。フォーム部分にデータを入力する場合も、基本的にはエラー無く動くようです。

Acrobat Reader DCは無料のソフトです。ダウンロード時にマカフィーのアンチウイルスがバンドルされたりするので、不要のない場合はチェックを外しましょう。

iPad、iPhoneでPDFを開く

iPad系アプリは秀逸で、かなりのソフトが閲覧に対応しています。一般的なものは以下の通りです。

  • Safari(ダウンロード後はファイルのダウンロードにある)
  • ファイル
  • iBooks
  • Documents
  • Adobe Acrobat Reader

閲覧はどれでも可能なのですが、Safari、ファイル、iBooksで開く時は閲覧のみしかできません。フォームなどの記入はできなくはないのですが、スクリプトが全く動かなかったり、フォームの項目が消えたりします。

Documentsはフリーのアプリで、ファイル管理にも優れたアプリです。PDFのスクリプトも正しく動きました。

Adobe Acrobat Readerは心配する必要は全くありません。そもそも、PDFフォーマットはAdobe社が作ったものだからです。

AndoroidでPDFを開く

PDFの閲覧においては、Androidも秀逸です。一般的に閲覧できるソフトは以下のものです。

  • ドライブPDFビュアー(Google)
  • Adobe Acrobat
  • PDFビュアー(Dropbox)

AndroidはそもそもGoogle製なので、Googleドライブ、ChromeもPDFビュアーもセットで入っています。なので、最初から閲覧可能です。

でも、やっぱりPDFはAdobe Acrobatが一番ちゃんと動きます。有料ソフトは別にしても、無料で使うなら私はこれ一択です。

PDFを編集するためのソフト

他のソフトで作成したドキュメントをPDFフォーマットにするのは最近ではいろんなソフトで実現できるようになりました。

しかし、PDFのフォームを作ったり、複雑な計算でプログラミングをしたり、PDFファイルを編集するには有料ソフトが必要です。

Adobe : Acrobat Standard DC

Adobe社がPDFフォーマットを作ったという話がありましたが、PDFを触るなら純正ソフトが一番です。Adobeの回し者ではありませんが、インターフェースも機能もこれが一番です。

最新ソフトはAdobe社のホームページからダウンロードができます。税別で年間一括払い16,560円です。Pro版もありますが、普通の用途であればStandard版で十分です。

私は、今までAdobe Acrobat 7を使い、その後はAcrobatXを使っていました。

使いやすいのは良いのですが、Adobe社がすべての製品をサブスクリプションライセンス型に変えてしまいました。つまり、毎年お金を払い続けないと、使えなくなってしまうのです。古くなって買い替えようと思ってから変更に気づきました。

Tracker Software Products : PDF-XChange Editor Plus

PDF-XChanger Editor Plusを使い始めたのには訳があります。

Adobeのライセンス変更の件があったので、ライセンスが切れないソフトを探しました。こちらのソフト、 同じサブスクリプション型ではあるのですが、 ライセンスが切れても使えなくならない。

しかも、Adobe製品よりさらに詳細なコントロールができて、タブで切り替えができて複数ファイルも開きやすい。ということで、去年からこちらのソフトを使っています。

フォームなどのプロパティの設定がAcrobatより狭くて操作がしにくいのですが、それ以外の操作性の良さが上回りました。

年間費用も54.5ドルとAcrobatの3分の1で済みます。とはいえ高価ですが、個人的にほかの業務でPDFをよく使うのでなくてはならないソフトなので、仕方ありません。

PDFフォームで集計を行う方法

私はiPadをApplePencil対応に買い替えて以来、PDFへの書き込みはiPadしか使わないのですが、編集はWindowsで行う必要があります。

どのソフトでも設定方法は同じで、どこで操作を行うかが異なるだけです。今期は、PDF-XChange Editor Plusで例を示します。

例として、週ごとのブログ、Twitter、Instagramの更新数を記録し、月合計と月平均を自動計算するフォームを作ります。

Wordで元の表を作って、その後表のセルに入力域を設定しています。表の中は全て数値(番号)のフィールドに設定しています。

自動集計:合計、平均

メニューバーから、フォームタブの「選択フィールド」を選び、赤マルの位置の合計欄を選択します。

そうすると、右端のプロパティ欄の一番下に「計算値」の項目が表れ、「計算」の欄で「合計(+)」を選択します。

続いて、その直下の「フィールド」欄を設定します。右端の小さい四角のボタンをクリックします。

選択画面が現れ、どの欄を合計するかをチェックボックスで選択します。

これで、選択したフィールドの合計値が合計欄に自動計算されて表示されるようになります。

計算方法で「平均」を選んでいる場合は、洗濯した項目の平均値を自動計算します。

ただし、この平均値は5カ所選択していれば5で割るという単純なものです。

そのため、「2,2,0,2,2」と入力されれば、「8/5=1.6」になりますが、入力されていなければ「8/4=2」と表示して欲しい場合があります。

例えば、ある月は4週までしかないので、5週に値を入力しないという場合があります。

このようなフレキシブルな計算操作は「平均」を選んでも行えません。

計算式を設定

PDFではそういう場合に備えて、特別な機能が用意されています。

「計算」の欄で「カスタムアクション」を選べば、JavaScriptで計算をさせることができる。

ただ、このJavaScriptは余りにも頭が悪く、普通のJavaScriptのように動いてくれない。独自のルールや関数があるようで、非常に使いにくい

インターネットを調べまわっても、情報はほとんどないので、実際に動いたコードをお教えします。これを参考に、他のプログラムも作れるかもしれません。

var counter=0;
if((AFMakeNumber(getField("B1").value)>=0)&&(getField("B1").valueAsString!="")){
	counter++;
}
if((AFMakeNumber(getField("B2").value)>=0)&&(getField("B2").valueAsString!="")){
	counter++;
}
if((AFMakeNumber(getField("B3").value)>=0)&&(getField("B3").valueAsString!="")){
	counter++;
}
if((AFMakeNumber(getField("B4").value)>=0)&&(getField("B4").valueAsString!="")){
	counter++;
}
if((AFMakeNumber(getField("B5").value)>=0)&&(getField("B5").valueAsString!="")){
	counter++;
}
if(counter>0){
	event.value=AFMakeNumber(getField("BT").value)/counter;
}else{
	event.value=0;
}

Blogの1週から5週はB1からB5です。合計はBTで、平均はBAとしました。

それぞれの項目に値が入っており、0以上の場合はカウンターをプラスし、最後に合計値をカウンターで割るという単純な計算です。5週間すべて入力が無ければ、平均値は0になります。

AFMakeNumber関数は、数値化するためのIsNumericのような関数です。

入力欄にvalueAsStringを使用しているのは、数値フィールドにしたため入力されていなくても0と認識されるようだったので、valueから変更しました。ただ、フィールド設定を数値でなく文字にしてもこの対応が必要でした。

まとめ:自動計算はやるもんじゃない

私は自動計算をどうしてもさせたい場面があったので、動作する方法を調べて、検証しました。

しかし、ソフトによってスクリプトが動かないこともあり、本当に複雑な計算は多分行うことができません。スクリプトが複雑になりすぎ、恐らく動かないと思います。

JavaScriptの規則に従って記述すれば動くというわけでもなく、専用の関数しかなかったり、動きもかなり制限されるようです。

そのため、自分で手計算して入力した方がよっぽど楽です。どうしても計算させたい場合だけ、スクリプトとを書くことをお勧めします。そうでなければ、時間の無駄だと思います。