web-dev-qa-db-ja.com

iTextを使用してHTMLをPDF

ITextを使用してHTMLページ(url)をPDFに変換できるかどうかは誰にもわかりますか?

答えが「いいえ」であれば、それを解決しようとして時間を浪費するのをやめて、私が知っている多くのコンポーネントの1つにお金を費やすだけなので、それでもOKです:)

回答ありがとうございます!

41
Mark

これはまさにあなたが探していたものだと思う

http://today.Java.net/pub/a/today/2007/06/26/generated-pdfs-with-flying-saucer-and-itext.html

http://code.google.com/p/flying-saucer

Flying Saucerの主な目的は、仕様に準拠したXHTMLおよびCSS 2.1を画面にSwingコンポーネントとしてレンダリングすることです。もともとはデスクトップアプリケーション(iTunes Music Storeなど)にマークアップを埋め込むことを目的としていましたが、Flying SaucerはiTextでも拡張されました。これにより、XHTMLをPDF、画像、および画面に非常に簡単にレンダリングできます。空飛ぶ円盤には、Java 1.4以上が必要です。

29
opensas

最終的にwebSupergooのABCPdfを使用しました。それは非常にうまく機能し、約350ドルで、上記のコメントに基づいて何時間も節約できました。 DanielとBratchにコメントをありがとう。

6
Mark

これを行う最も簡単な方法は、pdfHTMLを使用することです。 HTML5(+ CSS3)をpdf構文に変換するiText7アドオンです。

コードは非常に簡単です:

    HtmlConverter.convertToPdf(
        "<b>This text should be written in bold.</b>",       // html to be converted
        new PdfWriter(
            new File("C://users/mark/documents/output.pdf")  // destination file
        )
    );

詳細については、 http://itextpdf.com/itext7/pdfHTML にアクセスしてください

3

あなたの質問への答えは、実際には二つあります。まず、レンダリングされたHTMLで行うことを指定する必要があります。新しいPDFファイルに保存するか、別のレンダリングコンテキスト内で使用します(つまり、他のドキュメントに追加します生成しています)。

前者は、Flying Saucerフレームワークを使用して比較的簡単に実現できます。フレームワークは次の場所にあります。 https://github.com/flyingsaucerproject/flyingsaucer

後者は実際にはさらに包括的な問題であり、さらに分類する必要があります。 iTextを使用すると、iText要素(つまり、ParagraphPhraseChunkなど)を生成されたHTMLと(少なくとも)組み合わせることができません。 ContentByteaddTemplateメソッドを使用して、このテンプレートへのHTMLを生成することにより、これから抜け出すことができます。

一方、生成されたHTMLに透かしや日付などをスタンプしたい場合は、iTextを使用してこれを行うことができます。

つまり、レンダリングされたHTMLを他のPDF生成コンテキストに簡単に統合することはできませんが、HTMLを空白のPDFドキュメントに直接レンダリングできます。

1
Jes