首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >基于超文本标记语言代码(iTextSharp,PDFSharp?)

基于超文本标记语言代码(iTextSharp,PDFSharp?)
EN

Stack Overflow用户
提问于 2011-09-29 20:09:41
回答 11查看 84.3K关注 0票数 24

PDFSharp是否可以像iTextSharp一样生成PDF文件*考虑HTML格式*?(粗体(强)、间距(br)等)

之前我使用的是iTextSharp,并以这种方式粗略地处理(代码如下):

代码语言:javascript
复制
 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 ();

合并到适当的超文本标记语言表单中,以处理类object HTMLWorker..那么PDFSharp有什么用呢?有PDFSharp类似的解决方案

EN

回答 11

Stack Overflow用户

发布于 2013-06-15 06:59:41

我知道这个问题有点老生常谈,但这里有一个干净利落的方法……

您可以结合使用HtmlRendererPDFSharp来实现这一点:

代码语言:javascript
复制
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

票数 18
EN

Stack Overflow用户

发布于 2011-09-29 20:39:47

不,PDFsharp目前不包含用于解析HTML文件的代码。

票数 10
EN

Stack Overflow用户

发布于 2015-06-29 15:24:02

这是一个老问题,但上面的这些都不适用于我。然后我尝试了HtmlRenderer结合pdfsharpgeneratepdf方法。希望对您有所帮助:您必须安装一个名为HtmlRenderer.pdfsharp的nuget。

代码语言:javascript
复制
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();
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7597103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档