cvmachine.com - 申博开户网

查找: 您的方位主页 > 网络频道 > 阅览资讯:怎样将Html转化为pdf事例?

怎样将Html转化为pdf事例?

2017-11-04 19:35:17 来历:www.cvmachine.com 【

怎样将Html转化为pdf事例?

由于作业所需,最近花时刻研讨了html转化为pdf的功用。html转化为pdf的关键技能是怎样处理网页中杂乱的css款式,经过在网上搜集材料,发现现在html 转化为pdf的处理计划首要分为三类:

客户端形式:前后台调用客户端程序,运用客户端程序的功用完结pdf文件转化。本次测验东西有:wkhtmltopdf和PhantomJS。java jar包解析类形式:java代码解析css款式,翻译html文件为pdf文件。本次测验类有:IText,Flying Sauser,PD4ML。js 前端解析形式:js前端解析html文件为pdf文件,本次测验事例有:html2canvas。

本次针对网上介绍的计划,结合实践项目的需求,做逐个测验,在功用和功用方面做如下剖析。

1.测验页面介绍

经过检查各个转化事例在网上的介绍,简略的html款式,一般的表格款式在做pdf文件转化时,以上的计划均支撑。但考虑到实践事务的需求,本次测验特意用到了bootstrap (v 3.3.6)的css款式,一起页面也运用了css3的新特性。根据这样的新特性编写一个静态的html页面,html页面在阅览器中的展现效果如下:

怎样将Html转化为pdf事例?

2.wkhtmltopdf测验

wkhtmltopdf是一个运用webkit网页烘托引擎开发的用来将html转成 pdf的东西,能够跟多种脚本言语进行集成来转化文档。官网地址http://wkhtmltopdf.org/

技能特色:Wkhtmltopdf能够直接把阅览器中阅览的网页转化成一个pdf,他是一个把html页面转化成pdf的软件(需求装置在服务器上)。运用时可经过java代码调用cmd指令完结网页转化为pdf的功用。

功用测验:直接在cmd里输入测验指令,可检查处理进展。

怎样将Html转化为pdf事例?

第一个参数:wkhtmltopdf.exe地点的途径

第二个参数:需求转化为pdf的html页面

第三个参数:pdf文件途径及文件名

页面导出效果如下:

怎样将Html转化为pdf事例?

测验阐明:

经过测验发现,wkhtmltopdf对bootstap的CSS款式全体支撑较好。对css3的新特性如圆形图片款式支撑行欠好。部分页面款式会失效。关于图表展现,eachart图表导出程序会报错,不支撑。不过echart有图表转化为图片的接口,可经过获取图片地址的办法导出到pdf中。

3.PhantomJS测验

PhantomJS是一个根据webkit内核的无头阅览器,即没有UI界面,即它是一个阅览器,仅仅其内的点击、翻页等人为相关操作需求程序设计完成。它供给javaScript API接口,即经过编写JS程序能够直接与webkit内核交互,在此之上能够结合java言语等,经过java调用js等相关操作,然后处理了曾经c/c++才干比较好的根据webkit开发优质收集器的约束。它一起供给windows、linux、mac等不同os的装置运用包,也便是说能够在不同渠道上二次开发收集项目或是主动项目测验等作业。官网地址http://phantomjs.org/

PhantomJS可做网页剖析,功用许多,本次仅调用网页的截图功用。在cmd中的测验如下:

怎样将Html转化为pdf事例?

测验页面导出效果如下:

怎样将Html转化为pdf事例?

测验阐明:

经过测验发现,PhantomJS对bootstap的款式支撑较好。对css3的新特性如圆形图片款式支撑行欠好。部分页面款式会失效。关于echart图表展现,也可直接导出。效果如下:

怎样将Html转化为pdf事例?

3.IText和Flying Sauser

IText完成html2pdf,速度快,纠错能力差,支撑中文(要求HTML运用unicode编码),但中支撑一种中文字体,开源。Flying Sauser完成html2pdf,纠错能力差,支撑多种中文字体(部分款式不能辨认),开源。

技能特色:根据java编程将html的css款式做解析处理,现在仅对较简略的页面和款式支撑。关于css3的款式和相关杂乱的css款式兼容性极差。当页面内容较长时,处理时刻慢。参阅地址:https://code.google.com/archive/p/flying-saucer/

测验成果:本试验的测验页面无法出来,一般的测验页面效果如下:

怎样将Html转化为pdf事例?

测验阐明:

经过测验发现,IText和Flying Sauser这两个开源项目对css3的兼容性底子不可,经过查阅材料,发现这种技能比较陈腐,这个开源项目现在也没有更新和保护了。关于简略表格,统计数据的导出,更新的技能有bootstrap table,easyui datagrid表格导出。网上介绍的这种计划不主张运用。

4.PD4ML测验

