itextpdf使用中文字体、PdfPTable中图片缩放

  • Post author:
  • Post category:其他


	最近的项目中遇到了使用pdf导出数据的场景。特此记录下突出的两个问题

1、使用中文字体

在itextpdf的jar包中,一般使用的是自带的字体:STSong-Light,但是这种字体在打印出来后,很瘦且模糊,不适用于正式的文件,比如机关单位、医院、事业单位等。

所以,在这里将字体替换为系统中的宋体,也可以替换为系统中的其他字体。路径是系统盘下的fonts,如果没有想要的字体,可以自行下载并保存下来进行使用。因为宋体、仿宋都是同一个文件名称,所以后面的索引用了0,表示引用宋体,修改为1,则引用仿宋。

BaseFont chinese = BaseFont.createFont("c:\\windows\\fonts\\simsun.ttc,0", BaseFont.IDENTITY_H , BaseFont.EMBEDDED);

2、PdfPTable中图片缩放

此处的使用场景为:导出的pdf中需要保存电子签名。在审批流程中,会存在多个电子签名,便使用PdfPTable轮询添加数据。

一开始想的是对图片进行处理,但是缩放方法全部失效,后转而进行单元格的大小处理从而实现缩放图片。

public class PdfProductUtil {
    public static PdfPCell productCellOne(String value, Font font){
        PdfPCell cell = new PdfPCell(new Phrase(value,font));
        // 水平居中
        // cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        // 垂直居中
        // cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        // 高度
        cell.setFixedHeight(20);
        return cell;
    }
}