實現了PymuPDF替換pdf指定位置文字和圖片的功能,並分別保存pdf和JPG格式.
#-*- coding:utf-8 -*-
import os
import PyPDF2
import fitz
text = u"湖南省湘潭市雨湖區鶴嶺鎮長安村永紅組"
file_path = r'D:\Desktop\新建文件夾'
for root,dirs,files in os.walk(file_path):
for file in files:
print(file)
if file.upper().endswith('FWT.PDF'):
print(file.upper())
pdfPath=os.path.join(root,file)
print(pdfPath)
doc = fitz.open(pdfPath)
page=doc[0]
#方法1插入一個空白圖片或者直接插入帶文字的圖片(效果有出入)
# rect=fitz.Rect(1050,-4260,2600,-4150) #替換坐落為空白區域--需要調試位置,
# pix=fitz.Pixmap(r"D:\t.jpg")
# page.insert_image(rect,pixmap=pix,overlay=True)
#方法2插入空白區域,再插入文本
page.draw_rect((1050,-4255,2600,-4150),color=(1,1,1),fill=(1,1,1),width=0) #方法1繪制白色無框矩形覆蓋地址
#方法1,定義字體文件會比直接調用PDF體積小一些 fontname="SimHei" ,fontfile=r"C:\Windows\Fonts\simhei.ttf"
ff=page.insert_font(fontname="HT",fontfile=r"C:\Windows\Fonts\simhei.ttf", fontbuffer=None , set_simple=False ) #定義黑體
page.insert_text((1150,-4190),text,fontname="HT" ,fontsize=86 ,color=(0,0,0,1), fill=None, render_mode=0, border_width=1, rotate=0, morph=None, overlay=True)
#方法2:定義CJK內置字體,默認china-s默認為黑體,但是在非福昕閱讀器當中顯示有異常,直接導出JPG也顯示有異常(棄用)
#page.insert_text((1150,-4190),text,fontname="china-t" ,fontsize=86 ,color=(0,0,0,1), fill=None, render_mode=0, border_width=1, rotate=0, morph=None, overlay=True)
#https://pymupdf.readthedocs.io/en/latest/page.html#Page.insert_font 參照 CJK內置字體china-s 黑體 china-ss 宋體 china-t 繁體黑體 china-ts 繁體宋體
print('導出:',r"D:\Desktop\新建文件夾\2_1.PDF" )
#print('導出:',os.path.splitext(pdfPath)[0]+"_1.PDF" )
doc.save(r"D:\Desktop\新建文件夾\2_1.PDF",garbage=4, deflate=True)
#PDF導出圖片-並提升導出圖片分辨率2倍
zoom_x = 2.0
zomm_y = 2.0 m
mat = fitz.Matrix(zoom_x, zomm_y)
pix = page.get_pixmap(matrix=mat,alpha=0) # alpha=0 白色背景
pix.save(r"D:\Desktop\新建文件夾\2_1.JPG") #直接保存成jpg 不處理,清晰度低