PerlでPDFファイルに文字を上書き追加してみたの巻
公開日:
:
エクスペリエンス
一言
既存のPDFファイルに文字列を上書き追加する必要があったので、その備忘録
手間は掛かったけど、Google先生に聞き、簡単でした
はじめ
PDFファイルに文章を上書き追加する必要になりました
簡単、かんたんと思っていたら、コツがあるので、その備忘録
PDFによってはモジュールが読み込めないので、別モジュールで読み込む必要がありました
仕様
【機能】
- PDFファイルの上部に別ファイルの文章を上書き追加する
【INPUT】
- 1.pdf:上書き追加するPDFファイル
- text.txt:上書き追加するPDFファイル
【OUTPUT】
- addtext.pdf:上書き追加されたPDFファイル
【モジュール】
- CAM::PDF:PDF編集操作モジュール
- PDF::API2:PDF作成モジュール
プログラム
# #機能: # PDFファイルに任意の文字列挿入 # #INPUT: # 1.pdf:文字列を挿入するPDF # text.txt:挿入する文字列ファイル(UTF8ファイル) # #OUTPUT: # addtext.pdf:文字列挿入後のPDF # use strict; use warnings; use PDF::API2;#cpan install use CAM::PDF;#cpan install use Encode; #テンポラリファイル my $tmpfile="tmp.pdf"; # #PDFバージョン変換 # # 結合するPDFのファイル名を指定してインスタンス生成 my $pdf1 = CAM::PDF->new('1.pdf'); # 結合したPDFを出力するファイル名を指定 $pdf1->cleanoutput($tmpfile); # 結合したPDFを出力 $pdf1->toPDF(); # #テキスト追加 # my $pdf = PDF::API2->open($tmpfile); my $page = $pdf->openpage('1'); #フォントオブジェクトを生成 my $font = $pdf->cjkfont("KozGo"); #テキストオブジェクト?を生成 my $text = $page->text(); #テキストの位置を設定 $text->translate(50, 800); #フォントとサイズを設定 $text->font($font, 15); #フォントカラーを設定 $text->fillcolor('#FF0000'); #文字列設定 my $string; #挿入テキスト読み込み open(IN,"text.txt"); while(<IN>){ #UTF-8フラグを立てておく $string = Encode::decode("UTF-8", $_); #テキストを描写 $text->text($string); #行の高さを指定して改行(y座標が下から上なので、マイナス値にする!) $text->cr(-15); } close(IN); #ファイル保存 $pdf->saveas("addtext.pdf");
解説
プログラムの流れはPDFファイルを読み込んで、テキストファイルの内容をPDFに書き込んでいるだけの簡単プログラム
最初はPerlのPDFモジュールのPDF::API2のみだけで、やろうとしたけど、PDFのバージョンによっては、読み込めないケースも判明しました
エラーの意味が初め、わからなかった
そのため、別のPDFモジュールのCAM::PDFも利用して、バージョンコンバートをかけて保存し、保存したPDFファイルに対して操作するようにしています
まとめ
直接解決するサイトは見つからなかったけど、簡単でした
まあ、プログラムのつなげ合わせなんだけどね
参考サイト
Perl で PDF生成(PDF::API2)|カタテマ|ウェブマーケティングの株式会社オーク
固定書式なら、perlによるPDF生成はPDF::API2がいいかも – end0tknrのkipple – web写経開発
PC
関連記事
-
-
実録!リアルタイム!AliExpressで帽子が発送されたの巻き
はじめに AliExpressで注文した帽子が発送されたようです 目的 AliExpres
-
-
キュウリの植替え成功!無事に生育中!今週のプチトマトとキュウリ 永田農法
今週のできごと 今週はプチトマトを収穫しました 丸くて小さい1個だけだけど、甘くて美
-
-
突然やってきた! 今なら1,000ポイントプレゼント! 楽天マート
楽天マートって生協の宅配システムと同じです 突然やってきましたw 楽天マートのカタロ
-
-
【公開】2018年春も安定の混雑!リーズナブルな服や靴、鞄!そして戦利品公開!第78回ファミリーバザール
【はじめに】 今年も行ってきました、岩本町東神田ファミリーバザール 相変わらず混んでいま
-
-
6年経過でも劣化なし! 自作ホットイナズマ
車検の続きです 実は自作のホットイナズマをバッテリに装着しているのです このホットイナズ
-
-
マラニック開始!山手線一周ラン!東京駅から上野駅まで3.75kmを走ったの巻
はじめに この連休に山手線一周ランを計画しました 約40キロのランとなります 私の実力では一日
-
-
今回もお得にお買い物! 2016年春夏 第74回岩本町・東神田ファミリーバザールに行ってきて戦利品公開の巻
はじめに 今年も岩本町のファミリーバザールの季節となりました 例年楽しみにしています 早速
-
-
これも便利!添付ファイル付き返信メールをマクロ(VBA)で作成するの巻
はじめに VBAで添付ファイル付きの返信メールを作成しようとしたところ、一発では作れませんでし
-
-
今週はネットを張った!今週のプチトマトときゅうり 永田農法
今週の出来事 きゅうりが大きくなってきたので、ネットを張りました これで生育に加速が付くと良
-
-
【公開】ファミリーバザール2016年冬の陣!衣料、日用雑貨がリーズナブル!第75回岩本町・東神田ファミリーバザールで買ってきたの巻
はじめに 今回も2016/11/25~11/27に開催された第75回岩本町・東神田ファミリ