Tips · Metadata · CLI
PDF のメタデータを一括変換する
フォルダ内の PDF について、メタデータをまとめて直す手順です。文書プロパティをまとめて消すなら metadata batch(GUI のメタデータ削除一括と同じ)、一部の項目だけ変えるなら metadata set をループします。入力 PDF は変更されません。
GUI
- 左メニューから Metadata を開く。
- 一括モード(フォルダ) にチェックを入れる。
- 入力フォルダ と 出力フォルダ を指定する。
- 同じ値を入れたい項目だけ入力する(空欄は既存のまま)。
- 保存 で一括指定、メタデータ削除 で一括クリア。暗号化 PDF にはパスワード入力ダイアログが出る。
- 処理中に止めたいときは キャンセル で中断できる。
- 結果ログで成功・失敗を確認し、出力フォルダの PDF を開いてメタデータを確認する。
使うコマンドの違い
manapdf metadata batch— フォルダ内の PDF を走査。--titleなどを付けなければmetadata cleanと同じ削除、付けると指定した項目だけmetadata setと同じ更新。出力は--output-dir以下に保存。manapdf metadata set— 1 ファイルについて、--titleなど指定した項目だけを書き換えて別名保存(-o)。manapdf metadata show— メタデータの確認(書き換えはしない)。
準備
- 新しい PowerShell(または Windows Terminal)を開き、
manapdf versionが動くことを確認する。 - 入力フォルダ(例:
.\pdfs)と出力フォルダ(例:.\out)を用意する。 - まず 1 ファイルで試すか、
--dry-runで対象を確認してから本番を実行する。
例1 — フォルダ内のメタデータをまとめて削除(metadata batch)
タイトル・作成者などの文書プロパティを、フォルダ内の PDF からまとめて消したいとき。1 ファイルの metadata clean / GUI の メタデータ削除 と同じ処理です。
manapdf metadata batch .\pdfs --output-dir .\out --recursive --force
metadata batch— 第1引数のフォルダ内 PDF を対象に、メタデータを削除したコピーを作るサブコマンド。.\pdfs— 入力フォルダ。ここにある PDF は上書きされず、結果は出力フォルダ側に作られます。--output-dir .\out— 変換後の PDF を書き出すフォルダ(必須)。--recursive— サブフォルダ内の PDF も対象にします。出力側でも同じ階層構造を維持します。--force— 出力先に同名ファイルがあっても上書きします。付けないとスキップされます。
実行前の確認:
manapdf metadata batch .\pdfs --output-dir .\out --recursive --dry-run
--dry-run— 実際にはファイルを書き出さず、何が行われるかだけ表示します。本番の前に対象件数やパスを確認する用途です。
例 — 同じ作成者名をまとめて入れる(metadata batch)
フォルダ内のすべての PDF に同じ Author を付け、Title などは残したいとき。GUI 一括の 保存 と同じです。
manapdf metadata batch .\pdfs --output-dir .\out --author "山田 太郎" --recursive --force
--author "山田 太郎"など指定した項目だけ更新します。付けていない項目は元の値のままです。
例2 — 作成者名だけをファイルごとにクリア(metadata set)
Author だけ空にして、Title など他の項目は残したいとき。指定した項目だけ更新し、他のメタデータは可能な限りそのまま残します。
$inputDir = ".\pdfs"
$outputDir = ".\out"
New-Item -ItemType Directory -Force $outputDir | Out-Null
Get-ChildItem $inputDir -Filter *.pdf -File | ForEach-Object {
$outPath = Join-Path $outputDir $_.Name
manapdf metadata set $_.FullName -o $outPath --author "" --force
}
Get-ChildItem … -Filter *.pdf -File— 入力フォルダ直下の PDF ファイルだけを列挙します(サブフォルダは含みません)。metadata set 入力.pdf -o 出力.pdf— 入力 PDF を読み、指定したメタデータ項目だけ変えた PDF を出力先に保存します。--author ""— Author(作成者)を空にします。--titleなど他のオプションを付けなければ、それらの項目は原則そのままです。--force— 出力 PDF が既にあっても上書きします。
例3 — ファイル名(拡張子なし)を Title に入れる
契約書_2024.pdf なら Title を 契約書_2024 にします。ManaPDF に「ファイル名からタイトル」専用コマンドはないので、ループで metadata set します。
$inputDir = ".\pdfs"
$outputDir = ".\out"
New-Item -ItemType Directory -Force $outputDir | Out-Null
Get-ChildItem $inputDir -Filter *.pdf -File | ForEach-Object {
$title = [System.IO.Path]::GetFileNameWithoutExtension($_.Name)
$outPath = Join-Path $outputDir $_.Name
manapdf metadata set $_.FullName -o $outPath --title $title --force
}
GetFileNameWithoutExtension($_.Name)— ファイル名から.pdfを除いた部分を Title 用の文字列にします(PowerShell 側の処理)。--title $title— PDF の Title(タイトル)メタデータを、上で作った文字列に設定します。- ファイル名に使えない文字が Title に入ることは通常ありませんが、記号や長いパス名は PDF ビューアでの見え方を一度確認してください。
例4 — タイトルをファイル名にし、作成者を空にする
例2 と例3 を 1 回の metadata set にまとめた例です。1 ファイルにつき PDF を 1 回だけ読み書きします。
Get-ChildItem .\pdfs -Filter *.pdf -File | ForEach-Object {
$title = [System.IO.Path]::GetFileNameWithoutExtension($_.Name)
$outPath = Join-Path .\out $_.Name
manapdf metadata set $_.FullName -o $outPath --title $title --author "" --force
}
--titleと--authorを同時に指定すると、両方を一度に更新した PDF が出力されます。- 事前に
.\outフォルダを作っておくか、例2・3 と同様にNew-Itemで作成してください。
その他
処理後の確認:
manapdf metadata show .\out\sample.pdf
manapdf report .\out --recursive -o metadata.csv --lang ja
metadata show— 1 ファイルの Title / Author などを表示します。変更はしません。report … -o metadata.csv— フォルダ内 PDF のメタデータを CSV にまとめて出力します。件数が多いときの一覧確認向けです。--lang ja— CLI メッセージを日本語にします(CSV の列内容そのものは PDF の値です)。
パスワード保護 PDF が混ざるとき(全ファイルが同じパスワード):
manapdf metadata batch .\pdfs --output-dir .\out --password "your-password" --recursive --force
--password— 暗号化 PDF を開くためのパスワード。ログや標準出力の JSON には含まれません。
1 件でも失敗したらエラー終了にしたいとき:
manapdf metadata batch .\pdfs --output-dir .\out --recursive --strict
--strict— 1 ファイルでも失敗があれば終了コードをエラーにします。バッチ処理の成否をスクリプトで判定するときに使います。