こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

レンタルサーバ(lolipop)でディレクトリに置いてあるPDFファイルを画像として表示したいと思ってますが、何故PHP初心者の為、ネットで探してみましたが、エラーになりなかなか上手くいきません。
おわかりになる方、宜しくお願い致します。

あるディレクトリに複数のPDFファイルがあります(ページ数はすべて1ページのみ)
そのPDFを画像としてブラウザに並べて表示して、クリックすると実際のPDFが表示されるしくみを作りたいです。

解り難い表現でしたら、申し訳ありません。
お解かりになる方、宜しくお願い致します。

投稿日時 - 2012-06-17 13:16:55

QNo.7538513

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(7)

ANo.7

>Fatal error: Uncaught exception 'ImagickException' with message 'Postscript delegate failed `0011.pdf': No such file or directory'

との事なので、"GhostScript"でうまく処理できていないという事だと思います。
一度プロバイダーに確認されるのが良いのではと思います。

投稿日時 - 2012-06-17 21:30:34

お礼

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

有難うございました

投稿日時 - 2012-06-18 12:01:52

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

投稿日時 - 2012-06-17 17:26:42

補足

有難うございます。
リンクも参照してみました。

結果
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ということがわかりました。

いろいろ有難うございます。
もう少し調べてみようと思います

投稿日時 - 2012-06-17 17:44:52

ANo.5

$im = new imagick($file."[0]"); <<これは試してもらえましたか?

エラーメッセージ見ているとimagicの引数は配列みたいですね。

上記を、下記に変えたらどうなりますか?

$im = new Imagick(); // 引数無し
$im->readImage($file."[0]"); // 追加

投稿日時 - 2012-06-17 16:12:44

補足

ありがとうございます。変更してみました。
<?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

いろいろ申し訳ありません

投稿日時 - 2012-06-17 16:19:45

ANo.4

先ほど、フルパスはダメだと解っているので、
$file = '/xxx/xxx/0/xxx/web/pdf/0011.pdf';
をファイル名だけに
$file = '0011.pdf';

$im = new imagick("$file[$page]");

$im = new imagick($file."[0]");

でどうでしょうか?

投稿日時 - 2012-06-17 15:49:21

補足

度々有難うございます
フルパスは解除し、下記にて調整しました

<?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

ファイルが見つからないというエラーでしょうか。
色々と恐れ入ります。

投稿日時 - 2012-06-17 15:58:01

ANo.3

もしかするとこの部分が、

$im = new imagick($file[$page]);
$im = new imagick("$file[$page]");

ではありませんか?

投稿日時 - 2012-06-17 15:27:45

補足

ありがとうございます。
いろいろ試してはいますが、エラーが続いてます。。。

現状、
<?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で問題ないのでしょうか。

何かと恐れ入ります。お時間あれば、宜しくお願いいたします

投稿日時 - 2012-06-17 15:41:39

ANo.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';

に変更すればなんとかなりませんか?

投稿日時 - 2012-06-17 14:54:51

補足

有難うございます。
変更してみましたが、下記のエラーになります

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

投稿日時 - 2012-06-17 15:07:00

ANo.1

ImageMagickを使っているのでしょうか?

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

投稿日時 - 2012-06-17 13:31:06

補足

ありがとうございます。

インターネットで調べたところ、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初心者の為、何がいけないのかのイメージがわきません。。。
宜しくお願い致します

投稿日時 - 2012-06-17 13:51:12

あなたにオススメの質問