python 在pdf文件中批量添加编码(DrawString中文解决,Rotation处理)

本文介绍如何使用Python在PDF文件中批量添加中文编码,解决DrawString中文显示问题,并探讨了如何处理文字Rotation,适用于办公室自动化办公场景。
摘要由CSDN通过智能技术生成

参考了好多资料和文章,然后各种无目的的尝试和实验,成功。希望可以帮到在办公室繁重办公的各位。

import PyPDF2, xlrd,io,os
import win32ui
from PyPDF2 import PdfFileReader, PdfFileWriter
from PIL import Image
import tkinter as tk
from tkinter import filedialog
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfgen import canvas
from reportlab.pdfbase.ttfonts import TTFont

fspec="Excel 2003(*.xls)|*.xls"
dlg = win32ui.CreateFileDialog(1,None, "请选择索引excel表", 1, fspec, None)
'''
        请将文件路径放在xls文件第1个表的A列,将从第2行开始
        将将要录入的代码放在B列
        pdf文件与图片文件是分次处理,故不能统一编码,卡脖子的技术瓶颈已经在改代码中解决,可自行重构代码打到效果
'''
root=tk.Tk()
root.withdraw()
dlg.SetOFNInitialDir('d:/')  # 设置打开文件对话框中的初始显示目录
dlg.DoModal()				# 显示文件对话框
filename = dlg.GetPathName()  # 获取选择的文件名称
outDir=filedialog.askdirectory()  # 获取选择的保存
outDir.replace("/","\\")    # 格式化文件路径
print(outDir)               # print输出路径
wb=xlrd.open_workbook(filename)     # 打开索引表
sheet1 =wb.sheets()[0]          # 获取索引表的第一个表格
path=sheet1.col(0)              # 读取表格第一列的内容:合同文件路径
xulie=sheet1.col(1)             # 读取表格第二列的内容:文件编号
'print(path)'
print("=======================================================")
'print(xulie)'
FontSize=16                     # 设置字体大小
pdfmetrics.registerFont(TTFont('华光综艺_CNKI', 'HGZY_CNKI.TTF'))       # 注册中文字体包
for i in range(1,sheet1.nrows-1):           # 遍历表格里的合同文件
    file = os.path.splitext(path[i].value)      # 获取文件名中的信息
    filename, type = file
    print("Got-PDF-Path = %s"%path[i].value)
    print("Got-PDF-Index = %s"%xulie
### 回答1: Python 有很多库可以用来处理 PDF 文件,包括 PyPDF2、pdfminer、pdfquery 等等。以下是使用 PyPDF2 库读取 PDF 文件中文本内容的简单示例代码: ```python import PyPDF2 # 打开 PDF 文件 pdf_file = open('example.pdf', 'rb') # 创建一个 PDF 阅读器对象 pdf_reader = PyPDF2.PdfFileReader(pdf_file) # 获取 PDF 文件的页数 num_pages = pdf_reader.getNumPages() # 循环遍历每一页,读取文字内容 for i in range(num_pages): page = pdf_reader.getPage(i) text = page.extractText() print(text) # 关闭文件 pdf_file.close() ``` 如果要对 PDF 进行更加复杂的处理,例如分割、合并、加密、解密等操作,可以参考 PyPDF2 库的官方文档。 ### 回答2: 使用Python编写一个对PDF进行操作的程序可以借助一个名为PyPDF2的库来实现。PyPDF2是一个开源的Python库,可以用于提取、合并、拆分、旋转和加密PDF文件。 首先需要安装PyPDF2库,可以使用pip安装,命令如下: pip install PyPDF2 接下来,我们可以使用以下代码来实现对PDF的不同操作: 1. 提取文本: ```python import PyPDF2 def extract_text_from_pdf(file_path): pdf_file = open(file_path, 'rb') pdf_reader = PyPDF2.PdfReader(pdf_file) text = "" for page_num in range(pdf_reader.numPages): text += pdf_reader.getPage(page_num).extract_text() pdf_file.close() return text ``` 2. 合并PDF: ```python import PyPDF2 def merge_pdf(file1, file2, output_file): pdf_merger = PyPDF2.PdfFileMerger() pdf_merger.append(file1) pdf_merger.append(file2) with open(output_file, 'wb') as output: pdf_merger.write(output) ``` 3. 拆分PDF: ```python import PyPDF2 def split_pdf(file_path, output_file_prefix): pdf_file = open(file_path, 'rb') pdf_reader = PyPDF2.PdfReader(pdf_file) for page_num in range(pdf_reader.numPages): pdf_writer = PyPDF2.PdfFileWriter() pdf_writer.addPage(pdf_reader.getPage(page_num)) output_file = f"{output_file_prefix}_{page_num}.pdf" with open(output_file, 'wb') as output: pdf_writer.write(output) pdf_file.close() ``` 4. 旋转PDF: ```python import PyPDF2 def rotate_pdf(file_path, output_file, rotation_angle): pdf_file = open(file_path, 'rb') pdf_reader = PyPDF2.PdfReader(pdf_file) pdf_writer = PyPDF2.PdfFileWriter() for page_num in range(pdf_reader.numPages): page = pdf_reader.getPage(page_num) page.rotateClockwise(rotation_angle) pdf_writer.addPage(page) with open(output_file, 'wb') as output: pdf_writer.write(output) pdf_file.close() ``` 5. 加密PDF: ```python import PyPDF2 def encrypt_pdf(file_path, output_file, password): pdf_file = open(file_path, 'rb') pdf_reader = PyPDF2.PdfReader(pdf_file) pdf_writer = PyPDF2.PdfFileWriter() for page_num in range(pdf_reader.numPages): pdf_writer.addPage(pdf_reader.getPage(page_num)) pdf_writer.encrypt(password) with open(output_file, 'wb') as output: pdf_writer.write(output) pdf_file.close() ``` 以上是使用Python编写对PDF进行操作的几个常见示例,你可以根据需要进行调整和扩展。 ### 回答3: 借助Python可以使用pdfminer库来读取和处理PDF文件,同时也可以使用reportlab库来生成PDF文件。以下是一个使用PythonPDF进行处理的示例: 1. 读取PDF文件: 使用pdfminer库可以读取PDF文件的文本内容,可以获取每一页的文本信息,并进行相关的处理和分析。 ```python import pdfminer from pdfminer.high_level import extract_text # 读取PDF文件 text = extract_text('example.pdf') print(text) ``` 2. 创建新的PDF文件添加内容: 使用reportlab库可以创建一个空白的PDF文件,并添加文本、图形等内容。 ```python from reportlab.pdfgen import canvas # 创建一个空白的PDF文件 c = canvas.Canvas('new_pdf.pdf') # 添加文本 c.setFont("Helvetica", 12) c.drawString(100, 100, "Hello, World!") # 保存PDF文件 c.save() ``` 3. 修改已有的PDF文件: 使用reportlab.library可以打开已存在的PDF文件,并修改其内容,例如添加文本,插入图片,修改样式等。 ```python from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.styles import getSampleStyleSheet from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image # 打开PDF文件 doc = SimpleDocTemplate('example.pdf', pagesize=A4) # 添加内容 styles = getSampleStyleSheet() story = [] # 添加段落 para = Paragraph("这是一个段落", styles['Normal']) story.append(para) # 添加图片 image = Image('image.png', width=100, height=100) story.append(image) # 保存修改后的PDF文件 doc.build(story) ``` 上述是几个可以以Python编写对PDF文件进行处理的示例,但在实际应用需要根据具体的需求进行开发和调整,可以根据具体的项目需求来添加更多的功能和处理
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值