package com.wzh.itext;

import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger; /**
* @date 2015-3-17 12:48:24
* @author y
* @desc
*/
public class ItextUtil { /**
* 生成带底图的PDF字节流
* @param swdjz
* @return
*/
public static byte[] createPdfBytes(Swdjz swdjz){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte []content = null; Document doc = new Document(PageSize.A4.rotate(), 50, 50, 50, 50); //创建文档 ,A4纸,横屏 try {
PdfWriter pw = PdfWriter.getInstance(doc, baos);
doc.open(); //解决中文不显示问题
BaseFont bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
//定义字体
Font fontChinaTitle14 = new Font(bfChinese, 14, Font.BOLD);
Font fontChina16 = new Font(bfChinese, 16);
Font fontChina14 = new Font(bfChinese, 14); //加载电子税务登记证背景图片
Image imgBg = Image.getInstance(swdjz.getBgPath());
imgBg.setAbsolutePosition(0, 0); //设置图片位置
imgBg.scaleAbsolute(842, 595);//设置图片大小
doc.add(imgBg); // 空行
Paragraph blank = new Paragraph(" ");
doc.add(blank);
doc.add(blank);
doc.add(blank);
doc.add(blank);
doc.add(blank); /*右上角信息*/
//档案号
Chunk c01 = new Chunk(swdjz.getDanh(), fontChina16);
Paragraph snoParagraph01 = new Paragraph();
snoParagraph01.add(c01);
snoParagraph01.setAlignment(Element.ALIGN_RIGHT);
snoParagraph01.setIndentationRight(30);
snoParagraph01.setSpacingBefore(10);
doc.add(snoParagraph01);
//纳税人识别号
Chunk c02 = new Chunk(swdjz.getNsrsbh(), fontChina16);
Paragraph snoParagraph02 = new Paragraph();
snoParagraph02.add(c02);
snoParagraph02.setAlignment(Element.ALIGN_RIGHT);
snoParagraph02.setIndentationRight(28);
doc.add(snoParagraph02); doc.add(blank);
doc.add(blank); /*正文*/
//纳税人名称
Chunk c03 = new Chunk(swdjz.getNsrmc(), fontChina16);
Paragraph snoParagraph03 = new Paragraph();
snoParagraph03.add(c03);
snoParagraph03.setIndentationLeft(220);
doc.add(snoParagraph03); doc.add(blank); //法定代表人
Chunk c04 = new Chunk(swdjz.getFddbr(), fontChina16);
Paragraph snoParagraph04 = new Paragraph();
snoParagraph04.add(c04);
snoParagraph04.setIndentationLeft(220);
doc.add(snoParagraph04); doc.add(blank); //地址
Chunk c05 = new Chunk(swdjz.getDz(), fontChina16);
Paragraph snoParagraph05 = new Paragraph();
snoParagraph05.add(c05);
snoParagraph05.setIndentationLeft(220);
snoParagraph05.setSpacingBefore(3);
doc.add(snoParagraph05); doc.add(blank); //登记注册类型
Chunk c06 = new Chunk(swdjz.getDjzclx(), fontChina16);
Paragraph snoParagraph06 = new Paragraph();
snoParagraph06.add(c06);
snoParagraph06.setIndentationLeft(220);
snoParagraph06.setSpacingBefore(4);
doc.add(snoParagraph06); doc.add(blank); //经营范围
Chunk c07 = new Chunk(swdjz.getJyfw(), fontChina14);
Paragraph snoParagraph07 = new Paragraph();
snoParagraph07.add(c07);
snoParagraph07.setIndentationLeft(220);
doc.add(snoParagraph07); doc.add(blank); //批准设立机关
Chunk c08 = new Chunk(swdjz.getPzsljg(), fontChina16);
Paragraph snoParagraph08 = new Paragraph();
snoParagraph08.add(c08);
if(swdjz.getJyfw().length()>37){
snoParagraph08.setSpacingBefore(-10);
}else{
snoParagraph08.setSpacingBefore(4);
}
snoParagraph08.setIndentationLeft(220);
doc.add(snoParagraph08); doc.add(blank); //扣缴义务
Chunk c09 = new Chunk(swdjz.getKjyw(), fontChina16);
Paragraph snoParagraph09 = new Paragraph();
snoParagraph09.add(c09);
if(swdjz.getJyfw().length()<38){
snoParagraph09.setSpacingBefore(4);
}
snoParagraph09.setIndentationLeft(220);
doc.add(snoParagraph09); doc.add(blank);
doc.add(blank);
doc.add(blank); /*右下角*/
//发证日期
Chunk cYear = new Chunk("一三 ", fontChina16);
Chunk cMonth = new Chunk(" 八 ", fontChina16);
Chunk cDay = new Chunk(" 十二 ", fontChina16); Paragraph snoParagraph10 = new Paragraph();
snoParagraph10.add(cYear);
snoParagraph10.add(cMonth);
snoParagraph10.add(cDay);
snoParagraph10.setSpacingBefore(4);
snoParagraph10.setIndentationRight(45);
snoParagraph10.setAlignment(Element.ALIGN_RIGHT);
doc.add(snoParagraph10); doc.close(); content = baos.toByteArray(); } catch (FileNotFoundException ex) {
Logger.getLogger(ItextUtil.class.getName()).log(Level.SEVERE, null, ex);
} catch (DocumentException ex) {
Logger.getLogger(ItextUtil.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ItextUtil.class.getName()).log(Level.SEVERE, null, ex);
}finally{
try {
baos.close();
} catch (IOException ex) {
Logger.getLogger(ItextUtil.class.getName()).log(Level.SEVERE, null, ex);
}
} return content;
} }

