PNGを高品質のPDFに変換して、ぼやけたりあいまいにならないようにするにはどうすればよいですか?


54

PDFファイルをPNG画像に変換する方法については多くの質問がありますが、私は素敵なシャープなPNGファイルを取得して、基本的にそれをラップするか、ぼやけて見えることなくPDFファイルに埋め込むことを探していますファジー。

imagemagicをインストールすると、次のような簡単な変換ができることに気付きます。

convert sample.png sample.pdf

また、深度と品質の設定を行うために多くのスイッチを試しました。

convert -quality 100 sample.png sample.pdf

ただし、PDFはぼやけた/あいまいに見えます。

サンプル画像は次のとおりです。

http://img406.imageshack.us/img406/6461/picture3mu.png

pngとして、それは鮮明できれいです。PDFに変換すると、同じサイズであってもぼやけて見えます:

Picture 4.png http://img803.imageshack.us/img803/9969/picture4at.png

PNGをPDFに高品質に変換するにはどうすればよいですか?


あなたの質問に対する良い答えが見つかることを願っていますが、JPG形式で画像を保存するのはPDFの与えられた特性にすぎないと思います。PNGは、あなたが私たちに見せてくれるもののように、JPGよりもずっと良い品質を持っています。
ジッピー

1
@cwd:.texファイルに入れてからPDFを生成しようとしましたか?と\usepackage[pdftex, final]{graphicx}\includegraphics[width=516px]{calendar.png}、例えば。
エマニュエルベルク

2
@jippie:いいえ、PDF ビットマップをロスレスに保存できます。PDF内のビットマップデータを抽出してJPEGまたはTIFFとして直接表示することはできませんが、PDF画像はJPEG(lossy )、JPEG 2000(非可逆)またはいくつかのTIFFバリアントのいずれか(可逆)。何、本当のことしかし、与えられたPDFの蒸留器は、DCT(別名JPEG)形式に変換するビットマップをデフォルトにし、代わりにロスレス形式を使用するように言わなければならないかもしれないということです。
ウォーレンヤング

@cwd答えを受け入れることを考えましたか?私が考えるuser32208の答えはかなり良いですunix.stackexchange.com/a/64495/16920
レオ・レオポルド・ヘルツ준 영

回答:


34

-densityオプションを使用してみてください。デフォルトの解像度は1インチあたり72ドットです。だからのようなものを試してみてください-density 300

参照について-densityは、ImageMagickコマンドラインオプションのドキュメントを参照してください。


密度が間違いなく重要なようです。スケールと密度は逆の関係にあるように見えるので、外観とファイルサイズの両方の観点から最適な結果を得るために両方の設定で遊んでいます。
ブライアンZ

最適な密度オプションを見つける方法は?with density 300サンプル画像でデータはどのくらい失われますか?結果は入力に依存すると思います。それについての新しいスレッドunix.stackexchange.com/q/292025/16920
レオレオポルドヘルツ

これは私にとって品質をまったく変えません。
ギヨームシュヴァリエ

19

から適切なpdf出力を取得するのは非常に複雑になる可能性がありますconvertimg2pdf代わりに試してください。READMEから:

JPEGおよびJPEG2000ファイルを不必要に再エンコードすることなく、画像をPDFに無損失で変換します。したがって、品質の損失や不要な大きな出力ファイルはありません。

明確にするために:PDFはロスレスJPEG 2000画像を埋め込むことができます(そしてほとんどの読者はそれらをサポートしているようです)。したがって、この変換は完全にロスレスです:

convert sample.png -quality 0 sample.jp2
img2pdf -o sample.pdf sample.jp2

(もちろん、JP2デリゲートが利用可能であると仮定:check identify -list format | grep JP2。)


4
これが私見のベストアンサーですが、あなたのポイントをよりよく説明する必要があります。つまり、PDFはロスレスJPEG 2000画像を埋め込むことができるということです。したがって、OPの完全なコマンドは次のようになりますconvert sample.png -quality 0 sample.jp2; img2pdf -o sample.pdf sample.jp2。(もちろん、JP2デリゲートが利用可能であると仮定:check identify -list format | grep JP2。)
ニモ

1
Ubuntu 14の標準リポジトリに固執したい場合は、converttiffに、それからにtiff2pdf
カミーユグードセヌ

