【问题标题】:Fields "Created" and "Modified" in Document Properties (PDF) were not displayed文档属性 (PDF) 中的“已创建”和“已修改”字段未显示
【发布时间】:2021-02-03 12:17:23
【问题描述】:

目前我已将许多 PDF 合并在一起以创建一个 PDF。我添加了元数据信息,其中包括“创建”和“修改”两个字段,但结果这些字段仍然不显示信息。 这是我的源代码:

import re
import os
import fitz
from datetime import datetime

def importMetaData(path):
    regex = r"^r20ut(\d+)ej(\d+)$"
    r_UM = re.compile(regex)
    extension = [".pdf"]
    now = datetime.now() # current date and time
    date_time = now.strftime("%m/%d/%Y %H:%M:%S %p")
    print("date and time:",date_time)
    Number = ""
    for root, dirs, files in os.walk(path):
        for file in files:
            ext = os.path.splitext(file)[-1].lower()
            f_name = os.path.splitext(file)[0]
            if ext in extension:
                if r_UM.search(f_name) is not None:
                    if root.endswith("thuan1"):
                        Number = dictRNumber["code1"]
                    elif root.endswith("thuan2"):
                        Number = dictRNumber["code2"]
                    else:
                        continue
                    inforPDF=fitz.open(os.path.join(root, file))
                    inforPDF.set_metadata({})
                    inforPDF.set_metadata(
                    {
                        "producer": "Microsoft® Word for Office 365",
                        "author": "Thuan",
                        "modDate": date_time,
                        "title": "Data Analysis",
                        "creationDate": date_time,
                        "creator": "Microsoft® Word for Office 365",
                        "subject": Number
                    })
                    inforPDF.save(os.path.join(root, f_name+".pdf"))

图片

你能给我一些建议吗?

【问题讨论】:

  • 你为什么连续两次打电话给set_metadata()?删除第一个将其设置为空的调用:inforPDF.set_metadata({})
  • @martineau -san,命令行 inforPDF.set_metadata({}) 用于清除所有字段。可以参考部分 set_metadat() Example (pymupdf.readthedocs.io/en/latest/…)
  • 好的。从文档看来,在第二次调用中,您需要向函数传递一个字典,该字典是您清除后 inforPDF.metadata 中内容的更新版本。
  • 从其中许多文件的合并文件中,我转换为word,然后重新导出PDF,输入了两个字段。我真的不明白。

标签: python python-3.x pymupdf python-pdfreader


【解决方案1】:

我是 PyMuPDF 的维护者。

确实没有必要在填充最终所需的值之前先清除元数据。

更重要的是,有一种特定于 PDF 的日期时间格式必须使用以确保所有 PDF 查看者都能理解它:D:20210207070439-03'00'

此外,PyMuPDF 中有一个函数可以为当前时间戳提供正确的值:fitz.getPDFnow()

【讨论】:

猜你喜欢
  • 2021-12-31
  • 2014-04-25
  • 2010-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多