4

私は C# Web サイトを使用して asp.net で作業しています。css スタイル (背景色、cssClass など) を持つ div、ラベル、テーブル、画像などのさまざまな html 要素を含む HTML DIV を変換したいのですが、iTextSharp DLL を使用してそのコンテンツ全体を PDF に変換したいのですが、ここで私は直面していますcss が適用されないという問題があります。

4

2 に答える 2

2

2 つの NuGet パッケージ iTextSharp と itextsharp.xmlworker をインストールし、次のコードを使用します。

using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;


byte[] pdf; // result will be here

var cssText = File.ReadAllText(MapPath("~/css/test.css"));
var html = File.ReadAllText(MapPath("~/css/test.html"));

using (var memoryStream = new MemoryStream())
{
            var document = new Document(PageSize.A4, 50, 50, 60, 60);
            var writer = PdfWriter.GetInstance(document, memoryStream);
            document.Open();

            using (var cssMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(cssText)))
            {
                using (var htmlMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)))
                {
                    XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, htmlMemoryStream, cssMemoryStream);
                }
            }

            document.Close();

            pdf = memoryStream.ToArray();
}
于 2016-06-21T13:41:05.033 に答える
0

wkhtmltopdfの C# ラッパーであるPechkin を確認してください。

具体的には、この時点で (保留中のプル リクエストを考慮して) 、いくつかのバグに対処するこのフォークを確認します (特に私の経験に基づく IIS で役立ちます)。

フォークを使用しない場合やその他の安定性の問題が発生する場合は、ある種の「レンダリング キュー」(データベースなど) を検討し、バックグラウンド プロセス (Windows サービスなど) をキューで定期的に実行して、レンダリングしてから、バイナリコンテンツをどこかに保存します(データベースにも、またはファイルシステムにも)。ただし、これはユースケースに完全に依存します。

または、同様のソリューション@DaveDevにコメントがリンクされています。

于 2013-10-29T15:17:39.467 に答える