web-dev-qa-db-ja.com

レンダリングPDF

PDFを使用してiTextSharpを使用し、CSSを使用してページをレンダリングする方法を考えます。CSSはHTMLに埋め込むか、個別に渡すことができます。それが動作するように。

具体的なコード例は大いにになります。

また、私は本当にiTextSharpを使い続けたいと思っていますが、何か他に提案がある場合は、無料でオープンソースであり、商用ソフトウェアでの使用を許可するライセンスが必要です。

21
Adam Haile

現時点では不可能ですが、それを行うオープンソースプロジェクトの開始を妨げるものはありません。私も必要なので、私は実際にそれを始めるかもしれません!

基本的には、htmlおよびcssマークアップをiTextSharpクラスに変換するパーサーが必要です。したがって、<table>iTextSharp.SimpleTableになります。

限られたhtmlおよびcssサブセットで機能するプロトタイプを簡単に作成できます。

更新:これが可能になるまでは、この方法で一時的に解決しました。 2つのステップのみ:

  • PDFCreator と呼ばれるオープンソースアプリをダウンロードするようユーザーに指示します
  • 印刷用のスタイルシートを提供することにより、すべてのHTMLレポートを印刷しやすくします。

    複数ページのレポートの一部にすべてのページにヘッダーを含める必要がある場合は、THEAD htmlタグでヘッダーを設定します。

これで、ユーザーは印刷しやすくなり、PDFCreatorプリンタードライバーを選択すると、PDF形式のレポートを取得することもできます(他のpdfプリンタードライバーはありますが、これは無料でオープンソースです)。

また、HTMLはPDFほど柔軟ではありませんが、それで十分かもしれません。私は実際のユーザーといくつかのテストを行っていましたが、彼らは実際にそれを気に入っています。彼らは何でもPDF(私のアプリを超えて)に印刷できるようになるだけでなく、ダウンロードして待つ必要がないため、ワークフローが速くなります。彼らのPDFリーダーが開きます。彼らは単にウェブブラウザから直接ウェブサイトに表示されるものを印刷(またはPDFにエクスポート)します。

9
lubos hasko

WKHTMLTOPDFをお試しください。

これは、webkitのオープンソース実装です。どちらも無料です。

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

6
Mic
 List<DateTime[]> getListWeeks(int annee)
        {
            List<DateTime[]> weeks = new List<DateTime[]>();
            DateTime beginDate = new DateTime(annee, 1, 1);
            DateTime endDate = new DateTime(annee, 12, 31);
            int nb =(int)beginDate.DayOfWeek;
            DateTime monday = beginDate.AddDays(-nb+1); ;
            DateTime saturday = monday.AddDays(6);
            while (monday < endDate)
            {
                    weeks.Add(new DateTime[] { monday, saturday });
                    monday = monday.AddDays(7);
                    saturday = monday.AddDays(6);
            }
            return weeks;
        }
2
Noureddine HALA