HTMLファイルからPDFへの変換[終了]


128

既存の(X)HTMLドキュメントからPDFファイルを自動的に生成する必要があります。入力ファイル(レポート)は、かなりシンプルなテーブルベースのレイアウトを使用しているので、JavaScript / CSSのような豪華なもののサポートはおそらく必要ありません。

私はJavaでの作業に慣れているので、javaプロジェクトで簡単に使用できるソリューションが望ましいです。ただし、Windowsシステムでのみ動作する必要があります。

feasableですが、(少なくとも、箱から出して)良い品質の出力を生成しません、それを行うための1つの方法は、使用しているCSS2XSLFO PDFファイルを作成するには、とApache FOPを。私が遭遇した問題は、CSS属性が適切に変換されていても、テーブルレイアウトがめちゃくちゃになっていて、テキストがテーブルセルからはみ出していることです。

また、Geckoレンダリングエンジンを使用するためのJava-APIであるJrexについても簡単に説明しました。

おそらくInternet Explorerのレンダリングエンジンからレンダリングされたページを取得し、それをPDF-Printerツールに自動的に送信する方法はありますか?私はWindowsでのOLEプログラミングの経験がないので、何が可能で何が不可能であるかについての手がかりはありません。

アイデアはありますか?


3
私は最近、xhtmlをpdfドキュメントに変換できるJavaライブラリdocbagを作成しました。現在のバージョンは高度なものではありませんが、xhtmlテンプレートがシンプルな場合、このライブラリは便利です。
Jakub Torbicki 2012年

行く方法は、ブラウザーの機能を使用して翻訳を行うことだと思います。stackoverflow.com/q/25574082/39998を
デビッドホフマン

キリル文字を含むhtmlからpdfを生成することに悩まされています。省略されているキリル文字以外はすべて問題ありません。このような問題を抱えた人はいますか?
Kristijan Iliev、2015年

@krisiliev:私にも同様の問題があり、覚えている限りでは、使用されているフォントは非常に重要でした。ほとんどのフォントは完全なUTF8文字をサポートしていませんが、次のようにする必要があります: 'font-family:Arial Unicode MS;' (CSS)。また、正しいエンコードを使用するようにしてください(常にUTF-8を使用することをお勧めします)
panschk

2
このリンクは私に役立ち
Mateen

回答:


73

フライングソーサー XHTMLレンダラプロジェクトは、PDFにXHTMLを出力するためのサポートを持っています。例を見てくださいこちらご覧ください


20
飛行サウザーとの本当の問題は、それがAGPL v3のライセンスをlibにあるPDF、レンダリングにiTextのを使用していることである
デヴィッド・ホフマン

11
Flying Saucerが使用するitextのバージョンは2.0.8で、LGPLで入手可能でした。より制限の厳しいライセンスには、バージョン番号5以上のみが含まれます。 stackoverflow.com/questions/2692000/...
ゲイリー・

8
Flying Saucerの本当の問題は、整形式で有効なXMLドキュメントが必要なことです。アンパサンドのようなものをHTMLに含めたり、レンダリングされたHTMLを厳密なXHTMLにしないようにするいくつかのJavaScriptコードによって、意図せずにPDFレンダリングを壊すのは簡単です。ただし、これは自動テストまたはXML検証を含むいくつかのプロセスで軽減できます。
SteveT 2013年

3
@LateralFractal私が知る限り、Flying Saucer 9.0.8(最新バージョンだと思います)は、iText 2.1.7を使用します。これは、許容ライセンス-LGPLを備えた最後のiTextバージョンです。mvnrepository.com/artifact/org.xhtmlrenderer/flying-saucer-pdf/...
ジョナサンCrosmer

2
@JonathanCrosmerうん。PDFには2つのFlyingSaucerパッケージがあり、1つはiText v2用、もう1つはiText v5用です。両方の機能が等しいと仮定します。AGPLリスクはサイドステップすることができます。
LateralFractal 2016年

49

WKHTMLTOPDFを試しましたかか?

シンプルなシェルユーティリティで、WebKitのオープンソース実装です。どちらも無料です。

ここに小さなチュートリアルを設定しまし

編集(2017):

今日何かを建てるなら、私はもうそのルートに行かないでしょう。
ただし、代わりにhttp://pdfkit.org/を使用します。
おそらく、ブラウザで実行するために、すべてのnodejs依存関係を取り除きます。


16
html-page-to-pdf変換を直接行う場合、これは私が見た他の何よりも優れており、無料または商用です。
MGOwen 2009年

Mac OS以外でも動作しますか?
エランメダン2011年

1
@ Eran、Linuxで使用します。Windowsバージョンもあると思います
マイク

1
@マイクはい、Windows版もあります。
ヴィッカリ

