34

文字列からページを作成することは可能ですか?

例:

html = '<html><body>blah blah blah</body></html>'

page.open(html, function(status) {
  // do something
});

私はすでに上記を試しましたが、運がありませんでした。

また、私はphantomjs-node(https://github.com/sgentle/phantomjs-node)でnodejsを使用していることを言及する価値があると思います

ありがとう!

4

5 に答える 5

121

非常に簡単です。colorwheel.jsの例を見てください。

var page = require('webpage').create();
page.content = '<html><body><p>Hello world</p></body></html>';

それで全部です!次に、ページを操作できます。たとえば、画像としてレンダリングできます。

于 2012-08-02T05:20:13.313 に答える
19

これを行うには、ページ コンテンツを文字列に設定する必要があります。

phantom.create(function (ph) {
  ph.createPage(function (page) {
      page.set('viewportSize', {width:1440,height:900})

      //like this
      page.set('content', html);

      page.render(path_to_pdf, function() { 
        //now pdf is written to disk.
        ph.exit();
      });
  });
});

page.set()htmlコンテンツを設定するために使用する必要があります。

https://github.com/sgentle/phantomjs-node#functionality-detailsに従って

プロパティを直接取得/設定することはできません。
代わりに、page.get('version', callback)または page.set('viewportSize', {width:640,height:480}) などを使用してください。

page.set('settings.loadImages', false) のように、キーにドットを含めることで、ネストされたオブジェクトにアクセスできます。

于 2015-04-06T09:48:59.037 に答える
2

phantomjs APIを見ると、page.open は HTML 文字列ではなく、最初の引数として URL を必要とします。これが、あなたが試したことがうまくいかない理由です。

ただし、文字列からページを作成する効果を実現できる方法の 1 つは、空の「スケルトン ページ」を URL (localhost の可能性があります) でホストし、(includeJs を使用して) Javascript を空のページ。空白のページに含める Javascript を使用document.write("<p>blah blah blah</p>")して、Web ページにコンテンツを動的に追加できます。

私はこれをやったことがありますが、知る限りこれはうまくいくはずです。

サンプルスケルトンページ:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head></head>
<body></body>
</html>
于 2012-07-31T17:48:17.903 に答える
2

PhantomJS バージョン 2.0.0 で動作するように以下を取得しました。以前は、 page.open() を使用してファイルシステムからページを開き、コールバックを設定していました。

page.open("bench.html", pageLoadCallback);

ここで、HTML ページの文字列変数から同じことを行います。このpage.setContent()メソッドは 2 番目の引数として URL を必要とし、これを使用fs.absolute()してfile:// URL を作成します。

page.onLoadFinished = pageLoadCallback;
page.setContent(bench_str, "file://" + fs.absolute(".") + "/bench.html");
于 2015-04-06T18:54:59.227 に答える