【问题标题】:Edit existing PDF's pages in Python在 Python 中编辑现有的 PDF 页面
【发布时间】:2019-11-07 16:00:02
【问题描述】:

我有一个 PDF 文件,我从中删除了一些页面。我想更正(修复)新的 pdf 页码。有没有什么方法/库可以在不将 pdf 转换为另一种格式的情况下更新页码?我尝试将 pdf 转换为文本、XML 和 JSON,然后修复页码。但是,如果我将它转换回 pdf,它看起来很乱(无法保持原始 pdf 的样式)。我遇到的问题是:

  1. 删除旧页码。
  2. 添加新页码。

我在 Ubuntu 上使用 python。我试过ReportLabPyXpyfpdf

【问题讨论】:

标签: python pdf


【解决方案1】:

我也遇到过类似的问题,老实说我没能完全解决,而是自己取了对应的html,用BeautifulSoup处理。但是,我确实得到了比 python 模块更接近的方法,我使用 poppler 的 pdftotext.exe(底部的链接)来读取 pdf 文件,它工作得很好,除了它无法区分文本列之外.由于这不是 python 模块,所以我使用 os.system 来调用 .exe 文件上的命令字符串。

def call_poppler(input_pdf, input_path):

    """
    Call poppler to generate a txt file
    """
    command_row = input_path + " " + input_pdf
    os.system(command_row)
    txt_name = input_pdf[0:-4] + ".txt"
    processed_paper = open_txt(txt_name)
    return processed_paper

def open_txt(input_txt_name):

    """
    Open and generate a python object out of the
    txt attained with poppler
    """
    opened_file = open(input_txt_name,"rb").readlines()
    output_file = []
    for row in opened_file:
        row = row.decode("utf-8").strip()
        output_file.append(row)
    return output_file

这将为您返回一个已处理的“.txt”文件,然后您可以根据需要处理该文件并使用某些模块(例如 pypdf)重写为 pdf,如果这不是您想要的答案,抱歉,但 pdf 文件相当难在 python 中处理,因为它们不是基于文本的文件。不要忘记提供可执行文件的路径。 你可以在这里得到poppler:https://poppler.freedesktop.org/

【讨论】:

  • 谢谢。我怎样才能保持格式? PYPDF2 也在做同样的事情。
  • 我建议你不要保留格式的方式,你转移到另一种格式然后重写为pdf,对不起,这是我在考虑问题时能想出的最好的,唯一的与模块的不同之处在于 poppler 似乎表现更好。问题在于pdf的阅读,因为它不是文本类型的文件
  • 谢谢。您知道我可以在不更改格式的情况下将图像添加到 pdf 的任何方法吗?
  • 只知道你命名的那些python模块,他们通常在阅读pdf文本方面很差......
  • 再次感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-15
  • 2016-09-09
  • 2013-01-16
  • 2017-10-19
  • 1970-01-01
  • 2016-03-08
  • 1970-01-01
相关资源
最近更新 更多