iText7初步使用:生成简单的pdf文件

iText7使用PdfFont遇特殊字符如‘凉’字报空指针,中文打印乱码问题--最终解决方案!! 首先看原来的代码: PdfFont font = PdfFontFactory.createFont(“STSongStd-Light”, “UniGB-UCS2-H”, true); 遇到凉字跟特殊字符会空指针异常.,具体如下。 java.lang.NullPointerException at com.itextpdf.kernel.font.PdfType0Font.getCidFontType2(PdfType0Font.java:720) at com.itextpdf.ker... 阅读详情

PDF


  • 下面这段是最简单的实现,不是图上的效果。

       String DEST2 = "G:\\test4.pdf";//文件路径
       PdfFont sysFont = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false);//中文设置 
       PdfDocument pdfDoc = new PdfDocument(new PdfWriter(DEST2));   
       Document doc = new Document(pdfDoc);//构建文档对象        
       Paragraph paragraph = new Paragraph("hello word 你好 世界"); //段落方法 
       paragraph.setFont(sysFont);//自定义中文
       doc.add(paragraph);//段落添加到文档中
       doc.close();//关闭文档流

  • 图上的实现

1.工具类

package com.gsafety.plan.module.util;

import java.io.IOException;

import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.property.TextAlignment;


/**
 * 
 * 
 * 
 * 
 * @author Hui
 *
 */
public class PDFUtil {

    public static String DEST2 = "";//文件路径  
    public static PdfFont sysFont =null;

    public PDFUtil(String url){
        try {
            sysFont = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false);//中文设置 
            DEST2=url;//文件路径+名字
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

   /**
    * 创建pdf doc
    * @return doc
    * */
   public Document createPdfDoc() throws Exception{   
       PdfDocument pdfDoc = new PdfDocument(new PdfWriter(DEST2));    
       Document doc = new Document(pdfDoc);//构建文档对象  
       return doc;
   }

   /**
    * 添加大标题
    * @param
    * 
    * */
   public void addTitle(Document doc,String title) throws Exception{ 

       Paragraph paragraph = new Paragraph();  
       paragraph.add(title).setFont(sysFont).setBold().setFontSize(20).setTextAlignment(TextAlignment.CENTER);
       doc.add(paragraph);
   }

   /**
    * 添加一级标题
    * @param
    * 
    * */
   public void addHeading1(Document doc,String pg) throws Exception{
       Paragraph paragraph = new Paragraph(); 
       paragraph.add(pg).setFont(sysFont).setBold().setFontSize(16);
       doc.add(paragraph);
   }


   /**
    * 添加二级标题
    * @param
    * 
    * */
   public  void addHeading2(Document doc,String pg) throws Exception{
       Paragraph paragraph = new Paragraph();  
       paragraph.add(pg).setFont(sysFont).setBold().setFontSize(14).setFirstLineIndent(14);
       doc.add(paragraph);
   }

   /**
    * 添加三级标题
    * @param
    * 
    * */
   public  void addHeading3(Document doc,String pg) throws Exception{
       Paragraph paragraph = new Paragraph();  
       paragraph.add(pg).setFont(sysFont).setBold().setFontSize(12);
       doc.add(paragraph);
   }



   /**
    * 添加段落
    * @param
    * */
   public void addParagraph(Document doc,String pg) throws Exception{
       Paragraph paragraph = new Paragraph();  
       paragraph.add(pg).setFont(sysFont).setFirstLineIndent(20);//中文字体,首行缩进
       doc.add(paragraph);
   }

}

2.测试

import com.itextpdf.layout.Document;


public class Testp {

   public static String url="G:\\test4.pdf";

