如何使用Python获取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

我是Python新手,使用Python、ReportLab和PyPDF2模块创建PDF文件。请帮我找出PDF文件的最后一行位置。下面是我问题的解释

比如说,

我有一个PDF文件,里面写了10行。现在我想在同一个PDF文件中添加另一个文本。为此,我想知道最后一行的位置,这样我就可以从该行的下方开始另一个文本

下面是我从PDF文件中提取数据的代码示例

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