- 締切済み
PDFJが動作しない
中島さんがフリーで配布されておられるPDFJを使ってPDFファイルの生成をしようとしています。(http://hp1.jonex.ne.jp/~nakajima.yasushi/) cgiでいろんな操作をしている中の1つとして、生成したxmlファイルからPDFファイルを作りたいので、次のようにツリー構成しました。 xxx(http://xxx.comのトップフォルダ) ├cgi/(705)┬aaa.cgi(705) ├bbb.xml(606) └lib/(705)┬PDFJ.pm(604) ├XPDFJ.pm(604) ├macro/(705)(はじめからセットされていた物すべて604で収納) ├PDFJ/(705)(はじめからセットされていた物すべて604で収納) └util/(705)(はじめからセットされていた物すべて604で収納) └data/(705) aaa.cgiで操作している中で、bbb.xmlを生成し、その後pdfファイルをdataフォルダに生成しようとしています。 bbb.xmlファイルは次のように記述し生成しています。 <?xml version="1.0" encoding="x-sjis-cp932"?> <XPDFJ version="0.2"> <do file="macro/stdders.inc"/> <do file="macro/toc.inc"/> <do file="macro/index.inc"/> <HXOUTLINE/> <BODY> ...中身... </BODY> <print file="$Args{outfile}"/> </XPDFJ> xmlファイルを作った後、aaa.cgi内で BEGIN { push @INC, 'フルパス/xxx/cgi/lib'; } use XPDFJ; $xpdfj = new XPDFJ; $xpdfj->parsefile($xmlfile, outfile => $outfile); #$outfileはaaa.cgiの冒頭で「$outfile = "../data/print.pdf";」と指定 として実行してみたのですが、Internal Server Errorとなり、当然ながらprint.pdfは生成されません。 perlチェックではエラーはありませんでしたし、BEGINの直前にxmlファイルを作っていますが、そこまではうまく機能しています。 説明を全部読みましたがうまくいきません。 ネットで使い方などを書いたサイトがないか探してみましたが、他の方が書いたサイトが全然見つかりませんでした。 上記のどこを修正すればいいのでしょうか、おわかりの方是非アドバイスください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
サーバにログインできれば (適当な値を渡すことにより) Perl のスクリプトとして実行することはできるはずです. ログインの詳細については「サーバを運営しているところ」に聞いてください. あと, 「適当な値」がなんであるかは知りません. で, 後半の「do file でファイルが読み込めているかどうか」を確かめる方法も XPDFJ を使ったことがないので知りません. 「スクリプトのある位置からの相対指定」だったら "macro/なんとか" ではまずい気もするけど.
- Tacosan
- ベストアンサー率23% (3656/15482)
CGI として動かす前に, 単体のプログラムとしてきちんと動作することは確認されているのでしょうか? あとちょっと気になるのですが, do file でファイルは読み込めてますか?
お礼
回答ありがとうございます。 >単体のプログラムとしてきちんと動作することは確認されているのでしょうか? すみません、どのように検証していいのか分りません。 perlチェックをかけてsyntax OKと出たら後はトライアンドエラーでいつもやってます。 >do file でファイルは読み込めてますか? xmlの記述はサイトマップを作るのにweb上で自動生成をしたのを改変する程度で、手書きをしたのが今回が初めてでdo fileが読めているのかどうやって確認すればいいのか分りません。
お礼
再度の回答ありがとうございます。 相対指定についてはXPDFJ.pmからなのかaaa.cgiからなのか分らないので両方試してみましたがどちらでもエラーになってました。 質問してからも大分検証したり調べたりしたのですが、do fileが読み込めているかどうかすら調べる方法が分らないので、壁はかなり高いと思いますので、別の方法でPDFファイルを作成する方法を検討してみます。 ありがとうございました。