0

RichFaces で JSF 1.2 を使用しています。Web ブラウザ クライアントの「名前を付けて保存」を模倣することは可能ですか? より正確には、ページに「ダウンロード zip」を追加したいと考えています。目的は、HTML で生成されたページと、そのページを正しいレイアウトで開くために必要なすべてのファイルを含む zip アーカイブを生成することです。

私は過去に を使って HTML ページをキャプチャすることに成功しましたHttpResponseWrapper。ただし、ページに RichFaces コンポーネントが含まれるとすぐに、正しく表示するためにいくつかの JS と画像が必要になります。これらのリソースを取得して zip に追加するにはどうすればよいですか?

4

1 に答える 1

0

JsoupのようなHTMLパーサーを使用します。jQueryのようなCSSセレクターによってCSS/JS / image要素を簡単に見つけて、リソースURLを返して、個別にダウンロードできるようにします。

InputStream input = new URL(url).openStream();
// ... Save webpage itself.

Document document = Jsoup.parse(savedWebPage, "UTF-8", url);

for (Element stylesheet : document.select("link[rel=stylesheet]")) {
    InputStream input = new URL(stylesheet.absUrl("href")).openStream();
    // ... Save individual stylesheet file.
}

for (Element script : document.select("script[src]")) {
    InputStream input = new URL(script.absUrl("src")).openStream();
    // ... Save individual script file.
}

for (Element img : document.select("img[src]")) {
    InputStream input = new URL(img.absUrl("src")).openStream();
    // ... Save individual image file.
}

CSSの背景画像は考慮されません。個々のCSSファイルごとにSACのようなCSSパーサーを検討できます。

于 2013-02-06T14:43:40.260 に答える