web-dev-qa-db-ja.com

破損したPDFファイルを修正または修復するにはどうすればよいですか?

破損したPDFを修復するための推奨事項や手順はありますか?ファイルを開くと、「このドキュメントを開くときにエラーが発生しました。ファイルが破損しているため、修復できません。」と表示されます。無数のツールがあるように思えますが、私が評判が良いと説明できるものはありません。これに対するオープンソースのLinuxベースのソリューションはありますか?

76
Tim Alexander

Ghostscriptは破損したPDFを自動的に修復します...最初に開くことができる場合(つまり、修復不可能なほど損傷していない場合)。しかし、その後は結果を再確認する必要があります。

Linuxでは、次のコマンドを試してください。

 gs \
  -o repaired.pdf \
  -sDEVICE=pdfwrite \
  -dPDFSETTINGS=/prepress \
   corrupted.pdf

Windowsでは、これを試してください。

 gswin32c.exe ^
  -o repaired.pdf ^
  -sDEVICE=pdfwrite ^
  -dPDFSETTINGS=/prepress ^
   corrupted.pdf
95
Kurt Pfeifle

Ghostscriptで開くことができない破損したPDFファイルprint.pdfがありましたが、通常のグラフィカルLinux PDFビューア(Okular、Evince)は正常に開きました。 (私の場合は、16進数エディタで開いたときに、ファイルの先頭にPDFヘッダーの代わりにゴミが入っていました。)

これらのPDFビューアはバックエンドのPDFレンダラとしてPopplerを使用します。そのため、Popplerのコマンドラインツールを使用してPDFを修復できます。 Ubuntuでは、これらはpoppler-utilsパッケージにあります。私は使った:

pdftocairo -pdf print.pdf print_repaired.pdf

これは正しいヘッダーを持つPDFファイルを生成し、Ghostscriptのようなツールは現在受け入れています。

33

mutoolプロジェクトページマンページ )は壊れたPDFを修復しますそれらを印刷せずに

  • インストール例Ubuntuの場合:Sudo apt-get install mupdf-tools
  • このように実行してください:mutool clean input.pdf output.pdf
mutool clean [options] input.pdf [output.pdf] [pages]

  The clean command pretty prints and rewrites the syntax of a PDF file.
   It can be used to repair broken files, expand compressed streams,
   filter out a range of pages, etc.
  If no output file is specified, it will write the cleaned PDF to
   "out.pdf" in the current directory.

あるいは、PDFをレンダリングせずにそれらのコンポーネントに分解/逆コンパイルできるツールやフレームワークがいくつかあります。これらは、テキスト、スクリプト、および画像を抽出するのに役立ちます。そのようなツールのリストについては、この回答を参照してください。 https://reverseengineering.stackexchange.com/q/1526/8210 。例えば。あなたは現在のトップアンサーを試すことができます Origami 、それはGTKベースのビューアを持っています。

22
jmiserez

ダウンロードに使用したphpファイルが(HTMLで)いくつかのエラーと最後にNUL文字をエコーし​​ていたので、私は破損したpdfファイルを持っていました。

解決策は、メモ帳+ +でPDFを開き、行の後にすべてのテキストを削除することでした

%%EOF
10
Oriol