Libre Office DrawでPDFを直接編集
書類はPDFでダウンロードしてくださいと言われる事が多くなってきました。それをダウンロードして利用する場合、印刷して、ボールペンで記入して、郵送する。なんか腑に落ちません。さらに家にプリンタがなければコンビニに行ってプリントしないといけません。
せっかく電子データなんだから、PCで加工してそのままメールで転送したいと思いませんか?
筆者も最近まではPDFの加筆修正には高価なソフトが必要だと思っていました。しかしそれができるフリーアプリが存在しましたのでご紹介します。
途中「Microsoft Print to PDF」という印刷のエミュレートでPDFを作成する機能を使います。Windows10を使っている方はそれを使えばいいですが、そうでない方はPrimoPDF等をご利用ください。 また、PDFをJavaScriptのコードから編集したいと考える方は別記事で、Node.jsやブラウザ上で使えるPDFライブラリ(PDF-LIB)の紹介もをしていますのでよろしかったら御一読ください。
PDFの編集
ここではこのブログでも何度か紹介しているLibre Officeでの編集方法を紹介します。また、INKSCAPEでも可能です。
サンプルとして国税庁の「給与所得者の配偶者控除等の申告書類」を使用しました。(この書類は編集できるエクセルファイルも用意されているようですので本当に必要な場合はそちらを利用もご検討ください)
Libre Office DrawはPDFの編集ができます。通常ドラックアンドドロップか開くの画面からPDFファイルを開くと、そのままPDFを編集できるようになります。
今回のファイルの場合は、線や文字がそのままPDF化されていたのでそのまま扱えますが、ファイルの中には線や文字が画像となっている場合もあります。
違いは枠線をクリックしてみた際に、枠線だけ選択されるようなら「そのままの状態」、ほかのパーツも巻き込んで全体が選択されるなら「画像の状態」となります。もし、画像の状態だった場合は、次の作業の説明を読みとばして、ここから読み始めてください。
線や文字がそのままPDF化されていれば、機能を使って必要項目を追加していってもいいのですが、問題が起きることがあります。
問題1 文字がずれる
筆者の環境で先のサンプルPDFを開いてみたところ文字がずれてしまいました(上)。Adobe Acrobat Readerで開いて比べてみると文字の形状も違うようです(下)。おそらくPDFで使われているフォントが自身のPCに無いためだと思われます。
こうなる場合は必要なフォントをインストールしましょう。しかしフォントは種類によっては有料ですし、場合によって高価です。またフォントが原因ではない場合でずれる事もあるようです。そのような場合はPDFを直接編集するのをあきらめて、PDFを一旦画像として取り込みます。
Libre Office DrawからPDFを画像として取り込む場合は「挿入」から「画像」を選択します。その後のダイアログボックスから目的のPDFを選択してください。
開いているページに合わせて、PDFがリサイズされて挿入されますので元に戻します。
まず、ページをPDFを同じサイズにして上下左右の余白をすべて0にします。
次に、PDFを右クリック→「元のサイズ」とすると元のサイズに戻ります。
さらに、大きくなった画像を右クリック「位置とサイズから」位置を(0,0)にして、「保護」の「位置」にチェックを入れます。
この上からテキストボックスを使って文字を入れます。
もし、文字間隔がマス目にあわなかったら文字列を選択した状態で右クリックをして「文字の書式」を選択「位置」のタブ内の「文字間隔の調整」で調整をします。ペアカーニングとは文字の組み合わせによって文字の間隔を自動調整するものです。
オートシェイプ(図形)も入れられますので、チェック印等はそれで作成してください。
これですべて入力し終えたら、ファイル→エクスポート→保存形式でタブをPDFにして保存します。
この後表示されるエクスポートのオプションは初期表示の値でOKです。
そうして作業をしてAdobeで作成したファイルを開こうとすると、エラーになってしまいました。ファイルはできているようなので、PDFを開こうとすると背景に設定している部分が丸ごとなくなってしまいました。
問題2 保護されたPDFはエクスポートができない
おそらくPDFに保護がかかっていることが関係しているのではないかと思います。回避するにはエクスポート時のファイル形式をGIFなどの画像形式にするか、印刷エミュレートのMicrosoft Print to PDF等を使ってPDF化する方法があります。
そうして印刷してみると背景側の文字がにじんでいるのが確認できると思います。枠や文字を画像として処理したのが理由です。
もともとのPDFが画像として保存されていたのならこれ以上の対応策はありませんのでこれで完成となります。しかし、PDFが文字とシェイプ図形だった場合は綺麗に印刷する方法が残されています。
問題3 文字がにじむ
文字がにじむ対策として入力項目だけをPDF化し、後で2ファイルを合成する方法をとります。
項目の入力が終えたら背景を選択した状態でDeleteキーを押します。そうすると入力した文字だけ残ります。
ここでLibre Office DrawよりPDFをエクスポートしたいところでしたが、どうやらこのプログラムからPDFをエクスポートすると背景画像が白のべた塗りにされてしまうようです。
そこでMicrosfot Print To PDFを使います。印刷メニューよりプリンタの選択で「Microsfot Print to PDF」を選択し「OK」ボタン後に現れるダイアログから適当なファイル名を付けて保存してください。Microsfot Print to PDFが使えない場合は印刷エミュレートでPDF化できるツールで代替してください。(もし元データの背景が透明化されていれば出力順序を変えることでも回避できます)
また先に紹介した、INKSCAPEの方では保存時にPDFを選択することで(デフォルトはSVG保存)透過性を保持したまま保存できるようです。
2つのPDFファイルを1枚に重ねるWebツールはリンク先のページでご用意していますのでよろしかったらご利用下さい
Ghost ScriptでもPDFを作成可能
もし、Microsoft Print to PDFが使えなく、ほかにめぼしい印刷エミュレート型のPDFコンバータも見つからない場合はGhostScript(無料)を使ったPDF変換も可能です。
これはPDFを記述するための言語で、別の記事ではGhostScriptでPDFを画像化しましたが、PostScript形式の印刷データをPDF化するのにも利用できます。また、Linuxにプリンタをインストールする際にはCUPSの依存ライブラリとしてインストールされたりもします。
Ghostscriptのインストール
こちらのページよりAGPL版のもので環境にあったものをダウンロードしてください。
Windowsでのインストール方法はダウロードしたファイルをダブルクリックで実行してウィザードに従うだけです。ここでは「C:¥Program Files¥gs¥gs9.27」にインストールされたとします。
パスを通す
このアプリはPowerShellやコマンドプロンプト経由で使用するのでパスを通して、現在のフォルダがどこにいてもプログラム名で実行できる状態にします。OSにGhost Scriptをインストールしたフォルダ直下の「libとbinをパス(Path)に追加します。(C:¥Program Files¥gs¥gs9.27¥libとC:¥Program Files¥gs¥gs9.27¥bin)
「環境変数」→「PATH」の行を選択→「新規ボタン」→フォーカスが当たった場所に先ほど移動させたフォルダの場所を入力します(フォルダ名を含みます)。
Windows10より前の環境だと、複数の環境変数が横一列につながって表示されると思います。この場合は;(半角セミコロン)を末尾に付け加えてフォルダの場所を入力します。
OSにPostScript対応のプリンタを設定する
PDF化につかうプリンタドライバはPS(PostScript)対応のものであればなんでもいいです。機械がある必要はありません。プリンタメーカーのページからダウンロードしてきてもいいですし、Windowsならたいてい何かしらPS対応のプリンタドライバが入っています。
「設定」→「デバイス」→「プリンターとスキャナ」→「プリンターを追加する」→「プリンタが一覧にない場合(表示されるまで少し時間ががかかります)」→「ローカルプリンタまたはネットワークプリンタを手動設定で追加する」→次のポート選択の画面で「ファイルに出力」を選択してください。(後からでもプリンタのプロパティ/ポートから変えられます)
プリンタのインストールで一覧から「PS」(XPSではありません)の文字を頼りに対応のプリンタを探してください。設定時、共有や通常使うプリンタにはしません。とりあえず選択してみて、この後の作業でPDF化が失敗したら別のプリンタを探しましょう。
PSプリンタで印刷
とりあえず何でもいいので印刷してみます。するとファイルの出力先を聞かれるので入力してOKを押します。ここでは「d:¥pdf¥test.ps」としました。まだこの段階ではPDFにはなっていません。
GhostScriptでPostScriptファイルをPDFに変換
GhostScriptをPowerShellかコマンドプロンプトで起動させせます。スタートメニューのWindows PowerShellにPowerShell、Windowsシステムツールにコマンドプロンプトがいるのでどちらか起動してください。そのあと、PostScriptファイルを保存したフォルダ(ここではd:¥pdf¥)に移動します。方法は
となります。(PowerShellの時は「/d」は不要です)。フォルダの場所は決まっていませんが、システムフォルダ等だとセキュリティの都合でうまくいかないことがあります。
フォルダに移動したら次のようにコマンドを入力します。
用紙方向等やサイズはプリンタドライバの設定から操作する必要があります。筆者の場合はプリンタ側でA4横指定ができなかったのでアプリ側でページを90度回転させて印刷しました。どうしてもうまくいかない場合は別のプリンタを使ってみるのも手です。プリンタ選択の画面でWindowsUpdateを押すとさらにプリンタを取得します(結構時間がかかります)。
印鑑が欲しいという場合は、フリーツールを使って認印の印影を取得してPDF化する方法も紹介していますので、よろしかったら参考にしてください。