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


80

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


オープンソースのPDFツールはかなりくだらない傾向があります。何を使っていますか?
悪魔のような子犬

こちらもご覧ください:superuser.com/questions/166999/…–
slhck

役に立たない無数の「レジストリクリーナー」のように見えたため、ツールの外観が好きではありませんでした。Adobe Proを試し、GhostscriptまたはPDFForgeに修復スイッチがあるかどうかを調べ始めたところです。
ティムアレクサンダー

Ghostscriptは大丈夫ですが、Acrobatほど優れているわけではありません。それは完全に裸の骨です。
悪魔のような子犬

6
@Satanicpuppy同意しない:: ghostscriptを使用して、破損した、または低品質のPDFを頻繁に再構築し、非常によく機能します。
エディB

回答:


100

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

2
Ghostscriptはpdfをレンダリングするという素晴らしい仕事をしています...私は定期的にgsを使用してpdfを再構築し、フォント品質を改善しています。
エディB

1
/ prepressは、/ screenと比較して品質を本当に良くします。ありがとう。
ドラノール

「XREFテーブルの読み取り中にエラーが発生しました。」どういう意味ですか?
ジェレミア

これは、内部目次(PDFにXREFテーブルとして含める必要があるもの)にエラーがあり、PDFオブジェクトの誤ったバイトオフセットを指していることを意味します。Ghostscriptはおそらくそのエラーを修復し、正しいXREFテーブルを出力に挿入しました。これをもう一度確認するには、Ghostscriptで出力をもう一度実行し、このメッセージが引き続き表示されるかどうかを確認します。
カート・ファイフル

37

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

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

pdftocairo -pdf print.pdf print_repaired.pdf

これにより、正しいヘッダーを持つPDFファイルが生成され、Ghostscriptなどのツールが受け入れられるようになりました。


3
+1これは、Quartzが生成したPDFを苦情なしに読み、すぐに出力の生成を開始しました。Ghostscript、Adobe Acrobat Proなどは、最初に120GBのPDFを再構築することを主張しました。
Orwellophile

これは、私が出くわした奇妙なPDFの少なくとも1つでは機能しませんでしたが、良いスタートのようです。
ブライアンピーターソン14

1
Ghostscriptがページ上の任意の要素を削除したいPDFで完全に機能します。
アンドレアラザ

Ghostscriptはドキュメントを読むことができませんでしたが、これは魅力のように機能しました。ところで、新しいLinuxサブシステムを使用してWindowsでこれを実行しました。
ハイリアン

24

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ベースのビューアがあります。


3
このソリューションは、PDFファイルを「印刷」せず、リンク、クリック可能なアイテムなどをアクティブに保つため、上記のソリューションやランク付けされたソリューションよりも「優れた」機能を発揮します。またはカイロ。
スペデレン

1
残念ながら、mutool clean考えられるすべてのエラーを修正するわけではありません。フォントとコンテンツストリームにさまざまなエラーがあるファイルがあり、mutoolはそれらのエラーを保持します。
ドミニクホネフ

1
@DominikHonnef PDFを分解し、レンダリングせずにすべてのパーツを表示できるツール/フレームワークをいつでも試すことができます。これにより、テキスト、スクリプト、画像などを直接取得できます。ツールのリストについては、この回答を参照してください:reverseengineering.stackexchange.com/q/1526/8210
jmiserez

私のために働いた唯一のもの!
jamadagni

これは、ドキュメントを調べるPDFをレンダリングしないため、より効果的です。
riccs_0x

10

破損したpdfファイルがありました。ダウンロードに使用したphpファイルに、最後にいくつかのエラー(HTML)とNUL文字がエコーされていたためです。

解決策は、pdfをNotepad ++で開き、行の後のすべてのテキストを削除することでした

%%EOF

同じで、Adobe Readerは開かなかったが、ネイティブのMac、Chrome、Firefox PDFプラグインはPDFファイルを正常に表示した。理由は、アップロード中に追加された最後の行の余分な「NUL」でもありました。
ティロ14

私は2つのPDFを持っていました%%EOF。最初に%%EOF16進エディターを使用してすべてを削除しました。今、すべてが正常に動作します。
エイドリアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.