pdf 输出中文的三种字体选择方式

pdf 输出中文的三种字体选择方式:

1、使用iTextAsian中的字体,需要下载iTextAsian.jar包或者是引入下面的依赖:

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

设置中文字体的方法是:

BaseFont bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);

通过这种方式设置字体的时候,如果字符串中包含一部分英文串和一部分中文串的时候会造成英文串中的部分英文字母之间存在一定距离的间隙,有一点影响用户的体验。如下图所示:

2、使用Windows系统字体(TrueType),设置中文字体的方法是:

BaseFont bfChinese = BaseFont.createFont("C:/WINDOWS/Fonts/SIMYOU.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);

通过这种方式设置字体的时候,程序在Windows系统中运行的时,此方法生效且中英文字符串都可以使用这个方法设置字体样式,此方法设置的字体样式用户体验比较好。缺点是把项目部署到Linux环境中就回报错,打不开你下载的PDF文件;解决方案:https://blog.csdn.net/atpalain_csdn/article/details/50801639(此使用以后再细谈)

3、使用资源字体(ClassPath),需要和实际资源绑定,在实际项目中可以将一些字体库和项目打包在一起。设置中文字体的方法是:

BaseFont.createFont("/SIMYOU.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);

此方法的第一个参数是:字体库或字体资源路径,其它参数固定不变。

 

在Python中给PDF添加页码需要使用PyPDF2库,而添加中文字体需要使用reportlab库。 首先安装这两个库,可以使用pip命令进行安装: ``` pip install PyPDF2 reportlab ``` 接下来,可以按照以下步骤添加页码和中文字体: 1. 导入所需的库: ```python from PyPDF2 import PdfFileReader, PdfFileWriter from reportlab.lib.pagesizes import A4 from reportlab.pdfgen import canvas ``` 2. 定义一个函数,用于添加页码和中文字体: ```python def add_page_number(pdf_path, output_path): # 读取原始PDF文件 pdf_reader = PdfFileReader(open(pdf_path, 'rb')) # 获取PDF文件的页数 num_pages = pdf_reader.getNumPages() # 创建一个PDF写入器 pdf_writer = PdfFileWriter() # 定义中文字体 font_path = 'path/to/font.ttf' font_name = 'FontName' from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont pdfmetrics.registerFont(TTFont(font_name, font_path)) # 循环遍历每一页,添加页码和中文字体 for page_num in range(num_pages): # 获取当前页 page = pdf_reader.getPage(page_num) # 创建一个画布,用于添加页码和中文字体 page_canvas = canvas.Canvas('temp.pdf', pagesize=A4) # 添加中文字体 page_canvas.setFont(font_name, 10) # 添加页码 page_canvas.drawString(500, 20, f'第{page_num+1}页') # 将画布添加到当前页的内容流中 page_content = page.getContents() page_canvas.saveState() page_content.append(page_canvas._code) page_canvas.restoreState() # 将修改后的页面添加到PDF写入器中 pdf_writer.addPage(page) # 将修改后的PDF文件写入到输出文件中 with open(output_path, 'wb') as out: pdf_writer.write(out) ``` 3. 调用函数并传入PDF文件路径和输出文件路径: ```python add_page_number('path/to/input.pdf', 'path/to/output.pdf') ``` 以上就是给PDF文件添加页码和中文字体的Python代码。其中,需要将path/to/font.ttf替换为实际的中文字体文件路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值