   public static void main(String[] args) throws Exception {  

       long old = System.currentTimeMillis();

       PDFUtil pdfUtil=new PDFUtil(url);//传入路径+文件名,使用工具类
       Document doc= pdfUtil.createPdfDoc();    

       pdfUtil.addTitle(doc, "我是标题");//添加标题
       pdfUtil.addHeading1(doc,"标题1");
       pdfUtil.addParagraph(doc,"内容11111111");
       pdfUtil.addHeading1(doc,"标题2");
       pdfUtil.addHeading2(doc,"标题2.1");
       pdfUtil.addParagraph(doc,"内容2.1"); 
       pdfUtil.addHeading2(doc,"标题2.2");
       pdfUtil.addParagraph(doc,"内容2.2"); 
       doc.close();

       long now = System.currentTimeMillis();
       System.out.println("共耗时:" + ((now - old) / 1000.0) + "秒\n\n" + "文件保存在:" + url);
   }  



}
IText7提取pdf页面内容文本,并兼容中文字体,修复提取中文乱码问题 阅读详情

相关推荐

itext7生成pdf教程

生成的pdf效果 2.创建步骤: 2.1.主函数——>

lxwfly的博客 6848

Java操作PDF文件,如此简单

使用 PdfFontFactory 的 createFont 创建一个中文字体,并将中文字体设置到 document 中。在项目中经常需要 PDF 文件中打印表格,这时就可以使用 Table 对象,创建一个个单元格并将表格内容写入单元格中。你好,itext”));图片的设置也很简单,创建 Image 对象填充到 document 中就可以了。(img-THY0gKh7-1713163498458)](img-FjWQSqkI-1713163498458)]//字体文件可以使用 windows 系统中的。

2401_83915900的博客 2798

java使用itext7实现html转pdf

前言 最近项目里有个功能是要把前端展示的内容给导出pdf。经过一段时间的调研和尝试,最终选择了itext7来实现。网上有很多关于itext5的博客或者文档,但是关于itext7还挺少的。 首先介绍一下大体流程吧,项目是基于springboot 和vue 的前后端分离架构,基本思路是由前端生成html文件,传给后端,后端通过itext7转为pdf返回前端。废话少说,直接上代码! 一、前端处理html 由于不是我写的代码,这里只能给出参考:https://segmentfault.com/a/11900

小哥哥的博客 1万+

Java代码用pdf模板实现 pdf 的填充输出

java代码用pdf模板实现 pdf 的填充输出

m0_68725156的博客 1921

iText7通过模板生成PDF

首先附上iText官网地址:http://developers.itextpdf.com点击打开链接  身为一个菜鸟,最近遇到需求——要求后台自动生成pdf,客户给的模板是这个样子的(部分): 参考了官网上给的例子过后我的步骤是: 1、首先是找到每个文本框的位置,并用红色框框标记 Rectangle[] areas = new Rectangle[] {new Rectan

毛竹 5万+

使用itext7为已有pdf生成目录

package com.newcore.ecs.service.tps.utils; //需要导入的包 import com.itextpdf.io.font.PdfEncodings; import com.itextpdf.kernel.font.PdfFont; import com.itextpdf.kernel.font.PdfFontFactory; import com.ite...

IT_探的博客 6386

iText生成PDF文件

生成Word文件并将其转换为PDF文件,可以使用多种Java库和JAR包。Apache POI:这是一个用于操作Microsoft Office格式文件的Java库。你可以使用它来创建和编辑Word文档(.doc或.docx)。:这是一个功能强大的Java库,用于创建、编辑、转换和打印Word文档。它支持将Word文档转换为PDF格式。Spire.Doc for Java的JAR包可以直接添加到你的Java项目中。

棒棒糖的糖不含糖的博客 8177

itext5 生成pdf 使用总结

ITEXT5

欢迎来到我的博客 2万+

使用IText生成PDF文件,并记录一些遇到的问题

记录 itext 基础使用,包含字体设置、 表格、图片、锚点、目录等信息

my博客 5万+

itext7——通过html模板生成pdf

目录1、准备html格式的模板2、在项目中引入包3、代码实现4、注意事项 代码:https://github.com/leexiangg/itext7 itext7官方参考文档:https://kb.itextpdf.com/home/it7kb 1、准备html格式的模板 可以先把需要生成的文档只作为word,生成html格式,推荐的在线导出网站:http://www.docpe.com/word/word-to-html.aspx 在ue中格式化html后,精简优化html代码,删除多余标签、空格、空

