首页 > 其他分享 >PDF格式报表生成(IText技术)

PDF格式报表生成(IText技术)

时间:2023-01-12 14:01:42浏览次数:59  
标签:Font 报表 参数 IText 字体 PDF new document table

1.添加maven依赖 最新iText7 涉及商业收费 用5就行
官网
old 4.x- 不建议使用

<!-- 导入iText报表 -->
<dependency>
    <groupId>com.lowagie</groupId>
    <artifactId>itext</artifactId>
    <version>4.2.1</version>
</dependency>
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext-asian</artifactId>
    <version>5.2.0</version>
</dependency>

new 5.x+ 建议使用这个

  <!-- 导入iText报表 -->
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.9</version>
</dependency>
  <!-- 导入iText报表 中文包 -->
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext-asian</artifactId>
    <version>5.2.0</version>
</dependency>
  1. 步骤 很简单
   1 创建Document文档
   2 创建输出位置
   3 打开文档
   4 写入内容
   5 关闭文档
  1. Demo1
public static void main(String[] args) throws Exception{
        // 1 创建一个文档
        Document document = new Document();
        // 2 设置输出位置
        PdfWriter.getInstance(document,new FileOutputStream(new File("d:\\a.pdf")));
        // 3 打开文档
        document.open();
        // 4 写入内容
        document.add(new Paragraph("HelloWorld  你好世界"));
        //5 关闭文档
        document.close();
    }

注 中文是无法生成到pdf的
需要设置字体(设置可以支持中文的字库 【操作系统】 , 【导入itext-asian的jar包】)

  <!-- 导入iText报表 中文包 刚才添加依赖已经有了 -->
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext-asian</artifactId>
    <version>5.2.0</version>
</dependency>
  1. Demo2
public static void main(String[] args) throws Exception {
        //1 创建pdf对象 导包注意 import com.itextpdf.text.Document;
        Document document = new Document();
        //2 设置输出位置
        // 第一个参数:文档对象
        // 第二个参数:输出位置
        PdfWriter.getInstance(document,new FileOutputStream(new File("d:\\a.pdf")));
        //3 打开文档
        document.open();
        //4 写入内容
        // 创建BaseFont 基础字体对象
        // String name, 字体名字:宋体,楷体,隶书  AsianFontMapper.ChineseSimplifiedFont  : STSong-Light
        // String encoding:编码  +  布局方式
        // boolean embedded:是否内嵌字体   true 导出的时候将字体一并导出去       false 不导出字体
        BaseFont baseFont = BaseFont.createFont(AsianFontMapper.ChineseSimplifiedFont, AsianFontMapper.ChineseSimplifiedEncoding_H, false);

        //BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", false);
        // 通过基础字体创建字体
        /**
         * 第一个参数:baseFont
         *    2     :字体大小
         *   3      :字体样式  加粗   切斜    加粗倾斜   正常.....
         *   4      :字体颜色
         */
        Font font = new Font(baseFont,16,Font.BOLDITALIC,BaseColor.BLUE);
        document.add(new Paragraph("HelloWorld 往后余生 祝你幸福 R",font));
        //5 关闭文档
        document.close();

    }

打印效果
PDF格式报表生成(IText技术)_IText技术

  1. Demo3 进阶 插入表格
