レンタルサーバ(lolipop)でディレクトリに置いてあるPDFファイルを画像として表示したいと思ってますが、何故PHP初心者の為、ネットで探してみましたが、エラーになりなかなか上手くいきません。
おわかりになる方、宜しくお願い致します。
あるディレクトリに複数のPDFファイルがあります(ページ数はすべて1ページのみ)
そのPDFを画像としてブラウザに並べて表示して、クリックすると実際のPDFが表示されるしくみを作りたいです。
解り難い表現でしたら、申し訳ありません。
お解かりになる方、宜しくお願い致します。
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
ImageMagickを使っているのでしょうか?
具体的にどういう設定で、どういうロジックでエラーになるのかを
説明頂かないと、アドバイスするのは難しいと思います。
この回答への補足
ありがとうございます。
インターネットで調べたところ、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初心者の為、何がいけないのかのイメージがわきません。。。
宜しくお願い致します
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';
に変更すればなんとかなりませんか?
この回答への補足
有難うございます。
変更してみましたが、下記のエラーになります
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
No.3
- 回答日時:
もしかするとこの部分が、
$im = new imagick($file[$page]);
$im = new imagick("$file[$page]");
ではありませんか?
この回答への補足
ありがとうございます。
いろいろ試してはいますが、エラーが続いてます。。。
現状、
<?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で問題ないのでしょうか。
何かと恐れ入ります。お時間あれば、宜しくお願いいたします
No.4
- 回答日時:
先ほど、フルパスはダメだと解っているので、
$file = '/xxx/xxx/0/xxx/web/pdf/0011.pdf';
をファイル名だけに
$file = '0011.pdf';
$im = new imagick("$file[$page]");
を
$im = new imagick($file."[0]");
でどうでしょうか?
この回答への補足
度々有難うございます
フルパスは解除し、下記にて調整しました
<?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
ファイルが見つからないというエラーでしょうか。
色々と恐れ入ります。
No.5
- 回答日時:
$im = new imagick($file."[0]"); <<これは試してもらえましたか?
エラーメッセージ見ているとimagicの引数は配列みたいですね。
上記を、下記に変えたらどうなりますか?
$im = new Imagick(); // 引数無し
$im->readImage($file."[0]"); // 追加
この回答への補足
ありがとうございます。変更してみました。
<?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
いろいろ申し訳ありません
No.6
- 回答日時:
この回答への補足
有難うございます。
リンクも参照してみました。
結果
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ということがわかりました。
いろいろ有難うございます。
もう少し調べてみようと思います
No.7
- 回答日時:
>Fatal error: Uncaught exception 'ImagickException' with message 'Postscript delegate failed `0011.pdf': No such file or directory'
との事なので、"GhostScript"でうまく処理できていないという事だと思います。
一度プロバイダーに確認されるのが良いのではと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- アプリ Edgeを操作するアプリについて 4 2023/05/11 22:48
- その他(プログラミング・Web制作) 【GAS】Gmail本文をブラウザ表示された状態でPDFにしたいです 1 2022/12/12 09:54
- PowerPoint(パワーポイント) 音声マークを一括非表示にしたい。 3 2022/04/09 21:30
- PDF AutoCAD図面をPDF fileに変換した際、画像情報やブロック名はわかるのでしょうか。 1 2022/06/03 09:42
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- WordPress(ワードプレス) WordPressのサイトにPDFをアップロードした際にGoogleなどの検索結果に出ないでほしい 1 2022/08/03 10:44
- PDF いきなりPDFでPDFファイルを開くと表示が崩れる(アドビでは問題なし) 1 2022/04/14 08:42
- その他(IT・Webサービス) WEBサイト内のファイルを探す方法は? 1 2022/11/11 16:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アップロード画像数でCSSを分け...
-
【PHP】サーバー上で TIFFをJPE...
-
★PHP★画像アップロードの際に余...
-
PythonのTkinter詳しい方へ。画...
-
C#とJavaで、MP3タグの画像を表...
-
C# Excelファイルへの画像挿入。
-
透過PNGが透過されない!!
-
Illustratorで文字と画像を流し...
-
GDの画像変換でサーバーに負荷
-
PHP + MySQL で画像データ表示
-
エクセルでカレンダーマクロの...
-
PHPで半透明画像を作りたい
-
VBSの「MsgBox」について
-
imageフォルダに、画像をリサイ...
-
PostgreSQLのラージオブジェク...
-
<img src="http://x.y.com/cgi-...
-
VBAでJPGサイズ変更
-
PHPによる画像の生成による色の...
-
こちらはただの直列処理ですか?
-
フォントの色を変えるには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの「MsgBox」について
-
拡張子php画像をjpg画像等に変...
-
透過PNGが透過されない!!
-
アップロード画像数でCSSを分け...
-
imageフォルダに、画像をリサイ...
-
VBAでJPGサイズ変更
-
Illustratorで文字と画像を流し...
-
VBAのコードを教えてください
-
C# Excelファイルへの画像挿入。
-
php,mysqlにて画像パス保存/表...
-
GDI+を使ったビット数とDPIの扱い
-
SQLiteに画像を格納したい
-
ListViewコントロールでサムネ...
-
★PHP?★画像を縦横比を変えずに...
-
ビットマップ画像を読み込むプ...
-
phpで画像がどうしても文字化け...
-
PHPで吐き出した画像にリンクを...
-
phpMyAdminに画像を保存できない
-
OpenGLで描いて画像ファイル出力
-
手作業で埋め込んだ、UserForm1...
おすすめ情報