*

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

関連記事

岩本町・東神田バザールの追加戦利品報告!第73回岩本町・東神田バザールで買ってきたの巻

はじめに 岩本町・東神田バザールは先週行ったのですが、追加で買い物をしてきました 定番のワイ

記事を読む

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

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

記事を読む

簡単手続きの2時間! HDDの丸ごとコピーの巻

あっさり、HDDの丸ごとコピーが出来てしまいました 最近、PCのタスクトレイから「ハー

記事を読む

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

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

記事を読む

安い! 大阪出張から高速バスで帰ってみたの巻

先日、1泊2日で大阪出張に行ってきました あ、金曜日の出張だったんで、1泊したのです

記事を読む

静岡駅から渋谷マークシティまで初めて高速バスで帰ったの巻 渋谷・新宿ライナー静岡号 静岡駅

一言 静岡から東京までのバスの旅、快適でした はじめに 静岡県掛川市から東京に戻るのに利用

記事を読む

Kindle本を誤発注!その時、どうする?電話で解決したの巻

はじめに 知らぬ間にKindle本で誤発注が発生! 合計9冊! その時にKindle本を返

記事を読む

簡単掃除でキーボードをきれいに! キーボード掃除 キートップ引抜工具

キーボードを掃除したのは初めて、入手してから10年ぶりぐらいです この記事を見て、キー

記事を読む

オークション写真の背景にピッタリ! プリントグラデーションバクペ60cmグレー(23933)開封の儀

簡単に言うと色つき厚紙です 断捨離で、いろいろ不要なものが出てきます と、同時に、こ

記事を読む

簡単交換! オムロン 極細マイルドブラシ SB-080

歯ブラシ部分の交換は簡単です 歯磨きに電動歯ブラシを使用しています 使っている電動歯

記事を読む

PC

PC

PAGE TOP ↑