欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[itext] java生成pdf

程序员文章站 2022-03-29 17:19:03
iText简介iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。iText的安装非常方便,可以在maven*仓库找到所需要的版本,只需要pom.xml文件添加依赖即可。使用itext生成pdf,所需jar包 com.itextpdf

iText简介

iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。
iText的安装非常方便,可以在maven*仓库找到所需要的版本,只需要pom.xml文件添加依赖即可。

使用itext生成pdf,所需jar包

      <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.10</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>

附一个完整的将数据写到pdf源代码

package com.ruoyi.test;

import com.itextpdf.text.*;
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.FileNotFoundException;
import java.io.FileOutputStream;

/**
 * TODO
 *
 * @author linfeng
 * @date 2021/1/6 14:29
 */
public class PDFTest {

    private static Font headFont;// 设置字体大小
    private static Font textFont;// 设置字体大小
    private static Font paperNameFont;//试卷名称
    static {
        BaseFont bfChinese;
        try {
            bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            headFont = new Font(bfChinese, 10, Font.BOLD);// 设置字体大小
            textFont = new Font(bfChinese, 8, Font.BOLD);// 设置字体大小
            paperNameFont = new Font(bfChinese, 18, Font.BOLD);// 设置字体大小
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws FileNotFoundException, DocumentException {
        Document document = new Document(PageSize.A4, 50, 50, 50, 50);
        //pdf文件保存路径
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("F:/test.pdf"));
        document.open();
        Paragraph paragraph = new Paragraph("成都职业技术学院2019 2020 学年度下期期末考试",headFont);
        // 设置文字居中 0靠左 1,居中 2,靠右
        paragraph.setAlignment(1);
        document.add(paragraph);
        //添加换行符
        document.add(new Paragraph("\n"));
        Paragraph paperName = new Paragraph("2021英语期末考试",paperNameFont);
        paperName.setAlignment(1);
        document.add(paperName);
        document.add(new Paragraph("\n"));
        Paragraph propositionPeople = new Paragraph("命题人:林锋                               审核人:陈从亮",headFont);
        propositionPeople.setAlignment(1);
        document.add(propositionPeople);
        document.add(new Paragraph("\n"));
        PdfPTable table = createTable(8);
        table.addCell(createCell("题号",headFont,Element.AALIGN_CENTER));
        table.addCell(createCell("一",headFont,Element.ALIGN_CENTER));
        table.addCell(createCell("二",headFont,Element.ALIGN_CENTER));
        table.addCell(createCell("三",headFont,Element.ALIGN_CENTER));
        table.addCell(createCell("四",headFont,Element.ALIGN_CENTER));
        table.addCell(createCell("五",headFont,Element.ALIGN_CENTER));
        table.addCell(createCell("六",headFont,Element.ALIGN_CENTER));
        table.addCell(createCell("总分",headFont,Element.ALIGN_CENTER));
        document.add(table);
        PdfPTable table2 = createTable(8);
        table2.addCell(createCell("得分",headFont,Element.ALIGN_CENTER));
        table2.addCell(createCell("",headFont,Element.ALIGN_CENTER));
        table2.addCell(createCell("",headFont,Element.ALIGN_CENTER));
        table2.addCell(createCell("",headFont,Element.ALIGN_CENTER));
        table2.addCell(createCell("",headFont,Element.ALIGN_CENTER));
        table2.addCell(createCell("",headFont,Element.ALIGN_CENTER));
        table2.addCell(createCell("",headFont,Element.ALIGN_CENTER));
        table2.addCell(createCell("",headFont,Element.ALIGN_CENTER));
        document.add(table2);
        document.add(new Paragraph("\n"));
        document.add(new Paragraph("\n"));
        document.add(new Paragraph("\n"));
        document.add(new Paragraph("一、单选题",headFont));
        document.add(new Paragraph("\n"));
        //题的所有信息
        document.add(new Paragraph("1.【互联网环境下的典型营销组合】杜尔于2011年提出移动互联营销SoLoMo模式,这一营销组合重点突出哪些方面?",textFont));
        document.add(new Paragraph("A:社交",textFont));
        document.add(new Paragraph("B:本地化或精准化",textFont));
        document.add(new Paragraph("C:移动",textFont));
        document.add(new Paragraph("D:渠道",textFont));
        document.close();
        writer.close();
    }

       public static PdfPTable createTable(int colNumber){
        PdfPTable table = new PdfPTable(colNumber);
        try{
            table.setTotalWidth(520);
            table.setLockedWidth(true);
            table.setHorizontalAlignment(Element.ALIGN_CENTER);
            table.getDefaultCell().setBorder(1);
        }catch(Exception e){
            e.printStackTrace();
        }
        return table;
    }

    public static PdfPCell createCell(String value, Font font, int align){
        PdfPCell cell = new PdfPCell();
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        cell.setHorizontalAlignment(align);
        cell.setPhrase(new Phrase(value,font));
        return cell;
    }
}
          

文件已生成

[itext] java生成pdf
效果图
[itext] java生成pdf

本文地址:https://blog.csdn.net/qq_40042416/article/details/112569239

相关标签: java