最近做一个项目,客户需要将html静态页面转成pdf格式,供打印使用。

客户希望可以自己控制打印的纸张大小和打印方向(横向和纵向)

使用的一个工具就是abcpdf,客户要求简略如下

1.使用document.documentElement.abcpdf =“lplplp_34523”属性控制整个文件的纸张。[l]表示横向。[p]表示纵向。[数字]表示a2,a3的纸张。

上例表示第一张用a3的纸张横向打印,第二张的用a4的纸张纵向打印,以此类推。。。

这个可以用string allLinks = theDoc.HtmlOptions.GetScriptReturn(theID);来取得js中设置的值来控制。比较容易实现

2.可以在html文件中加入css样式来控制下一页的纸张大小和方向。

如:<div id="div01p_3" style="abcpdf-tag-visible: true;page-break-before:alway">

表示下一页用a3的纸纵向打印。

这个值可以使用string[] tagIds = theDoc.HtmlOptions.GetTagIDs(id);来获取。

但是我在测试的时候发现使用这个函数并不能找到当前页的有【abcpdf-tag-visible: true】的id。

但是我在查文档有一句话:

Note that only HTML elements which have an actual visual representation in the final output will be tagged

只有设了abcpdf-tag-visible: true的可见元素才能取得到值。也就是说在web浏览器中不显示的元素娶不到值。比如 空的div标签

所以设置属性的标签应该如下所示:

<div id="div01p_3" style="abcpdf-tag-visible: true;page-break-before:alway">&nbsp;</div>

这样就能取到值了。

 文档的说明连接如下:

http://www.websupergoo.com/helppdf9net/source/5-abcpdf/xhtmloptions/2-properties/addtags.htm