17

phantomjs を使用して自分の Web サイトのスナップショットを取得しようとしています。基本的に、これはユーザーが送信したコンテンツの「プレビュー イメージ」を作成することです。

サーバーにphantomjsをインストールし、適切なページに対してコマンドラインから実行すると正常に動作することを確認しました. ただし、Web サイトから実行しようとすると、何もしていないように見えます。コードが呼び出されていること、ファントムが実際に実行されていることを確認しました (プロセスを監視し、呼び出したときにプロセス リストに表示されるのを確認できます) - ただし、イメージは生成されません。

なぜ画像が作成されないのかを理解するためにどこを見ればよいのかわかりません - 何か提案はありますか? 関連するコード ブロックは次のとおりです。

string arguments = "/c rasterize.js http://www.mysite.com/viewcontent.aspx?id=123";
string imagefilename = @"C:\inetpub\vhosts\mysite.com\httpdocs\Uploads\img123.png";

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = false;
p.StartInfo.FileName = @"C:\phantomjs.exe";
p.StartInfo.Arguments = arguments + " " + imagefilename;

p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
4

2 に答える 2

8

C# コードから phantomjs を実行する最も簡単な方法は、NReco.PhantomJSのようなラッパーを使用することです。次の例は、rasterize.js で使用する方法を示しています。

var phantomJS = new PhantomJS();
phantomJS.Run( "rasterize.js", new[] { "https://www.google.com", outFile} );

ラッパー API には、stdout および stderr のイベントがあります。また、C# ストリームから入力を提供し、stdout の結果を C# ストリームに読み取ることもできます。

于 2015-04-05T12:15:25.327 に答える