3

現在、php の imagick を使用して一部の PDF を画像に変換しています。

これは、PDF に含まれる情報と実際のコンテンツのサイズが異なるためです。

PDF は 612x792 72ppi ドキュメントであると報告されていますが、Mac でプレビューを介して PDF から画像をエクスポートすると、画像は 1651x1275 になります。これはどのように可能ですか?

画像がそれらの寸法で正しく表示されるため、エクスポートは明らかに正しいです。幅と高さが混同された場所で、PDF が単に間違ってエンコードされた可能性がありますか? コードを介してこれを検出するにはどうすればよいですか? また、画像のエクスポートは、サイズが約 2 倍の異なる (はるかに大きい) サイズであり、imagick によって一部の情報が適切に読み取られていないと思われます。

基本的に、実際の PDF コンテンツのサイズを決定する適切な方法があるかどうかを知りたいので、そこからエクスポートされた画像が可能な限り最高の品質になります。

ありがとう!

編集:(コードが追加されました)

<?php
$im = new Imagick();
$im->readImage("SomeTest.pdf");
$im->setImageColorspace(255);
$im->setCompression(Imagick::COMPRESSION_JPEG);
$im->setCompressionQuality(60);
$im->setImageFormat('jpeg');
$im->writeImages("SampleImage.jpg");
?>

使用した pdf は次のとおりです 。 http://www.pantone.com/pages/MYP_mypantone/software_downloader.aspx?f=3

また、これは、identifyImage() 関数からの imagick の出力です。これは、ファイル サイズを見ると少し間違っているようです。

Array
(
    [imageName] => /tmp/magick-XXehkI8e
    [format] => PDF (Portable Document Format)
    [geometry] => Array
        (
            [width] => 612
            [height] => 792
        )

    [type] => TrueColor
    [colorSpace] => RGB
    [resolution] => Array
        (
            [x] => 72
            [y] => 72
        )

    [units] => Undefined
    [fileSize] => 50mb
    [compression] => Undefined
    [signature] => 9426f3fc4f45afd71941435a37d585d01e01d32458f3ca241e72892c2f7f35d5
)
4

2 に答える 2

3

PDF 自体は解像度のない形式であることに注意してください。ページは、浮動小数点数によって課されるものを除いて、特定の解像度制限に結び付けられていない数学的な手段で記述されます。

PDF が実際に解像度を持つのは、特定のデバイスにレンダリングされたときだけです (デバイスの解像度である場合とない場合があります)。

「しかし、画像はどうですか? PDF の画像は、確かに解像度を提供します!」並べ替え。PDF の画像は単位のないサンプルとして表され、ページ上でインスタンス化されるまでは解像度がありません。300 dpi 8.5 インチ x 11 インチの 1 ビット イメージを取得して PDF に埋め込むことができますが、同じイメージをページのコンテンツ ストリームに配置して、8.5 インチ x 11 インチのスペース全体を埋めることができます。または、はるかに小さいサムネイルにレンダリングすることもできます (スケールを通じてより高い解像度を作成します)。これらの「解像度」でさえ、ページが実際にデバイスにレンダリングされるまで適用されません。さらに、PDF レンダラーは、バイリニア (またはその他の) 補間を行って画像の見かけの解像度を上げることを妨げられません。

より具体的な例を挙げると、PDF ページを 96 dpi モニターで 100% でレンダリングすると、そのページの解像度は 96 dpi 以下になります。その PDF ページを 1800 dpi の写真植字機でレンダリングすると、ページの解像度は 1800 dpi 以下になります。

96 dpi モニターで 100% でレンダリングされた PDF ページに 300 dpi の画像を 100% でレンダリングすると、ページ上の画像の解像度は 96 dpi になります。1800 dpi の写真植字機で 100% でレンダリングされた PDF ページに 300 dpi の画像を 100% でレンダリングすると、ページ上の画像の解像度は 300 dpi になります。

イメージ マジックから表示される出力は、おそらく、PDF 単位での 8.5 インチ x 11 インチのページが 612 x 792 であり、1 PDF 単位が 1/72 インチに相当することを反映しています。プレビュー レンダリングは ~194 dpi で行われているようです。

于 2011-05-20T17:46:05.780 に答える
1

PDF 内の画像は、PDF 内のあるサイズに縮小されました (または、Reader などで見るとトリミングされます)。

ImageMagick (私が imagick で使用しているもの) は、GhostScript を使用して PDF を画像に変換します。GhostScript は、PDF ファイルのレンダリングが得意です。悪い情報を流しているのだろうか。

コードを見ることができますか?入力PDFと出力画像へのリンクもいいでしょう。


PDFでgs 8.71を実行したところ、正常にレンダリングされました。使用している GhostScript のバージョンは何ですか?

于 2011-05-20T00:51:17.690 に答える