如何使用ITEXTSHARP将HTML代码字符串写进PDF

原文 如何使用ITEXTSHARP将HTML代码字符串写进PDF

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 NET未来之路 阅读(...) 评论(...) 编辑 收藏

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

如何使用ITEXTSHARP将HTML代码字符串写进PDF相关推荐

  1. html中的保存功能代码怎么写,java保存html代码怎么写

    java保存html代码怎么写 [2021-01-31 03:29:24]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(" ...

  2. php说明代码怎么写,代码怎么写 - 起步 - PHP基础 - KK的小故事

    起步 - 代码怎么写 ¶ 作者:KK 发表日期:2016.3.9 要写PHP代码就需要建立.php后缀的文件,并且在文件里要以<?php 具体代码 ?>这样的形式来书写PHP代码 我们在网 ...

  3. google python代码规范_Python代码这样写才规范优雅! (二)

    前文传送门:Python代码这样写才规范优雅! (一)参考:https://www.python.org/dev/peps/pep-0008/Python PEP8编码规范的内容如下: 1. Intr ...

  4. Python把数据写进html的表格代码里,收件人显示表格

    获取数据之后,如何能把数据写进HTML的代码里,并直接发送给邮箱 import smtplib from email.mime.text import MIMEText import os,datet ...

  5. html5中的空格怎么写,空格的代码(【html5空格代码怎么写】)

    空格的代码([html5空格代码怎么写]),哪吒游戏网给大家带来详细的空格的代码([html5空格代码怎么写])介绍,大家可以阅读一下,希望这篇空格的代码([html5空格代码怎么写])可以给你带来参 ...

  6. 用Python代码自己写Python代码,竟如此简单

    用Python代码自己写Python代码,竟如此简单 Python作为一门功能强大且使用灵活的编程语言,可以应用于各种领域,具有"无所不能"的特质. Python甚至可以代替人,自 ...

  7. c语言知道算法写不出代码,这个代码怎么写算法啊,求教,我真的不会写算法怎么办#incl...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这个代码怎么写算法啊,求教,我真的不会写算法怎么办 #include "stdio.h" #define N 3 //学生数3. st ...

  8. 一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到...

    机器之心报道 机器之心编辑部 igel 是 GitHub 上的一个热门工具,基于 scikit-learn 构建,支持 sklearn 的所有机器学习功能,如回归.分类和聚类.用户无需编写一行代码即可 ...

  9. OC中的数组,常使用的函数,怎样将字符串写到文件中,将数组写到文件中

    现在我要解决的问题是什么,怎样将字符串写到文件中 NSString *str1=@"Hello World";//首先是定义一个字符串,也就是要操作的字符串 NSString *f ...

最新文章

  1. python3.6.5安装教程-Centos7 安装Python3.6.
  2. docker部署项目 dockerfile 实战 SpringBoot、flask
  3. 数组最大可以开多大_每日算法系列【LeetCode 689】三个无重叠子数组的最大和
  4. 深入理解Java对象序列化
  5. [How TO]-git/gerrit配置方法
  6. Linux提升系统安全性:自动注销 TMOUT
  7. 第十期:快来了解这五种热门的开发技能
  8. winform前后端框架_ABP开发框架前后端开发系列(1)框架的总体介绍
  9. JAVA异常处理实战心得
  10. python无法定位到table_selenium3 + python - table定位
  11. Tk-Mybatis(通用mybatis)简单使用
  12. [转]Go语言(Golang)的Web框架比较:gin VS echo
  13. React-Native 创建App项目
  14. 梦幻西游原服务器物品,梦幻西游:物品贱如粪土的服务器,强化石摆3万无人要...
  15. 基于java的企业门户网站系统设计
  16. KMP算法next数组详解
  17. 【附源码】计算机毕业设计SSM网上销售系统
  18. Egret 性能优化
  19. 牛逼!我竟然能在 VS Code 里逛知乎、发文章
  20. 数据中心的 TCP-Delay ACK 与 RTO, RACK

热门文章

  1. 2018-08-13 谷歌 protobuf-lite:3.0.1
  2. C#获得SQLServer服务器名、数据库名、表名、以及字段名
  3. 游戏服务器的架构设计(一点参考,实际价值似乎不大……)
  4. 计算机一级wps视频教程,计算机一级WPS
  5. OpenCC繁体文章转换成简体字
  6. java 接口嵌套接口_Java接口嵌套
  7. mysql 双主 脑裂_MySQL 高可用性keepalived+mysql双主
  8. oracle数据库王珊,数据库系统概论 王珊 教材部分总结
  9. 机器学习——卷积神经网络计算
  10. 一个具自我复制功能的程序