Tips · Metadata · CLI

PDF のメタデータを一括変換する

フォルダ内の PDF について、メタデータをまとめて直す手順です。文書プロパティをまとめて消すなら metadata batch(GUI のメタデータ削除一括と同じ)、一部の項目だけ変えるなら metadata set をループします。入力 PDF は変更されません。

GUI

  1. 左メニューから Metadata を開く。
  2. 一括モード(フォルダ) にチェックを入れる。
  3. 入力フォルダ と 出力フォルダ を指定する。
  4. 同じ値を入れたい項目だけ入力する(空欄は既存のまま)。
  5. 保存 で一括指定、メタデータ削除 で一括クリア。暗号化 PDF にはパスワード入力ダイアログが出る。
  6. 処理中に止めたいときは キャンセル で中断できる。
  7. 結果ログで成功・失敗を確認し、出力フォルダの PDF を開いてメタデータを確認する。
ManaPDFのMetadata画面

使うコマンドの違い

  • manapdf metadata batch — フォルダ内の PDF を走査。--title などを付けなければ metadata clean と同じ削除、付けると指定した項目だけ metadata set と同じ更新。出力は --output-dir 以下に保存。
  • manapdf metadata set — 1 ファイルについて、--title など指定した項目だけを書き換えて別名保存(-o)。
  • manapdf metadata show — メタデータの確認(書き換えはしない)。

準備

ManaPDFのMetadata画面
  1. 新しい PowerShell(または Windows Terminal)を開き、manapdf version が動くことを確認する。
  2. 入力フォルダ(例: .\pdfs)と出力フォルダ(例: .\out)を用意する。
  3. まず 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 ファイルでも失敗があれば終了コードをエラーにします。バッチ処理の成否をスクリプトで判定するときに使います。