コマンドラインを介したPDFへのテキストオーバーレイ

コマンドラインを介したPDFへのテキストオーバーレイ

次のコマンドは、変換を使用して、文字「A」を含むオーバーレイボックスがPDFに重ねられ、次の画像の結果を生成します。

online_gauss.pdf 変換 - 白い塗りつぶし - 下色 '#00000080'
- ポイントサイズ 40 - 重力南 - 注釈 +0+5 'A' online_gauss_annot.pdf

希望する結果

ただし、変換はソースをラスタライズします。公開用に元のPDF形式(ベクトル)を維持したいので、コマンドラインを介して単一のPDF画像にこれらのコメントを簡単に追加する方法はありますか?この手紙が左下にあっても持っているというだけでも嬉しいです。

私はGhostscript、pdftk(スタンプ)を使用するいくつかの例を見ましたが、いくつかの中間ステップが必要であり、さまざまなサイズのPDF画像を正しく処理することは困難です。

ベストアンサー1

texliveディストリビューションをインストールしたくない人は、cpdf次の説明を好むかもしれません。ここ。ところで、cpdf奇妙な商用ライセンスがあり、代替案を探すようになりました。これは(enscriptps2pdfおよび(pdftkまたは)をインストールする必要がありますqpdf)です。

アイデアは、をenscript使用してテキストからPDFを作成し、pdfを使用してPDFに変換し、または...)を使用して元のPDFの上に積み重ねることです。.ps.ps.pdfps2pdfpdftkqpdf

pdfkバージョン:

echo "I will be stamped on top of the page" | enscript -B -f Courier-Bold16 -o- | ps2pdf - | pdftk input.pdf stamp - output output.pdf

qpdfバージョン:

すべてのページでテキストを繰り返すには:

tmpfile=$(mktemp) && echo "I will be stamped on top of the page" | enscript -B -f Courier-Bold16 -o- | ps2pdf - "$tmpfile" && qpdf out_merge.pdf --overlay "$tmpfile" --repeat=1-z -- out_oneline.pdf

最初のページにのみ表示したい場合:

tmpfile=$(mktemp) && echo "I will be stamped on top of the page" | enscript -B -f Courier-Bold16 -o- | ps2pdf - "$tmpfile" && qpdf out_merge.pdf --overlay "$tmpfile" -- out_oneline.pdf

追加オプションについては、マニュアルを参照してください。

注:mktemp1行のソリューションを提供するために一時ファイルを生成する場合にのみqpdf許可されます。stdin

残念ながら、テキスト位置が常にa4ページの左上にあるわけではないので、テキスト位置を設定する方法がわかりません...

おすすめ記事