24

ライブラリPDFSharpは-iTextSharpのように-PDFファイルを生成できますか*HTMLフォーマットを考慮に入れます*?(太字(強い)、間隔(br)など)

以前、私はiTextSharpを使用し、そのように大まかに処理しました(以下のコード):

 string encodingMetaTag = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
 string htmlCode = "text <div> <b> bold </ b> or <u> underlined </ u> <div/>";

 var sr = new StringReader (encodingMetaTag + htmlCode);
 var pdfDoc = new Document (PageSize.A4, 10f, 10f, 10f, 0f);
 var = new HTMLWorker htmlparser (pdfDoc);
 PdfWriter.GetInstance (pdfDoc, HttpContext.Current.Response.OutputStream);
 pdfDoc.Open ();
 htmlparser.Parse (sr);
 pdfDoc.Close ();

クラスオブジェクトHTMLWorkerを処理するPDFドキュメントの適切なHTMLフォームに組み込まれます。PDFSharpではどうでしょうか。PDFSharpと同様のソリューションがありますか?

4

11 に答える 11

17

私はこの質問が古いことを知っていますが、これはそれを行うためのきれいな方法です...

HtmlRendererをPDFSharpと組み合わせて使用​​すると、これを実現できます。

Bitmap bitmap = new Bitmap(1200, 1800);
Graphics g = Graphics.FromImage(bitmap);
HtmlRenderer.HtmlContainer c = new HtmlRenderer.HtmlContainer();
c.SetHtml("<html><body style='font-size:20px'>Whatever</body></html>");
c.PerformPaint(g);
PdfDocument doc = new PdfDocument();
PdfPage page = new PdfPage();
XImage img = XImage.FromGdiPlusImage(bitmap);
doc.Pages.Add(page);
XGraphics xgr = XGraphics.FromPdfPage(doc.Pages[0]);
xgr.DrawImage(img, 0, 0);
doc.Save(@"C:\test.pdf");
doc.Close();
        

どうやら自動アンチエイリアシングが原因で、最終的な画像が少しぼやけて見えると報告する人もいます。これを修正する方法に関する投稿メッセージは次のとおりです。http://forum.pdfsharp.com/viewtopic.php?f=2&t=1811&start=0

于 2013-06-14T22:59:41.130 に答える
11

いいえ、PDFsharp には現在、HTML ファイルを解析するためのコードが含まれていません。

于 2011-09-29T12:39:47.310 に答える
4

古い質問ですが、上記のどれもうまくいきませんでした。次に、 pdfsharpと組み合わせてHtmlRenderergeneratepdfのメソッドを試しました。役に立てば幸いです: という名前のナゲットをインストールする必要があります。HtmlRenderer.pdfsharp

var doc = TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator.GeneratePdf("Your html in a string",PageSize.A4);
  PdfPage page = new PdfPage();
  XImage img = XImage.FromGdiPlusImage(bitmap);
  doc.Pages.Add(page);
  XGraphics xgr = XGraphics.FromPdfPage(doc.Pages[0]);
  xgr.DrawImage(img, 0, 0);
  doc.Save(Server.MapPath("test.pdf"));
  doc.Close();
于 2015-06-29T07:24:02.440 に答える
3

昨年開発したプロジェクトでは、wkhtmltopdf ( http://wkhtmltopdf.org/ ) を使用して html から pdf を生成し、ファイルを読み取ってユーザーに返しました。

それは私にとってはうまく機能し、あなたにとってはアイデアになるかもしれません...

于 2011-09-30T10:15:17.430 に答える
1

これについて聞いたことがありますか。私は非常に遅く答えるかもしれませんが、それが役立つと思いました. それは非常に簡単で、うまく機能します。

var htmlContent = String.Format("<body>Hello world: {0}</body>", 
        DateTime.Now);
var htmlToPdf = new NReco.PdfGenerator.HtmlToPdfConverter();
var pdfBytes = htmlToPdf.GeneratePdf(htmlContent);

編集:「PDFSharp」を使用してHTMLコードをPDFに変換するという質問でここに来て、「PDFSharp」ではそれができないことがわかり、NRecoについて知り、それがうまくいったので、私のような人に役立つかもしれないと感じました。

于 2017-01-06T22:39:04.183 に答える
1

本当に古い質問があることは知っていますが、HTML を PDF にレンダリングする正確な方法を実際に言っている人は誰もいないことに気付きました。私のテストに基づいて、正常に実行するには次のコードが必要であることがわかりました。

Bitmap bitmap = new Bitmap(790, 1800);
Graphics g = Graphics.FromImage(bitmap);
XGraphics xg = XGraphics.FromGraphics(g, new XSize(bitmap.Width, bitmap.Height));
TheArtOfDev.HtmlRenderer.PdfSharp.HtmlContainer c = new TheArtOfDev.HtmlRenderer.PdfSharp.HtmlContainer();
c.SetHtml("Your html in a string here");

PdfDocument pdf = new PdfDocument();
PdfPage page = new PdfPage();
XImage img = XImage.FromGdiPlusImage(bitmap);
pdf.Pages.Add(page);
XGraphics xgr = XGraphics.FromPdfPage(pdf.Pages[0]);
c.PerformLayout(xgr);
c.PerformPaint(xgr);
xgr.DrawImage(img, 0, 0);
pdf.Save("test.pdf");

別の方法もありますが、サイズに問題がある可能性があります。

PdfDocument pdf = PdfGenerator.GeneratePdf(text, PageSize.A4);
pdf.Save("test.pdf");
于 2015-10-13T22:42:02.193 に答える
0

アプリで単純な解析が必要で、html 入力を制御できる場合は、独自のライブラリを作成できます。

プロジェクトの 1 つで作成しましたが、特定のアプリケーションに関連するカスタム機能のため、残念ながらまだ共有できません。

基本的に、基本的な HTML を PDF に実装するには、次のロジックに従う必要があります。

  1. タグの単純な HTML 解析
  2. 太字、斜体、左、中央などの一般的なスタイルを認識するロジックを作成し、これらのプロパティを使用して PDFSharp クラスを作成し、HTML のスタイル属性として追加される Para に割り当てます。
  3. 表タグを処理し、PDF で行と列を追加する
  4. 段落を追加するための段落タグ。

ここでは、実装に基づいてロジックの非常に広範な概要を説明しました。

あなたはもっと良い考えを持っているかもしれません:)

参照することもできます: asp.net で iTextSharp を使用して HTML テーブルの内容を PDF ドキュメントに書き込む

于 2014-06-06T11:05:20.683 に答える