BashスクリプトでPDFファイルに属性を追加するときは、一時ファイルを使用しないでください。

BashスクリプトでPDFファイルに属性を追加するときは、一時ファイルを使用しないでください。

次のスクリプトは一時ファイル "data.txt"を使用し、それを再利用する前にここにいくつかのコンテンツを追加します。 (実際にPDFにいくつかのメタデータを追加しました。)

#!/bin/bash

PDFTK="/app/bin/pdftk"
#PDFTK="pdftk"

$PDFTK $1.pdf dump_data output data.txt

cat  >> data.txt << EOF
InfoBegin
InfoKey: Myproperty
InfoValue: Myvalue
EOF

$PDFTK $1.pdf update_info data.txt output $1-$2.pdf

dump_dataとupdate_infoはどちらも標準出力から書き込みまたは読み取ることができます(man pdftkを参照)。

bash-gurus:ファイルを生成せずにコードを書き換える方法は?

pdftk-gurus:もっと良い方法はありますか?次へ追加キーと値のペア?

ありがとう、バスター。

答え1

これが使用されるため、bashプロセス置換を使用できます。

"$PDFTK" "$1.pdf" update_info <( "$PDFTK" "$1.pdf" dump_data output; cat <<EOF
InfoBegin
InfoKey: Myproperty
InfoValue: Myvalue
EOF
) output "$1-$2.pdf"

pdftkユーティリティの場合、引数は最初の呼び出しの出力とここにある文書の内容を<( ... )含むファイルとして扱われます。pdftk

また、変数を引用する必要があります(」bash / POSIXシェルで変数を引用することを忘れてしまうセキュリティリスク")。

関連情報