PD4ML是纯Java的类库,运用HTML、CSS作为页面布局和内容界说格局来生成PDF文档的强壮东西,能够简化最终用户生成PDF的作业。参阅网站:http://www.pd4ml.com

该软件的长处是:

支撑的HTML标签、CSS特点较全,转化失真比较小,能够运用HTML+CSS完成准确的布局操控。对网页文件标签、CSS语法过错的容错性比较好。对不必额定的操控,就支撑图片的转化输出。

该软件的缺陷是:

不开源,最新的demo版别,下载测验今后,发现不支撑中文转化。有必要购买商业版别才干够。(这儿很坑,测验乱码问题通不过,后边发现是原本就不支撑)。破解后的一些旧版别能够处理乱码问题,可是支撑的css款式没有新版别的全。

测验成果:

怎样将Html转化为pdf事例?

测验阐明:

新版别的中文乱码,可是支撑部分css款式。老版别的破译后,界面的款式兼容性差,对bootsrtap的支撑性低,就底子的能够出一个数据,展现图片没有问题。考虑到是收费软件,而且功用也不行完善,关于一般页面可选用模板导出或其他的东西导出,不主张运用。

5.html2canvas测验

html2canvas是一个适当不错的JavaScript类库,它运用了html5和css3的一些新功用特性,完成了在客户端对网页进行截图的功 能。html2canvas经过获取页面的DOM和元素的款式信息,并将其烘托成canvas图片,然后完成给页面截图的功用。它不需求来自服务器任何烘托,整张图片都是在客户端阅览器创立。当阅览器不支撑Canvas时,将选用Flashcanvas或 ExplorerCanvas技能替代完成。以下阅览器能够很好的支撑该脚本:Firefox 3.5+, Google Chrome, Opera新的版别, IE9以上的阅览器。由于每个阅览器烘托页面的办法都不尽相同,所以生成的图片也不太相同。尽管它现在仍是处理开发阶段,但仍是很值得等待的。这个插件依赖于jQuery插件,主张运用最新版的。

不支撑跨域图片不能在阅览器插件中运用部分阅览器上不支撑SVG图片不支撑Flash不支撑ifream(可修正js原始代码,支撑ifream)

本次运用html2canvas做测验时,发现许多项目页面可正常截图,包含echart图表。仅对少数css3的新特性不支撑。在截图效果上面较好。可是在测验运用时,发现了一个丧命的问题,当页面模块调用html2canvas截图后,发现本来页面的部分css忽然失效。盯梢剖析后,发现是html2canvas的js函数处理它不能辨认的css款式。特别是对躲藏和显现的模块,支撑不友好。

怎样将Html转化为pdf事例?

页面截图效果如下:

怎样将Html转化为pdf事例?

可是原有页面的css失效,页面出现异常,躲藏的部分款式,显现的款式展现紊乱。

怎样将Html转化为pdf事例?

测验阐明:

经过测验发现,html2canvas对bootstap的款式支撑较好。对css3的新特性如圆形图片款式支撑行欠好。它的首要长处是轻前端,关于改动原有页面的款式问题,可先导出图片后,从头改写一次页面。

6.总结

经过对以上事例的测验,网上介绍的常用html转化为pdf的办法,大多数便是简略的html转化可用,可是在实践运用中,仍是存在许多问题,难以运用。经过对这些办法的完成原理剖析,可得出以下定论:

html网页完好转化为pdf,一切的计划均有缺乏。若仅仅部分表单页面,html款式尽量不选用css3的特点,可用客户端形式和html2canvas处理。html前端款式开展快,css3新特性效果好,css界说了新的规矩,语法。IText和Flying Sauser这样的java转化类底子兼容不了这些改变,由于无法及时写出转化的函数,而且这些开源项目是较老的技能,后期的开源团队现已中止保护和更新了。PD4ML实质也是java处理css的款式转化,他是商业软件,在兼容css3方面有团队支撑,相对IText和Flying Sauser在功用和功用方面都更强壮。但对少部分css款式也支撑欠好。而且中文乱码问题处理也不方便。针对客户端阅览器内核形式,PhantomJS和wkhtmltopdf比较而言,PhantomJS更强壮,截图仅仅仅仅其间的一个小功用,经过它还能够做网页剖析,主张运用PhantomJS。html2canvas的截图形式灵敏,是轻量级的前端截图东西。现在来说,部分功用不全,但全体效果还不错,针对部分截图影响原页面的问题,可先截图保存成功后,在改写一次页面,到达截图导出到pdf的效果。

以上便是这篇文章的全部内容了,期望本文的内容对咱们的学习或许作业能带来必定的协助~假如有疑问咱们能够留言沟通,谢谢咱们对申博开户的支撑!


本文地址:http://www.cvmachine.com/a/question/93442.html
Tags: PDF 转化 html
修改:申博开户网
关于咱们 | 联络咱们 | 友情链接 | 网站地图 | Sitemap | App | 回来顶部