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
関連記事
-
-
帰省したには帰らなきゃいけない! 浜松→東京 青春18きっぷ その4
電車に乗っている時間間隔が麻痺していますw 帰省したには、帰らなければいけません 一
-
-
今回もお得にお買い物! 2016年春夏 第74回岩本町・東神田ファミリーバザールに行ってきて戦利品公開の巻
はじめに 今年も岩本町のファミリーバザールの季節となりました 例年楽しみにしています 早速
-
-
オークション写真の背景にピッタリ! プリントグラデーションバクペ60cmグレー(23933)開封の儀
簡単に言うと色つき厚紙です 断捨離で、いろいろ不要なものが出てきます と、同時に、こ
-
-
今年のふるさと納税はモンベルのバウチャーとカニ!長野県小谷村 北海道釧路市
はじめに 去年のふるさと納税は牛肉、うなぎ、ジンギスカンでしたが今年はモンベルとカニでした
-
-
WAONがお得!イオンカード入会の巻 マックスバリュー
はじめに WAONのポイント還元がお得です どのくらいお得? 消費税が5%から8%にアップ
-
-
安い! 大阪出張から高速バスで帰ってみたの巻
先日、1泊2日で大阪出張に行ってきました あ、金曜日の出張だったんで、1泊したのです
-
-
部屋もシンプルで駅から近くて便利!掛川ステーションホテル 掛川
一言 駅近くのシンプルで清潔なホテルでした はじめに 掛川駅前のホテルです 会社の人の送
-
-
リーガルの靴を修理に出してきたの巻 リーガル日本橋店
はじめに リーガルのかかとが壊れちゃったので修理に出してきました 流れ 修理する靴を店舗に
-
-
早い! 車検証と車検を入手 車検のコバック
やってきました、車検証 車検のコバックで先日、検査を受けました 無事通過で、あとは車検が
-
-
初めての販売! 本の断捨離 18冊を売ってきた! BOOKOFF 木場葛西橋通り店
ブックオフに18冊売って220円でした 夏休みに部屋の整理は続きます 今日は本の
