itext生成pdf文档加载中文字体解决方法

最近接手一个任务,在网页中通过用户的输入的信息生成一个pdf文档并且下载到用户本地。iText是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。
https://blog.csdn.net/qq_37581708/article/details/79709612这个是一个用法总结,不过还有一些解决不了的问题,以下是自己的一些总结:
1.遇到的问题:
itext/itextg是不支持中文(或其他亚洲语言)的。我想要设置生成的PDF文件的字体样式(包括宋体,仿宋,黑体,楷体)。在网上找了很多方法,比较简单实用的是加载windows自带的字体的方法,这个方法也是我从网上找到的大多数的解决方法,但是这有一个缺点,如果用户是ios系统或者用户的字体不是C:\Windows\Fonts的话,就不能加载到这个字体。
itext生成pdf文档加载中文字体解决方法_第1张图片
解决方法:
从C:\Windows\Fonts目录下将字体文件复制到项目的static/fonts/之下。
itext生成pdf文档加载中文字体解决方法_第2张图片

BaseFont FSChinese = BaseFont.createFont("static/fonts/simfang.ttf",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);//这是设置仿宋基本字体
Font text=new Font(FSChinese,16,Font.NORMAL);//这里设置字体大小和粗细
...

通过这种方法终于解决了我的问题!

2.以下是用到的语句:

  1. Document document = new Document(PageSize.A4, 79, 74, 105, 99);//页边距设置
  2. document.open();//打开文件
  3. PdfPTable table = new PdfPTable(3);//创建3列表格
    table.setTotalWidth(450f);////设置表格具体宽度
    table.setLockedWidth(true);//使得格式生效
    table.setWidths(new float[]{60f, 15f, 25f});//设置每一列所占的长度(百分比)
    cellSet (table,“文字”);
    cellSet (table," ");
    cellSet (table,“文字”);
    document.add(table);//添加表格
//设置表格每个单元的样式
private static void cellSet (PdfPTable table,String value)throws Exception{
		BaseFont FSChinese = BaseFont.createFont("static/fonts/simfang.ttf",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
		Font text=new Font(FSChinese,16,Font.Font.BOLD);//基本样式,字号(pt),样式(正常/加粗/加斜)
		text.setColor(BaseColor.RED);//设置字体颜色
		Paragraph paragraph = new Paragraph(value, text);//创建段落
		paragraph.setLeading(28.8f);//设置行距
		PdfPCell cell = new PdfPCell();//创建表格单元
		cell.setPhrase(paragraph);
		cell.disableBorderSide(13);//这是一个边框样式,13对应只有下边框显示
		cell.setBorderColor(BaseColor.RED);//边框颜色
		cell.setPaddingTop(20f);//上边距
		table.addCell(cell);
	}
  1. Paragraph paragraph1=new Paragraph(“内容文字”,head1);
    paragraph1.setAlignment(Element.ALIGN_CENTER);//居中
    document.add(paragraph1);
  2. Paragraph p=new Paragraph(getDateStr(new Date()),text);
    p.setFirstLineIndent(248);//首行缩进

你可能感兴趣的:(工作Java)