使用的jar文件

xmlworker-5.5.11.jar

itextpdf-5.5.11.jar

下载地址:https://pan.baidu.com/s/1i5AIBvZ

以下为测试代码

package com.test;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream; import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerHelper; public class Html2Pdf
{
public static void main(String [] args) throws Exception
{
String urlsource = getURLSource(new File("D:/test.html"));
String cssSource = getURLSource(new File("D:/css.css"));
htmlToPdf(urlsource,cssSource);
} // 支持中文
public static void htmlToPdf(String htmlstr,String cssSource) throws Exception
{
String outputFile = "D:/test.pdf";
Document document = new Document();
PdfWriter writer = null;
writer = PdfWriter.getInstance(document, new FileOutputStream(outputFile));
document.open(); InputStream bis = new ByteArrayInputStream(htmlstr.toString().getBytes());
InputStream cssis = new ByteArrayInputStream(cssSource.toString().getBytes());

XMLWorkerHelper.getInstance().parseXHtml(writer, document, bis,cssis);

    document.close();
} /**
* 通过网站域名URL获取该网站的源码
*
* @param url
* @return String
* @throws Exception
*/
public static String getURLSource(File url) throws Exception
{
InputStream inStream = new FileInputStream(url);
// 通过输入流获取html二进制数据
byte [] data = readInputStream(inStream); // 把二进制数据转化为byte字节数据
String htmlSource = new String(data); inStream.close();
return htmlSource;
} /**
* 把二进制流转化为byte字节数组
*
* @param instream
* @return byte[]
* @throws Exception
*/
public static byte [] readInputStream(InputStream instream) throws Exception
{
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte [] buffer = new byte[1204];
int len = 0;
while ((len = instream.read(buffer)) != -1)
{
outStream.write(buffer, 0, len);
}
instream.close();
return outStream.toByteArray();
}
}

关于使用itext转Html为pdf添加css样式的问题的更多相关文章

  1. 044. asp.net主题之二为主题添加CSS样式和动态加载主题

    1. 新建任意一个网站, 默认主页为Default.aspx, 增加一个App_Themes目录, 用于存储主题, 添加一个MyTheme的主题, 在MyTheme主题下添加一个样式表文件, 默认名称 ...

  2. 动态为页面添加CSS样式文件引用

    动态为页面添加CSS样式文件引用: if (document.createStyleSheet) { //IE document.createStyleSheet("./Themes/Def ...

  3. 我给女朋友讲编程CSS系列(1) –添加CSS样式的3种方式及样式表的优先权

    如果说,原生态就是美,那么,我们就没有必要穿衣打扮. 网页是什么? 说白了,网页就是一堆[html标签]有序的搭配,让[CSS属性值]整整容,请[Javascript语言]处理一下事件. 一个人的整容 ...

  4. html添加css——样式选择器

    如何给html添加样式.两种方法: 一.新建立一个css样式表,与原html同目录,然后通过link标签链接.如:<link type="text/css" rel=&quo ...

  5. Vue为v-html中标签添加CSS样式

    在最近的vue项目中遇到的问题:v-html渲染的富文本,无法在样式表中修改样式: <template> <div class="msgHtmlBox" v-ht ...

  6. 通过field:global给子元素添加css样式

    {dede:arclist row=5 typeid=200} <li [field:global runphp=’yes’ name=autoindex](@me==1)?@me=”class ...

  7. Vuejs使用scoped(私有) style为v-html中标签添加CSS样式

    最近使用Vue框架的时候遇到一个问题,就是后台把数据写好了,而且写好的数据的某些内容是html格式的,使用Vue框架的v-html虽然可以很简单的就把数据转换成html的标签渲染在页面上,但是有些样式 ...

  8. 怎样用JS来添加CSS样式

    方法: document.getElementById("xx").style.xxx中的全部属性是什么 盒子标签和属性对比 CSS语法(不区分大写和小写) JavaScript语 ...

  9. @Html.LabelFor 如何直接添加CSS样式

    样式用的是bootstrap. 我想单独调整一下其中一个控件的样式,大概这个造型. @Html.LabelFor(m => m.DerivationRate, new { @class = &q ...

随机推荐

  1. 【PowerOJ1742&网络流24题】试题库问题(最大流)

    题意: 思路: [问题分析] 二分图多重匹配问题,用最大流解决. [建模方法] 建立二分图,每个类别为X集合中的顶点,每个题为Y集合中的顶点,增设附加源S和汇T. 1.从S向每个Xi连接一条容量为该类 ...

  2. HDU 1134 Game of Connections(卡特兰数+大数模板)

    题目代号:HDU 1134 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1134 Game of Connections Time Limit: 20 ...

  3. linux中shell变量$#,$@,$0,$1,$2的含义解释<转>

    linux中shell变量$#,$@,$,$,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命 ...

  4. Python 列表反转显示方法

    第一种,使用reversed 函数,reversed返回的结果是一个反转的迭代器,我们需要对其进行 list 转换 listNode = [1,2,3,4,5] newList = list(reve ...

  5. qbzt day1 上午

    内容提要 模拟,贪心 在讲这些东西之前,我们先来了解一个东西:high level 这个东西大体上就是你做题之前要先想清楚自己要写什么,怎么写,然后再写,不要有一点写一点 1.模拟 模拟算法算是很水的 ...

  6. fedora23解决gedit和vim中文乱码的问题

    fedora23解决gedit和vim中文乱码的问题 a, an, the这些不定/定 冠词并不是在所有的名词 前面都要加. 只有在语义上需要时,才加. 名词的单数/复数 前面不加 冠词的 例子多的是 ...

  7. AtomicIntegerFieldUpdater 源码分析

    AtomicIntegerFieldUpdater AtomicIntegerFieldUpdater 能解决什么问题?什么时候使用 AtomicIntegerFieldUpdater? 1)字段必须 ...

  8. 架构-层-DAL:DAL

    ylbtech-架构-层-DAL:DAL DAL是数据访问层的英文缩写,即为数据访问层(Data Access Layer).其功能主要是负责数据库的访问.简单地说就是实现对数据表的Select(查询 ...

  9. SpringBoot设置SORS的几种方式

    1. 原生支持 Application 启动类添加以下代码: import org.springframework.context.annotation.Bean;import org.springf ...

  10. centos安装mycat(支持mysql8连接)

    1.参考前文安装jdk 2.官网 http://www.mycat.io/ 或 http://dl.mycat.io/ 下载 mycat1.6.7 release 版本 3.解压安装 cd /usr/ ...