• 締切済み

PHPでPDFを画像で表示したい

レンタルサーバ(lolipop)でディレクトリに置いてあるPDFファイルを画像として表示したいと思ってますが、何故PHP初心者の為、ネットで探してみましたが、エラーになりなかなか上手くいきません。 おわかりになる方、宜しくお願い致します。 あるディレクトリに複数のPDFファイルがあります(ページ数はすべて1ページのみ) そのPDFを画像としてブラウザに並べて表示して、クリックすると実際のPDFが表示されるしくみを作りたいです。 解り難い表現でしたら、申し訳ありません。 お解かりになる方、宜しくお願い致します。

  • PHP
  • 回答数7
  • ありがとう数1

みんなの回答

  • singlecat
  • ベストアンサー率33% (139/418)
回答No.7

>Fatal error: Uncaught exception 'ImagickException' with message 'Postscript delegate failed `0011.pdf': No such file or directory' との事なので、"GhostScript"でうまく処理できていないという事だと思います。 一度プロバイダーに確認されるのが良いのではと思います。

josephatchersea
質問者

お礼

ご連絡遅くなりました。 色々と有難うございます。とりあえずもう少し、いろいろと挑戦してみようと思います。 有難うございました

回答No.6

http://www.favorite-labo.org/view/218 こちらも確認を。 ロリポのImagick関係の問題は頻出ですので。

josephatchersea
質問者

補足

