博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何使用ITEXTSHARP将HTML代码字符串写进PDF
阅读量:5136 次
发布时间:2019-06-13

本文共 2425 字,大约阅读时间需要 8 分钟。

原文

itextsharp包括一个简单的类,可以用来根据html代码或字符串创建pdf文件。使用此类,你可以使用短短几行代码,就将 HTML 文档生成一个 PDF 文件。可供下载的演示包含名为 Receipt.htm,其中位于 ~/HTMLTemplate 文件夹中的 HTML 模板文件。此 HTML 文件包含以下标记 (注意-为简洁起见被移除了一些标记)。

 <h1 style="font-weight: bold">Northwind Traders Receipt</h1> 
<p> 
   Thank you for shopping at Northwind Traders. Your order details are below. 
</p> 
<br /><br /> 
<h2 style="font-weight: bold">Order Information</h2> 
<table> 
   <tr> 
      <td style="font-weight: bold">Order:</td> 
      <td>[ORDERID]</td> 
   </tr> 
   <tr> 
      <td style="font-weight: bold">Price:</td> 
      <td>[TOTALPRICE]</td> 
   </tr> 
   <tr> 
      <td style="font-weight: bold">Order Date:</td> 
      <td>[ORDERDATE]</td> 
   </tr> 
</table> 
<br /><br /> 
<h2 style="font-weight: bold">Items In Your Order</h2> 
[ITEMS]
<br /><br /> 
<p style="text-align: center; font-style: italic; font-size: 10pt"> 
   Thank you for your business! If you have any questions about your order, please contact us at 
   800-555-NORTH. 
</p>

请注意,上述标记包含四占位符-括号包围的文本。这里的想法是,我们用itextsharp转上述标记为我们首先将替换占位符的顺序编号,总价格,和其他指标的订单,生成一个收据。转成一个网页,包括下列步骤:

  1. 创建一个文件对象的。
  2. 创建一个pdfwriter对象的。
  3. 在文本作为字符串。
  4. itextsharp的电话htmlworker.parsetolist方法,通过在网页转换成格式。这将返回一个元素的集合。
  5. 添加的每个元素返回步骤3到文件对象的

这内容receipt.htm为一个字符串,然后替换占位符-是通过下面的代码片断:

// Read in the contents of the Receipt.htm file...
string contents = File.ReadAllText(Server.MapPath("~/HTMLTemplate/Receipt.htm"));
// Replace the placeholders with the user-specified text
contents = contents.Replace("[ORDERID]", txtOrderID.Text);
contents = contents.Replace("[TOTALPRICE]", Convert.ToDecimal(txtTotalPrice.Text).ToString("c"));
contents = contents.Replace("[ORDERDATE]", DateTime.Now.ToShortDateString());
...

代码有点长,但它并不十分复杂。该代码简单地建立标记为循环CheckBox List和添加一个表行(< BR >)为每个选定的采购项目。

一旦文本字符串组成了我们准备步骤4和5。步骤4 - itextsharp的htmlworker.parsetolist方法解析文本字符串并返回一个集合的元素。步骤5列举了这个集合的元素,将它们添加到文件对象的。

// Step 4: Parse the HTML string into a collection of elements...
var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(contents), null);
// Enumerate the elements, adding each one to the Document...
foreach (var htmlElement in parsedHtmlElements)
   document.Add(htmlElement as IElement);

页面解析是简单地转换成元素可以被添加到文档。除了这些解析元素还可以添加元素创建,就像我们在我们以前的演示(createpdffromscratch.aspx)。例如,我们可以添加标志的右上角的收据使用相同的代码之前:

var logo = iTextSharp.text.Image.GetInstance(Server.MapPath("~/Images/4guysfromrolla.gif"));
logo.SetAbsolutePosition(440, 800);
document.Add(logo);
posted on
2013-12-27 00:36 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/3493375.html

你可能感兴趣的文章
nodejs中&#x5B89;&#x5353;&#x7AEF;的编码如何转换为中文
查看>>
实验四
查看>>
js实现全屏
查看>>
Javascript中最常用的61个经典技巧
查看>>
进程,线程通信与同步
查看>>
我看APT攻防对抗(2):APT攻击的案例
查看>>
Two Sum - Unique pairs Lintcode
查看>>
存储过程的优点
查看>>
ios 多点触 遍历
查看>>
Dom4j解析XML学习代码
查看>>
poj 1065(贪心)
查看>>
Less开发指南(三)- 代码文件跟踪调试
查看>>
redis笔记-1
查看>>
js 正则
查看>>
Sybase数据库常用sql语言
查看>>
Django标签之包含标签Inclusion tags
查看>>
Git命令
查看>>
Appium之启用手机桌面APP的多种方法
查看>>
洛谷 P2292 [HNOI2004]L语言 题解
查看>>
.Net程序员自学dump分析教程
查看>>