Servlet 中:

 response.setContentType("application/pdf");

        ServletOutputStream sos = response.getOutputStream();

        response.setHeader("Content-Disposition", "attachment;filename="
+ new String(swdjz.getNsrmc().getBytes(), "iso-8859-1")); byte [] content = ItextUtil.createPdfBytes(swdjz); BufferedOutputStream bos = new BufferedOutputStream(sos);
bos.write(content); bos.close();

使用iText生成带底图的PDF的更多相关文章

  1. doc文档生成带目录的pdf文件方法

    准备软件: 福昕PDF阅读器 下载地址:http://rj.baidu.com/soft/detail/12882.html?ald 安装福昕PDF阅读器,会自动安装pdf打印机. 准备好设置好各级标 ...

  2. 在linux环境下使用itext生成pdf

    转载请注明出处 https://www.cnblogs.com/majianming/p/9537173.html 项目中需要对订单生成pdf文件,在不断的尝试之后,终于生成了比较满意的pdf文档. ...

  3. 【PDF】java使用Itext生成pdf文档--详解

    [API接口]  一.Itext简介 API地址:javadoc/index.html:如 D:/MyJAR/原JAR包/PDF/itext-5.5.3/itextpdf-5.5.3-javadoc/ ...

  4. java使用iText生成pdf表格

    转载地址:http://www.open-open.com/code/view/1424011530749 首先需要你自己下载itext相关的jar包并添加引用,或者在maven中添加如下引用配置: ...

  5. 使用itext生成pdf的,各种布局

    代码如下,jar包为itext.jar,itextAsia.jar,最好都是最新的 :2张图片也在最后贴出,把图片放到D盘可以直接生成制定格式的pdf. 最后生成的pdf如下: 代码如下: packa ...

  6. Java Itext 生成PDF文件

    利用Java Itext生成PDF文件并导出,实现效果如下: PDFUtil.java package com.jeeplus.modules.order.util; import java.io.O ...

  7. 用itext生成PDF报错:Font 'STSong-Light1' with 'UniGB-UCS2-H' is not recognized.

    用itext生成PDF报错,加上try catch捕获到异常是 BaseFont bFont = BaseFont.createFont("STSong-Light1", &quo ...

  8. 使用iText生成pdf文件

    前言 折腾了一早上的iText,下面主要介绍一下如何使用iText通过java代码生成pdf文档,以及如何输出包含中文的pdf文档. 首先,要说明的是,我用的是iText-7(java),下载链接是: ...

  9. Itext简绍及操作PDF文件

    iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...

随机推荐

  1. 如何在Windows服务程序中读写HKEY_CURRENT_USER注册表

    在服务程序中想要对注册表HKEY_CURRENT_USER下的内容进行读写,不会返回失败,但是始终无效.原因是: 1.服务运行在系统权限之下,而不是任何一个用户 2.HKEY_CURRENT_USER ...

  2. 九度OJ1486 /POJ 1029/2012北京大学研究生复试上机

    wa到死!wa到死!这是一个看着简单,坑及其多的题! 坑一:POJ上是单组输入,九度上是多组输入,妈蛋要是研究生复试遇到这种大坑肯定死掉啊!而且对于codeforces比较习惯的 同学肯定会觉得巨坑无 ...

  3. HDU-2059龟兔赛跑(基础方程DP-遍历之前的所有状态)

    Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击——赛跑输给乌龟后,心中郁闷,发誓要报仇雪恨,于是躲进了杭州下沙某农业园卧薪尝胆潜心修炼,终于练成了绝技,能 ...

  4. libvirt-adabddad

    kvm i686  libvirtError: internal error cannot load AppArmor profile 'libvirt-adabddad-35ba-b9ca-e250 ...

  5. JAVA 对象拷贝

    1.java里的clone分为:  A:浅复制(浅克隆): 浅复制仅仅复制所考虑的对象,而不复制它所引用的对象.  b:深复制(深克隆):深复制把要复制的对象所引用的对象都复制了一遍.  Java中对 ...

  6. M - 约会安排 - hdu 4553

    寒假来了,又到了小明和女神们约会的季节.  小明虽为�丝级码农,但非常活跃,女神们常常在小明网上的大段发言后热情回复“呵呵”,所以,小明的最爱就是和女神们约会.与此同时,也有很多基友找他开黑,由于数量 ...

  7. PE基金的运作模式有哪些?

    一.信托制(1)信托型基金是由基金管理机构与信托公司合作设立,通过发起设立信托受益份额募集资金,然后进行投资运作的集合投资工具(2)信托公司和基金管理机构组成决策委员会实施,共同进行决策(3)在内部分 ...

  8. JSP入门:介绍什么是JSP和Servlet(转)

    转自:http://developer.51cto.com/art/200907/134506.htm JSP入门:什么是jsp? JSP(Java Server Pages)是由Sun Micros ...

  9. C++基础学习笔记----第十三课(操作符重载-下)

    本节主要讲使用成员函数重载操作符,包括[],=,(),->四种操作符的重载以及&&和||的问题. 类的成员函数进行操作符重载 基本概念 类的成员函数也可以进行操作符的重载.类的普 ...

  10. 学习手机游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D,哪个前景更好?

    如题! 首先说一说学习手机游戏(移动游戏)这件事. 眼下移动互联网行业的在以井喷状态发展.全球几十亿人都持有智能终端设备(ios android),造就了非常多移动互联网创业机会: 一.移动社交 微信 ...