如何使用Python获取PDF文件的最后一行位置?
我是Python新手,使用Python、ReportLab和PyPDF2模块创建PDF文件。请帮我找出PDF文件的最后一行位置。下面是我问题的解释 比如说, 我有一个PDF文件,里面写了10行。现在我想在同一个PDF文件中添加另一个文本。为此,我想知道最后一行的位置,这样我就可以从该行的下方开始另一个文本 下面是我从PDF文件中提取数据的代码示例如何使用Python获取PDF文件的最后一行位置?,python,pdf,Python,Pdf,我是Python新手,使用Python、ReportLab和PyPDF2模块创建PDF文件。请帮我找出PDF文件的最后一行位置。下面是我问题的解释 比如说, 我有一个PDF文件,里面写了10行。现在我想在同一个PDF文件中添加另一个文本。为此,我想知道最后一行的位置,这样我就可以从该行的下方开始另一个文本 下面是我从PDF文件中提取数据的代码示例 import tkinter from tkinter import * from reportlab.pdfgen import canvas fr
import tkinter
from tkinter import *
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
from PyPDF2 import PdfFileReader
root= Tk()
root.geometry("100x100")
def line_position():
opn_pdf1= open("test_pdf.pdf","rb")
read_pdf= PdfFileReader(opn_pdf1)
print(read_pdf)
num_page= read_pdf.getNumPages()
print(num_page)
page= read_pdf.getPage(num_page-1)
data= page.extractText().splitlines()
print (data)
print(len(data))
Button(root,text= "PDF Last Line",command= line_position).pack()
root.mainloop()
另外,请告诉我是否有任何方法可以使用reportlab而不是PyPDF2读取和提取数据
谢谢。试试这个
last_line = data[-0]
print(last_line)
我希望这能帮上忙
import tkinter
from tkinter import *
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
from PyPDF2 import PdfFileReader
root= Tk()
root.geometry("100x100")
def line_position():
opn_pdf1= open("test.pdf","rb")
read_pdf= PdfFileReader(opn_pdf1)
print(read_pdf)
num_page= read_pdf.getNumPages()
print(num_page)
page= read_pdf.getPage(num_page-1)
data= page.extractText().splitlines()
for i in reversed(range(0, len(data))):
if data[i] != " ":
print(data[i])
break
i -= 1
print(len(data))
Button(root,text= "PDF Last Line",command= line_position).pack()
root.mainloop()
听起来你想要PDF上最后一行出现的y坐标。我不相信PyPDF2能做到这一点。如果需要x/y坐标,可以使用PyMuPDF。下面的代码使用PyMuPDF打印最后一行的y坐标
import json
from tkinter import *
import fitz # http://pymupdf.readthedocs.io/en/latest/
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
root= Tk()
root.geometry("100x100")
def line_position():
read_pdf = fitz.open("test.pdf")
num_page = read_pdf.pageCount
print(num_page)
page = read_pdf[num_page - 1]
# http://pymupdf.readthedocs.io/en/latest/app2/#json
data = json.loads(page.getText(output='json'))
print(data)
highest_y = -1
for block in data['blocks']:
if 'lines' in block:
for line in block['lines']:
for span in line['spans']:
if span['text'].strip():
print(span)
highest_y = max((highest_y, span['bbox'][3]))
print(highest_y)
read_pdf.close()
Button(root, text="PDF Last Line", command=line_position).pack()
root.mainloop()
不知道为什么否决票…它尝试了,而且成功了。在我的例子中,我不得不用print“(data[len(data)-3])来得到最后一个字。谢谢你,卡夫科,谢谢你的回复。但我需要PDF中最后一行的位置。这段代码给我最后一行写的文本。正如您所知,当您使用ReportLab创建PDF文件时,您必须给出编写内容的起始位置。我正在寻找关于该职位价值的信息。再次感谢您的回复。谢谢您的回复。我试图安装fitz,但出现“致命错误:fitz.h:没有这样的文件或目录”错误。你能告诉我“PyMuPDF”只适用于Windows吗?我用的是覆盆子皮。可能由于这个原因,它不会安装。另外,请告诉我如何安装。上面说它适用于Windows、Mac和Linux。安装说明如下:。我更喜欢使用pip进行安装:
pip安装[--upgrade]PyMuPDF
。