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