public static void main(String[] args) throws Exception{
    //准备数
    List<String[]> list = new ArrayList<String[]>();
    list.add(new String[]{"七月","1000","1100"});
    list.add(new String[]{"八月","950","1000"});
    list.add(new String[]{"九月","1000","1200"});
    //创建文档对象
    /**
		 * 第一个参数:PageSize:设置纸张的大小:A1,A2,A3,A4(默认值),A5
		 * 第2--5个参数:左右上下:纸张的边距
		 */
    Document document = new Document(PageSize.A4, 20, 20, 20, 20);
    //设置输出位置
    PdfWriter.getInstance(document, new FileOutputStream(new File("d://a.pdf")));
    //打开文档
    document.open();
    //写入内容
    //字体得宋体,默认情况下,iText技术不支持中文的输出,得导入亚洲语言包
    //创建亚洲中文字体
    /**
		 * 第一个参数:当前的字体:宋体、楷体...
		 * 第二个参数:编码
		 * 第三个参数:是否以内嵌的样式显示,值是boolean类型
		 *        true:以内嵌的方式显示,比较占用资源
		 *        false:不适用内嵌的方式显示,(更常用) 
		 */
    BaseFont baseFont = BaseFont.createFont(AsianFontMapper.ChineseSimplifiedFont, 
                                            AsianFontMapper.ChineseSimplifiedEncoding_H, BaseFont.NOT_EMBEDDED);
      /**********大标题的输出***********/
      //设置字体样式
        /**
		 * 第一个参数:字体
		 * 第二个参数:字体大小
		 * 第三个参数:加粗、倾斜..
		 * 第四个参数:颜色
		 */
    Font bigTitleFont = new Font(baseFont, 30f, Font.BOLD, BaseColor.PINK);
    //设置内容
        /**
		 * 第一个参数:内容
		 * 第二个参数:字体格式
		 */
    Paragraph bigTitleParagraph = new Paragraph("出货表", bigTitleFont);
    //设置对其方式
    bigTitleParagraph.setAlignment(Paragraph.ALIGN_CENTER);
    //添加至文档中
    document.add(bigTitleParagraph);
    /**********作者的输出***********/
    //设置字体样式
    Font authorFont = new Font(baseFont, 20f, Font.NORMAL, BaseColor.BLACK);
    //设置内容
    Paragraph authorParagraph = new Paragraph("乐子hzw", authorFont);
    //设置对其方式
    authorParagraph.setAlignment(Paragraph.ALIGN_RIGHT);
    //添加至文档中
    document.add(authorParagraph);
    /**********表格的创建***********/
    //参数:表格的列树
    PdfPTable table = new PdfPTable(3);
    //设置当前面table的上边距
    table.setSpacingBefore(20f);

    /**********表格标题的输出***********/
    //设置字体样式
    Font titleFont = new Font(baseFont, 15f, Font.BOLD, BaseColor.GREEN);
    //设置内容
    //第一个参数:内容
    //第二个参数:字体样式
    table.addCell(new PdfPCell(new Phrase("月份", titleFont)));
    table.addCell(new PdfPCell(new Phrase("去年销量", titleFont)));
    table.addCell(new PdfPCell(new Phrase("今年销量", titleFont)));
    /**********表格内容的输出***********/
    //设置字体样式
    Font contentFont = new Font(baseFont, 15f, Font.NORMAL, BaseColor.GREEN);
    //设置内容	
    for(String[] values:list){
        table.addCell(new PdfPCell(new Phrase(values[0], contentFont)));
        table.addCell(new PdfPCell(new Phrase(values[1], contentFont)));
        table.addCell(new PdfPCell(new Phrase(values[2], contentFont)));
    }

    //将表格添加至document中
    document.add(table);

    //关闭文档
    document.close();
    System.out.println("ok");
}

效果图
PDF格式报表生成(IText技术)_PDFJava使用下载_02

祝你幸福
送你一首歌《送别》 朴树 词 李叔同 电影《厨子戏子痞子》片尾曲
附图:宁波博物馆 李叔同展览 弘一法师
PDF格式报表生成(IText技术)_中文字体_03

标签:Font,报表,参数,IText,字体,PDF,new,document,table
From: https://blog.51cto.com/u_15939406/6004113

相关文章

  • POI Excel格式报表生成 同步下载问题解决
    前言解决POI导出功能,过时方法和新增样式放在最下面或者参考下文POI样式调节0.maven(新版本)<poi.version>4.1.2</poi.version> <dependency> <groupId>org.ap......
  • 如何为 mdbook pdf 生成书签目录
    以RustByExample.pdf为例,分享如何为mdbook打入书签目录。生成本地网页书籍,并保存为pdfgitclonehttps://github.com/rust-lang/rust-by-example把书籍仓库克......
  • [转]Python PDF文件转png图像文件
    13个有趣的Python高级脚本:PythonPDF文件转png图像文件# PDF to Imagesimport fitzpdf = 'sample_pdf.pdf'doc = fitz.open(pdf)for page in doc: ......
  • 10分钟做好 Bootstrap Blazor 的表格组件导出 Excel/Word/Html/Pdf
    上篇:BootstrapBlazor实战通用导入导出服务(Table组件)1.新建工程新建工程b14tabledotnetnewblazorserver-ob14table将项目添加到解决方案中:dotnetslnadd......
  • 下载知网pdf格式的文件
    下载知网pdf格式的文件1、打开知网首页,然后最上面有一个English(也就是语言切换),点开把中文页面变成英文;2、输入论文题目也就是Subject,点击搜索英文界面就会显示pdf下......
  • xmind8使用甘特图与导出甘特图PDF
    1新建思维导图2打开甘特图视图3填写甘特图信息4导出甘特图PDF......
  • PDF转PNG,抽取文本和表格
    PDF文件转为图片格式。可以将多个PDF文件合并起来。importpdfplumberimportosfrompathlibimportPathdefpdf_to_png(pdf_file_name):pdf=pdfplumber.ope......
  • 国内外BI数据分析工具做报表有多大区别?
    有什么样的土壤就会早就什么样的产品。国内外企业对报表的不同需求导致了国内外BI数据分析工具做表格时的巨大差异,这也是很多时候国外BI数据分析工具在中国水土不服,遭遇口碑......
  • ART 轻量级报表工具汉化
    打开语言文件目录:cd /usr/local/java/tomcat/webapps/art/WEB-INF/i18n[root@centos]#cd/usr/local/java/tomcat/webapps/art/WEB-INF/i18n[root@centos]#i18n]#ll总计......
  • 用Java写一个PDF,Word文件转换工具
    前言前段时间一直使用到word文档转pdf或者pdf转word,寻思着用Java应该是可以实现的,于是花了点时间写了个文件转换工具源码weloe/FileConversion(github.com)主要功能就......