Windows XP(バージョン0.9.9)でテストされ、非常によく機能します。また、インストールするマシンの管理者権限は必要ありません。
クリストファーマハン2013年

44

iTextをチェックしてください。これは、HTMLからのデータの読み取りをサポートする純粋なJava PDFツールキットです。CMSからコンテンツをプルしてPDFファイルとしてエクスポートする必要があったときに、最近プロジェクトで使用しましたが、どれもかなり簡単でした。CSSおよびスタイルタグのサポートはかなり制限されていますが、問題なくテーブルをレンダリングします(ただし、列幅を設定することはできませんでした)。

HTMLからPDFを作成すると、次のようになります。

Document doc = new Document(PageSize.A4);
PdfWriter.getInstance(doc, out);
doc.open();
HTMLWorker hw = new HTMLWorker(doc);
hw.parse(new StringReader(html));
doc.close();

9
それはAGPLであり、GPLよりもさらに悪いようです。PDFを提供し、iTextがサーバー側であっても、オープンソースである必要があります。
エランメダン2011年

10
@Eran、最後の非AGPLバージョン(Mavenのcom.lowagie:itext:2.1.7)を使用してください。
Nowaker、2011

1
HTMLWorkerは、XMLWorkerに代わって、ITextの新しいバージョンでは非推奨です。ただし、CSSのサポートはどちらの場合も不十分であり(demo.itextsupport.com/xmlworker/itextdoc/…を参照)、私のニーズには十分ではありませんでした。それどころか、フライングソーサーは完璧でした。
ピノ


4

資金があれば、このビデオが示すようにプリンスXMLに勝るものはありません


1
プリンスのより安い代替品を探しているなら、DocRaptor.comを試してください。エンジンとしてプリンスを使用します。
Julie

そして、もっと安くしたいがオプションが多い場合は、htm2pdf.co.ukを試してください-Webkitとユーザーが実際にWYSIWIGを使用しています
user1914292

3

おそらくInternet Explorerのレンダリングエンジンからレンダリングされたページを取得し、それをPDF-Printerツールに自動的に送信する方法はありますか?

これがActivePDFの動作方法です。これは、何が得られるかがわかっていて、実際には適切なスタイル設定サポートがあることを意味します。

これは、数年前に見たときに、さまざまな改ページCSSコマンドを実際にサポートする数少ないパッケージの1つでもあります。


残念ながら、ActivePDFソフトウェアは非常にイライラします。変換のためにIEブラウザーをバックグラウンドで起動する必要があるため、非常に遅くなる可能性があり、特に安定しているわけでもありません。

現在ベータ版の新しいバージョンがあり、はるかに優れていると思われますが、実際に試す機会がなかったので、どれほど改善されているかわかりません。


役立つ回答をありがとう。価格の関係でActivePDFは本当に適切だとは思いませんが、そのようなものが存在することを知っておくのは良いことです。
panschk 2009年

GrabzItのHTMLからPDFへのAPI:grabz.it/html-to-pdf-image-api.aspxブラウザーでHTMLをレンダリングしてからPDFを作成するのと同じように機能し、これによりPDFの変換がより正確になります。
user1474090 2017年

2

拡張機能付きのヘッドレスFirefoxを使用できます。実行するのはかなり面倒ですが、良い結果が得られます。

詳細については、この回答を確認してください。


オンザフライでページを並行してPDFに変換する必要がある場合、非常にスケーラブルなソリューションのように聞こえません。いくつかのリクエストが通過し、FFを使用して変換が行われる場合、サーバーは、変換されたいくつかのページを提供するためだけに数GIGのメモリを失っています。これにより、サーバーがDOSに開かれます。
mP。

より良いが、同様:github.com/ariya/phantomjs/wiki/Screen-Captureは(に従ってwe-love-php.blogspot.com/2012/12/... PDFを実際のテキスト、ラスタライズされていません)
nafg

0

質問のサイドバーを見ると、関連する多くの質問が表示されます...

あなたのコンテキストでは、より簡単な方法は、PDFCreatorのようなPDF印刷ドライバーをインストールして、この出力にページを印刷することです。


これはJavaソリューションですか?これはWindows印刷ドライバーです。
グレイ

OPは明示的にWindowsについて言及しました。他のシステムにも同様のドライバがあると思います。OPは可能な解決策としてJavaについてのみ言及しました...
PhiLho

0

Amyuni WebkitPDFは、WindowsのみのソリューションのJNIで使用できます。これはHTMLからPDF / XAMLへの変換ライブラリで、商用および非商用で無料で使用できます。

出力ファイルがすぐに必要でない場合は、スケーラビリティーを向上させるために、キューといくつかのバックグラウンドプロセスを使用してそこからアイテムを取得し、それらを変換してデータベースまたはファイルシステムに保存することをお勧めします。

通常の免責事項が適用されます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.