*

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写経開発

Perl – CAM::PDFで複数のPDFを結合する – Qiita [キータ]

フォントの色で PDF::API2 Perl モジュールの設定方法

PC

関連記事

断捨離で不要になったスキャナをソフマップに売りに行ったの巻

結論から言うと、売れませんでした、残念 この連休は部屋のプチ断捨離中 そんでもって、

記事を読む

本当に1時間で車検が終わった! 車検のコバック

行ってきました、車検のコバック 車検証、自賠責証書、自動車税通知の3点セットを持って、

記事を読む

完熟プチトマトを1つ収穫!今週のプチトマトとキュウリ 永田農法

今週のできごと トマト1つが完熟しました 長かった 収穫して、お弁当に投入です キュウリ

記事を読む

ふるさと納税第一弾!焼肉ジンギスカンセットのお礼の品が北海道豊富町からやって来たの巻

はじめに ふるさと納税のお礼の品がやってきました 実際に寄付して品物が来るとちょっと感激しま

記事を読む

木場公園でブログ書きのノマドをしてみたの巻

はじめに 近所の木場公園でノマドをやってみました 普段は自宅でブログを書くのですが、気分転換

記事を読む

レンタサイクルの壮観な眺め! 江東区臨海コミュニティサイクル 有明

本日、仕事で有明(国際展示場前)に行ったらレンタサイクルの壮観な眺めを発見 で、帰宅してネ

記事を読む

今回もお得にお買い物! 2016年春夏 第74回岩本町・東神田ファミリーバザールに行ってきて戦利品公開の巻

はじめに 今年も岩本町のファミリーバザールの季節となりました 例年楽しみにしています 早速

記事を読む

6年経過でも劣化なし! 自作ホットイナズマ

車検の続きです 実は自作のホットイナズマをバッテリに装着しているのです このホットイナズ

記事を読む

静岡、浜松ぶらり旅!東京→浜松 青春18きっぷ 2014年冬 その1

一言 今回は静岡、浜松で途中下車しました はじめに 今年もお正月の帰省は青春18きっぷで、

記事を読む

でっかいけど便利! 大型断裁機 ペーパーカッター YG-LN BA58A4 開封の儀

はじめに 本が多くなり、整理しなければならなくなったので、遅ればせながら、断裁機を買いました

記事を読む

PC

PC

PAGE TOP ↑