HTML转PDF(C# itextsharp)
一、 需求:将HTML转PDF打印。Web项目中总是有这样的需求,很是让人苦恼。
二、 分析:如何完成这个工作?
1、 需要解析HTML,然后利用itextsharp绘制pdf文档。解析HTML是一个很难完成的任务,各个浏览器对HTML的解析五花八门就知道这不好解决。这条路不好走,但也是可以完成的,通过webbrowser类可以解析HTML获取各对象的位置,然后绘制到pdf中。方法是可行,其中的复杂度不小。
2、 将HTML保存为图片,然后插入到pdf文档中,这里将介绍这种方法。随之而来的问题:如何将HTML保存为图片呢?
三、 解决办法:
1、 将HTML保存为图片:需要用到webbrower类,将指定的HTML载入webbrower,然后调用其DrawToBitmap方法获取图片。代码如下:
private System.Drawing.Bitmap bitmap;
private string url;
private int w = 760, h = 900;//A4纸张对应的分辨率大概就是760*900
public void setBitmap()
{
using (WebBrowser wb = new WebBrowser())
{
wb.Width = w;
wb.Height = h;
wb.ScrollBarsEnabled = false;
wb.Navigate(url);
//确保页面被解析完全
while (wb.ReadyState != WebBrowserReadyState.Complete)
{
System.Windows.Forms.Application.DoEvents();
}
bitmap = new System.Drawing.Bitmap(w, h);
wb.DrawToBitmap(bitmap, new
相关文档:
前台脚本的元素自动下拉扩展:
具体是当鼠标放在一个元素上时,这个元素如果显示不全,就自动扩展,并且不会影响其它的元素.移开鼠标该元素自动还原成原来的样式.
在Coding 的过程中,一个跨Browser的问题是:
在每一次显示 float div前 ......
1、DateTime 数字型
System.DateTime currentTime=new System.DateTime();
1.1 取当前年月日时分秒
currentTime=System.DateTime.Now;
1.2 取当前年
&nb ......
最近要改写一个核心加密认证类,从C#改写成Java。
发现在调试时,加密的数据无论如何也对不上。
经过跟踪,发现问题出在C#和Java byte类型的区别上:在C#里 byte类型是无符号的,而Java里是有符号的,所以C#里的129到Java里就成了负数。
发现了问题,解决就比较容易了,针对Java的byte,采用Int来进行存储。
通过如下代 ......
处境堪忧的Adobe Flash将面临另一次打击,在线文档最终也开始表明立场。目前网上大部分文档(PDF、Word文档、幻灯片)只能在Flash播放器内部播放,无法显 示为完整的网页。明天在线文档分享网站Scribd上的数百万份文档不再使 用Flash播放,而是将转化为本地HTML5网页。这些文档不仅可以在iPad上完美显示 ......
<html>
<head>
<mce:style type = "text/css"><!--
div
{
overflow-y:scroll;
height:200;
overflow-x:scroll;
width:200;
}
--></mce:style><style type = "text/css" mce_bogus="1"> div
{
ove ......