有難うございます。 リンクも参照してみました。 結果 Array ( [0] => Version: ImageMagick 6.4.3 2011-07-13 Q16 http://www.imagemagick.org [1] => Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC [2] => ) 使用サーバーのバージョンは6.4.3ということがわかりました。 いろいろ有難うございます。 もう少し調べてみようと思います

  • singlecat
  • ベストアンサー率33% (139/418)
回答No.5

$im = new imagick($file."[0]"); <<これは試してもらえましたか? エラーメッセージ見ているとimagicの引数は配列みたいですね。 上記を、下記に変えたらどうなりますか? $im = new Imagick(); // 引数無し $im->readImage($file."[0]"); // 追加

josephatchersea
質問者

補足

ありがとうございます。変更してみました。 <?php // 読み込む PDF をフルパスで指定 $file = '0011.pdf'; // サムネイルを作成するページを指定 $page = 1; // 実際の指定では、1ページが0になるので、調整 $page = $page - 1; $im = new Imagick(); // 引数無し $im->readImage($file."[0]"); // 追加 // PNG 形式に変換 $im->setImageFormat("png"); // 長辺が 300 ピクセルになるようにリサイズ $im->thumbnailImage(300, 300, true); // 表示 header("Content-Type: image/png"); echo $im; ?> が、エラーになります ERROR: /undefined in /BXlevel Operand stack: 1 --dict:6/6(ro)(G)-- リ皋_ロテレェ+~l霄:碩E鰈pQ Execution stack: %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1 3 %oparray_pop 1 3 %oparray_pop 1 3 %oparray_pop --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push --nostringval-- %loop_continue --nostringval-- Dictionary stack: --dict:1127/1686(ro)(G)-- --dict:0/20(G)-- --dict:107/200(L)-- --dict:107/200(L)-- --dict:104/127(ro)(G)-- --dict:241/347(ro)(G)-- --dict:18/24(L)-- Current allocation mode is local Fatal error: Uncaught exception 'ImagickException' with message 'Postscript delegate failed `0011.pdf': No such file or directory' in /xxx/xxx/0/xxx/web/pdf/pdf.php:23 Stack trace: #0 /xxx/xxx/0/xxx/web/pdf/pdf.php(23): Imagick->readimage('0011.pdf[0]') #1 {main} thrown in /xxx/xxx/0/xxx/web/pdf/pdf.php on line 23 いろいろ申し訳ありません

  • singlecat
  • ベストアンサー率33% (139/418)
回答No.4

先ほど、フルパスはダメだと解っているので、 $file = '/xxx/xxx/0/xxx/web/pdf/0011.pdf'; をファイル名だけに $file = '0011.pdf'; $im = new imagick("$file[$page]"); を $im = new imagick($file."[0]"); でどうでしょうか?

josephatchersea
質問者

補足

度々有難うございます フルパスは解除し、下記にて調整しました <?php // 読み込む PDF をフルパスで指定 $file = '0011.pdf'; // サムネイルを作成するページを指定 $page = 1; // 実際の指定では、1ページが0になるので、調整 $page = $page - 1; $im = new imagick("$file[0]"); // PNG 形式に変換 $im->setImageFormat("png"); // 長辺が 300 ピクセルになるようにリサイズ $im->thumbnailImage(300, 300, true); // 表示 header("Content-Type: image/png"); echo $im; ?> 表示は下記です Fatal error: Uncaught exception 'ImagickException' with message 'unable to open image `/xxx/xxx/0/xxx/web/pdf/0': No such file or directory' in /xxx/xxx/0/xxx/web/pdf/pdf.php:22 Stack trace: #0 /xxx/xxx/0/xxx/web/pdf/pdf.php(22): Imagick->__construct('0') #1 {main} thrown in /xxx/xxx/0/xxx/web/pdf/pdf.php on line 22 ファイルが見つからないというエラーでしょうか。 色々と恐れ入ります。

  • singlecat
  • ベストアンサー率33% (139/418)
回答No.3

もしかするとこの部分が、 $im = new imagick($file[$page]); $im = new imagick("$file[$page]"); ではありませんか?

josephatchersea
質問者

補足

ありがとうございます。 いろいろ試してはいますが、エラーが続いてます。。。 現状、 <?php // 読み込む PDF をフルパスで指定 $file = '/xxx/xxx/0/xxx/web/pdf/0011.pdf'; // サムネイルを作成するページを指定 $page = 1; // 実際の指定では、1ページが0になるので、調整 $page = $page - 1; $im = new imagick("$file[$page]"); // PNG 形式に変換 $im->setImageFormat("png"); // 長辺が 300 ピクセルになるようにリサイズ $im->thumbnailImage(300, 300, true); // 表示 header("Content-Type: image/png"); echo $im; ?> にて試していますが、 Fatal error: Uncaught exception 'ImagickException' with message 'Safe mode restricts user to read image: /' in /xxx/xxx/0/xxx/web/pdf/pdf.php:22 Stack trace: #0 /xxx/xxx/0/xxx/web/pdf/pdf.php(22): Imagick->__construct('/') #1 {main} thrown in /xxx/xxx/0/xxx/web/pdf/pdf.php on line 22 となります。 ディレクトリのパーミッションは755です。777でも試しましたが、エラーになります。 パーミッションは755で問題ないのでしょうか。 何かと恐れ入ります。お時間あれば、宜しくお願いいたします

  • singlecat
  • ベストアンサー率33% (139/418)
回答No.2

>Fatal error: Uncaught exception 'ImagickException' with message 'Safe mode restricts user to read image: /' in /xxx/xxx/0/xxx/web/pdf/pdf.php:27 Stack trace: #0 /xxx/xxx/0/xxx/web/pdf/pdf.php(27): Imagick->__construct('/') #1 {main} thrown in /xxx/xxx/0/xxx/web/pdf/pdf.php on line 27 イメージファイル名を、"/"(スラッシュ)と認識して、ファイルで無いと怒られています。 パス付のファイルの指定に問題がありそうです。 ちょっと詳しく調べている時間が無いのですが、 phpのスクリプトがphpと同じフォルダーにあるので、 $file = '/xxx/xxxx/0/xxx/web/pdf/0011.pdf'; を $file = '0011.pdf'; に変更すればなんとかなりませんか?

josephatchersea
質問者

補足

有難うございます。 変更してみましたが、下記のエラーになります Fatal error: Uncaught exception 'ImagickException' with message 'unable to open image `/xxx/xxx/0/xxx/web/pdf/0': No such file or directory' in /xxx/xxx/0/xxx/web/pdf/pdf.php:22 Stack trace: #0 /xxx/xxx/0/xxx/web/pdf/pdf.php(22): Imagick->__construct('0') #1 {main} thrown in /xxx/xxx/0/xxx/web/pdf/pdf.php on line 22

  • singlecat
  • ベストアンサー率33% (139/418)
回答No.1

ImageMagickを使っているのでしょうか? 具体的にどういう設定で、どういうロジックでエラーになるのかを 説明頂かないと、アドバイスするのは難しいと思います。

josephatchersea
質問者

補足

ありがとうございます。 インターネットで調べたところ、imagickを使えばPDF→画像に処理できるところは理解できました。 ンタルサーバ上(lolipop)でimagickを使えることもわかったのですが、ネットで見つけたPHPプログラムにて下記のように書いてもエラーになります。 <?php // 読み込む PDF をフルパスで指定 $file = '/xxx/xxxx/0/xxx/web/pdf/0011.pdf'; // サムネイルを作成するページを指定 $page = 1; // 実際の指定では、1ページが0になるので、調整 $page = $page - 1; $im = new imagick($file[$page]); // PNG 形式に変換 $im->setImageFormat("png"); // 長辺が 300 ピクセルになるようにリサイズ $im->thumbnailImage(300, 300, true); // 表示 header("Content-Type: image/png"); echo $im; ?> エラーは: Fatal error: Uncaught exception 'ImagickException' with message 'Safe mode restricts user to read image: /' in /xxx/xxx/0/xxx/web/pdf/pdf.php:27 Stack trace: #0 /xxx/xxx/0/xxx/web/pdf/pdf.php(27): Imagick->__construct('/') #1 {main} thrown in /xxx/xxx/0/xxx/web/pdf/pdf.php on line 27 色々調べてはいるんですが、PHP初心者の為、何がいけないのかのイメージがわきません。。。 宜しくお願い致します

関連するQ&A

  • サーバー上のPDFファイルを一覧取得したい

    レンタルサーバー(lolipop)上のディレクトリ内(/pdf)にいくつかPDFファイルがあり、できればそのPDFファイルを画像化して、一覧表示し、ファイルへのリンクも記述したいです。 現状、PHPにて下記のようにすると、テキストリンクで表示はできました。 <?php foreach (glob("*.pdf") as $filename) { echo "<a href='" .$filename. "'>" .$filename. "</a><br>\n"; } ?> 上記に<img src="画像化したファイル">を入れたいです。 PHP初心者の為、色々試していますが上手くいきません。 どなたかお解かりになる方、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • レンタルサーバーでPDF出力

    レンタルサーバー(lolipop)で運用しています 今回フォームに記入した内容(申込フォーム)をPDFで出力したいと考えています 色々調べたのですが、PDFを動的に作成するという方法でできるようなのですが、何故初心者なものでいまいち理解できません 使っているサーバーにライブラリーをインストールはできないようなのですが、アクセス可能なディレクトリにライブラリファイルを置いても実現可能なのでしょうか? わかり難い表現でしたら申し訳ありません どなたかお解りになる方、宜しくお願い致します

    • ベストアンサー
    • PHP
  • phpで画像表示した際に

    veiw.php?id=1のような形式でphpで画像表示しています。 各ブラウザで画像右クリックで保存すると違いがあり質問です。 画像表示のファイル名はview.phpで出力形式はjpgというのが前提で 保存時の各ファイル名は下記の通りでした。 ie7=view.jpg FF3=view.php Chrome=view.php.jpg opera=view.jpeg FF3以外はそれぞれファイル名が微妙に異なるものの画像として保存 できるのですがFF3のみ拡張子がphpとして保存されてしまいます。 ※保存させる事が表示の目的ではないのですが気になったもので・・・ 保存されたファイルをエディタで開いても 『ファイルに含まれていたNull文字(00H)は、スペースに変換して開きます。』 とアラートが表示されそのまま開くとすっかり文字化け?しているようで ソースが見られるというような事もないので問題ないと思うのですが 全てのブラウザで保存した際に画像として保存させたいのですが どうすれば可能でしょうか? FF3だけ違うのでブラウザの仕様?とも思ったのですがご存知の方が いらっしゃいましたらアドバイスお願い致します。

    • 締切済み
    • PHP
  • PDFをJPG画像化する方法を教えてください

    あるサイト?のページがPDF形式(firefox内)になっていました そこでそのPDF状態で右クリックして「名前を付けてページを保存」を選び 任意のフォルダーに保存するとブラウザアイコンとして保存されてしまいます そうではなく、もっと手軽に普通の画像としていつでも閲覧できるように 画像での保存を望んでいます 本家アドビーの書き出しオプションみたいなやつも なぜか”オンラインでPDFファイルを・・・”なぜオンライン?てなります とにかく、pDFを画像にしたいんです。 そもそもPDFが電子化された紙という漠然過ぎる定義みたいなイメージだけで 仕組みがわかりません。アドビー(本家)から出ているものがあったり ブラウザーに組み込まれているものがあったり

  • 【PHP】画像が表示されず「×」が表示される

    以下のようなコードで、ブラウザに画像を表示させようとしたところ、画像が表示されず、代わりに「×」印が表示されました。どうすれば画像が表示できるのでしょうか? <?php $img = file_get_contents('./test.jpg'); header('Content-type: image/jpeg'); echo $img; ?> 上記のコードは以下のサイトを参考に書きました(というより、ほぼそのままコピペしただけです。) http://ysklog.net/php/1575.html http://php.birdlab.com/tips/1 【備考】 ・OSはWindows7、XAMPPを導入して動かしています。IE11とChromeのバージョン 37.0.2062.120 m(現時点の最新版のようです)で試しましたがどちらも同じ結果でした。(正確には、Chromeの方は×印ではなく、文字1文字分くらいの大きさの「ファイル」のような画像でしたが…(ネットを見ている際に、画像ファイルが表示されない時に代わりに表示されるアレです)) ・表示した画像ファイル test.jpg はphpファイルと同じフォルダに置いてあります。ファイル名が違う(そもそも存在しないファイル名を指定している)場合には、エラーメッセージが表示されましたので、ファイルの存在は認識されているようです。 ・readfile関数を使っても駄目でした。 ・画像ファイルが壊れているということはありません(画像ファイルのアドレスを直接指定した場合はきちんと表示されます) コードの問題ではなく、環境設定の問題だと思いますが、どこに問題があるのかさっぱりわかりません。よろしくお願い致します。

    • ベストアンサー
    • PHP
  • Apache,phpで画像が表示されない

    こんにちは Apache2.2、php5を使用しています。 ブラウザに画像を表示させたいのですが、URLで直接画像ファイルを指定するとファイルの場所を見せてしまうので、非公開のディレクトリの画像を表示させるようにphpのプログラムを呼び出して(引数をファイル名)にしています。 画像が「X」の状態で表示されません。(涙 header('Content-Type: ' . 'image/jpeg'); header('Content-transfer-encoding: binary'); header('Content-length: ' . filesize(/.../../$fileName)); header('Content-Disposition: attachment; filename="' . $fileName . '"'); のあとで、fopen() ->> fpassthru();で処理したのですが、小さい画像ファイルは処理は終わっていますが、「X」の状態で表示されて、大きい画像ファイルを指定するとfpassthru()の中で死んでしまいます。 fread ->> print ->> flush()ループで処理すると、flushの中で死んでしまいます。 error.logにも特に情報が残っていないので... 何かご存知の方はいらっしゃいませんか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでPDFファイルをダイレクトに編集するには?

    PHPでWeb上に表示されたpdfファイルに、ユーザーがダイレクトに画像を貼り付けることができ、保存までできるようにしたいと思っております。 どうかご教授ください。よろしくお願い致します。

    • 締切済み
    • PHP
  • phpでpdfをhtmlにして、表示したい。

    phpでpdfをhtmlにして、表示したい。 pdfファイルは既にあります。 そのpdfをhtmlで表示したいのです。 htmlにして、検索エンジンにヒットするようにしたいのです。 方法を教えてください。 pdfを一端テキストファイルに変換する、 又はhtmlに変換する必要があると思います。 できるだけ簡単な方法を教えて下さい。 よろしくお願いします。 最近のGoogle Docs の PDF Viewer では日本語に対応していないので、 何も表示されませんでした。 他の方法をお願いいたします。

    • ベストアンサー
    • PHP
  • PDFでの画像表示

    ホームページビルダーでWebページを作成し、「Adobe PDF」でPDFにすると、画像のまわりが白くなります。丸い形の画像の場合、背景に色がついていると丸のまわりが四角く白抜きされた状態になります。 画像は透過処理しています。PDFにしなければちゃんと表示されます。原因がお分かりの方がいらっしゃいましたら、是非是非ご教授下さい。よろしくお願い致します。 

  • PDF画像の表示

    webページでpdfの画像が貼り付けられているのですがクリックしないと画像が出てきません。他のPCでそのページを見ると普通に表示されているので設定の問題だと思いますが、設定方法をよろしくお願い致します。