2

ボタンをクリックしてからPDF版のページを作成する必要があるため、作業は簡単ではありません。複雑なdom構造であり、多くの要素が絶対的/相対的に配置されており、データは動的にロードされます。PDFの生成を可能にするため、このタスクにPhantom.jsサーバーを使用することを考えましたが、これにはいくつかの問題があります。

  • phantomjsは、コンソールから実行するか(PDFの生成はUNIXシステムとWINシステムの両方で使用可能であり、ページから実行できるのはシェルスクリプトのみであるため、ここでは不可能です)、または組み込みサーバーを使用して実行できます。
  • サーバーはページを実行しているサーバーとは異なるドメインを持っているため、同一生成元ポリシーの問題が発生します。srcと私のページのhtmlが引数で渡されるので、phantomjsサーバーアドレスでiframeを使用することを考えていましたが、引数が長すぎて413エラーを返します。JSONPはGETリクエスト用に構築されており、引数が長すぎる場合と同じ問題が発生するため、機能しません。

クライアント側で生成することも考えましたが、サイトが複雑なため、ページの適切な表現を取得するのにおそらく何日もかかるでしょう(すべてのポジショニング値をptsに再計算する必要があるため)。一般的なソリューション。

これを解決する方法の他のアイデアはありますか?

4

3 に答える 3

2

サーバー側で PDF を生成するためのツールをいくつか調べました。

私が使用しようとした Web SuperGoo の abcPDF (.net) と呼ばれるものがありますが、常に機能しないという問題がありました。

.net と Java の両方のバージョンで利用できる iText と呼ばれる、はるかにうまく機能するように思われる別のものがあります。使用するバージョンに応じて、AGPL、LGPL、および商用ライセンスで利用できます。

別の言い方をしたいのですが、HTML から PDF に簡単に変換する方法がわかりません。これらの各ライブラリには、ドキュメントがどのように表示されるかを記述するためにプログラミングする必要がある API があります。

于 2012-05-10T14:35:05.550 に答える
1

PDFプリンターを使用するのはどうですか?システムによっては、PDFプリンターが組み込まれている場合もあれば、Windowsを使用している場合は、PDFCreatorを確認することもできます。

于 2012-05-10T15:30:22.000 に答える
1

Ajax を使用して DOM 全体をサーバーに送信し、( phantomjsPOSTを使用して) PDF としてレンダリングし、JSON 応答でサーバー URL (およびナンス) を送り返すのはどうでしょうか? その後、ダウンロード リンクを作成するか、ダウンロードを自動的に開始することができます。それはうまくいくでしょうか?

于 2012-07-08T23:30:03.643 に答える