これは素晴らしい答えです、ありがとうございました。
リュボミールシェイダリフ

@ brian-z あなたの答えでは、引数を説明してもらえます-quality 0か?
SebMa

SebMa、@ Nemoはそのコマンドを追加しましたが、-quality 100代わりに使用すべきだと考えています
ブライアンZ

14

PDFの品質が低下していると感じているのは、PDFビューアのアンチエイリアシング機能の影響にすぎないことはほぼ間違いありません。

evincePDFの表示に使用すると、特定のズームでクイックアンチエイリアシング機能が自動的にオフになることがわかります(クイックテストでは300%)。ズームインを続けると、それがはっきりとわかります。ある時点で、ピクセルが突然はっきりと見えるようになります。これが、正確な画像検査を可能にするためにアンチエイリアスをオフにしなければならないポイントです。


うーん-それは理にかなっていますが、私は何らかの方法で画像と「初期ビュー」を100%に設定して、より鮮明に見えることを望んでいたと思います。
cwd

1
@cwd ズーム(ファイルを調べる方法)を画像平滑化の実際の原因であるアンチエイリアスと間違えないでください。画像は適切に保存されます。あなたをだますのはPDFビューアです。ただし、他の表示アプリケーションを使用したり、設定を変更したりする場合でも、逆の場合もあります。その後、PDFファイルで鮮明な画像を、画像ビューアーで平滑化されたPNGファイルを見ることができます。
rozcietrzewiacz

3

上記のBrian Zは、pngをpdfに入れる正しい、完全に可逆的でロスレスな(変換ステップが実際にロスレスであると仮定して)、以下を提供しました。PDF構造/リーダーに準拠するには、pngからロスレスjp2に変換する必要があります(私は思う)。

$ convert sample.png -quality 0 sample.jp2
$ img2pdf -o sample.pdf sample.jp2

ただし、次のように.pngファイル自体をimg2pdfに直接提供できることに注意してください。

$ img2pdf -o sample.pdf sample-page1.png <sample-page2.png ...>

これにより、最小のpdfファイルが生成され、pngの生の16進数がpdf内のオブジェクトに無損失で挿入されます*。

*欠点は、このプロセスはjp2を使用した場合とは異なり、元に戻せないことです。ヘッダー/フッターおよびチャンクヘッダー/フッターデータは、生の画像データのみを残して挿入されるpngから取り除かれます(実際にはファイルがさらに小さくなります!)(削除されたメタデータはpdf構造に統合されます)。おそらく、pdfを「ハッキング」して、技術的にコンテナに準拠していない生のpngを表示します。firefoxでは問題なく表示され、最新のすべてのリーダーでは問題なく表示される可能性がありますが、pngがコンテナーに準拠していない場合、厳密なリーダーは生のpngデータをレンダリングしない可能性があります(期待しない/正しく処理しない)。

ここでは、pdfへの入力に使用されるハッシュと一致するハッシュを持つpngファイルを抽出および再構築するのに役立った非常に生のbashスクリプトを見つけることができます。https://github.com/jack4455667788/RebuildRawPNGExtractedFromPDF


2

PDFはベクター形式です(つまり、ファイルには描画する線の説明が含まれています)が、他の形式(JPG、PNG)はラスター形式です(ファイルには各ピクセルをペイントする色が記述されています)。PDFを爆破しても、それはまだ鋭い線です。JPGおよびPNGはピクセル化を示します。

(OK、OK、嘘をつきました。PDFはラスターにもなります)。


2

png-to-pdf -densityパラメータの場合、大きいのではなく小さくする必要があると思います。あなたは次のようなものを試すことができますconvert -quality 100 -density 50


3
いいえ、高密度は間違いなく優れています。テストを行っただけで、50個の結果が非常に目立つピクセルになります。300個は見栄えがよく、鮮明です。
ショーンサイン2014

これは私を混乱させてきましたが、密度が高くなると出力の解像度が低くなると思います。つまり、出力があいまいである場合(元の質問の例のように、エイリアスが過剰になっている場合)は、密度が必要です。しかし、PDFがピクセル化されている場合、実際にはより高い密度で変換する必要があります。
ブライアンZ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.