Neo的专栏 3219

Android使用iText7生成PDF文件

Android使用iText7生成PDF文件(显示中文)

Qxnedy的博客 4295

itext 生成pdf、pdf模板生成pdf

文章目录一、itxet生成PDF五个步骤二、itext生成pdf1.代码 1.1.依赖 1.2基本使用二、pdf模板生成pdf1.制作pdf模板1.1下载Adobe Acrobat DC2.制作3.代码3.通过pdf模板制作 除了表格意外的 临时文件,然后解析临时文件再进行填充3.1代码 itext生成PDF、PDF模板生成PDF 一、itxet生成PDF五个步骤 第 1 步:创建一个 PdfWriter 对象  该PdfWriter类表示PDF文档的作家。此类属于包com.itextpdf.ke

一七软工的博客 2万+

Java中利用IText7生成PDF

通过Java生成PDF报告,集成iText7插件,本文介绍PDF生成的各种样式

明叶歌 1万+

Itext7生成pdf最全api总结

Itext7生成pdf最全api总结 最近使用itext7生成pdf被折磨到崩溃,一是官方文档不全,网上文章基本都是基于老版本api的,已经完全不适用itext7版本;二是itext7的api和css很像,使用java写css很让人崩溃。把我用到的做一个总结。 显示中文 itext7在使用默认字体显示中文的时候,由于默认字库不支持中文,生成的pdf中的中文会显示空白,要解决这个问题需要自己引入字体。 下载一个中文字体,我这里用的是SourceHanSansCN.ttf(只用过ttf文件,不知道是否支

gairuichan的博客 1万+

iText生成pdf解决中文不显示

iText生成pdf解决中文不显示字库,pdf凉字不显示,由于生成iText插件生成pdf的时候中文会显示不出来,遇到过的是"凉"字,查到是字体库的原因,网上下载字体库msyh.ttc,生成的时候指定字体库,就可以解决了,小bug一枚。注意有个bug,获取字库路径时,需要加个,0 PdfFont bfChinese = PdfFontFactory.createFont(path+"msyh.ttc,0", PdfEncodings.IDENTITY_H,true);

输出中文Font 'STSongStd-Light' with 'UniGB-UCS2-H' is not recognized

itext

java使用itext7生成pdf

itext7生成pdf,小demo,包含base64图片的输出、无边框表格、字体、文字粗细颜色等的小使用

jfqqqqq的博客 2519

振动分析中相位的确定

更是定位不平衡量角度的关键。是确定振动信号与转子旋转位置之间时间关系的核心步骤,而。以内,以确保校正配重安装角度的有效性。在实际动平衡中,相位角的误差需控制在。在振动分析和动平衡中,

轩辕霸天L 2735

Itext生成pdf文件,itext+Freemarker生成pdf,(中文空白解决)

来源:https://my.oschina.net/lujianing/blog/894365 1.背景 在某些业务场景中,需要提供相关的电子凭证,比如网银/支付宝中转账的电子回单,签约的电子合同等。方便用户查看,下载,打印。目前常用的解决方案是,把相关数据信息,生成对应的pdf文件返回给用户。 本文源码:http://git.oschina.net/lujianing/...

weixin_30292745的博客 4203

Doris Streamloader安装教程

Doris Streamloader 是一款用于将数据导入 Doris 数据库的专用客户端工具。本文介绍其在centos7环境下的安装过程

qq_44540985的博客 1090

从零到一:AnythingLLM与Ollama的本地知识库搭建实战

本文详细介绍了如何使用AnythingLLM与Ollama从零开始搭建本地知识库,涵盖技术选型、环境部署、系统配置及优化策略。通过RAG技术架构,实现安全高效的文档管理与智能问答,特别适合企业及个人构建私有化知识管理系统。

weixin_29079643的博客 562
上一篇: Java创建文件夹并上传文件到该文件夹
下一篇: iText7彻底解决中文问题、特殊字符(如......省略号报错问题,其他的自测)
Qssn丶
博客等级 码龄11年 88粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值