【问题标题】:How to extract images from a document using pypandoc into a different folder in media repository of a project in Django?如何使用 pypandoc 将文档中的图像提取到 Django 项目媒体存储库中的不同文件夹中?
【发布时间】:2016-05-13 16:16:42
【问题描述】:

我目前正在尝试从用户上传到我的 Django 应用程序的媒体存储库的文档中提取图像。目前适用于我的代码是:

 html = pypandoc.convert(
        tmp_loc,
        'html5',
        extra_args=['--extract-media=']
        )

这会正确地将图像提取为 image01.jpg
到媒体目录中 在 HTML 中,img src 是:

<img src="/media/image01.jpg" />

现在的问题是,当用户上传另一个也有图像的 docx 时,它会在上传时替换之前的图像,因为它也以名称 image01.jpg 保存。

为了解决这个问题,我认为我们可以在媒体存储库中创建一个新文件夹,新文件夹的名称将是 doc-name。所以现在代码看起来像这样:

html = pypandoc.convert(
        tmp_loc,
        'html5',
        extra_args=['--extract-media=/media/<some_doc_name>']
        )

但是当我运行它的那一刻,我得到了以下错误:

Pandoc died with exitcode "1" during conversion: b'pandoc:     /media/docs: createDirectory: permission denied (Permission denied)\n'

有人可以指导我出了什么问题吗?如何解决这个问题? 任何解决此问题的替代方法也将不胜感激!

我在 python 中使用 Pypandoc 模块。

【问题讨论】:

  • 如果文档名称也相同怎么办?相反,如果图像文件存在,为什么不直接重命名它。
  • 问题是 pypandoc 自动生成 HTML 并将 img src 设置为指向 image01.jpg。我们如何修改 pandoc 生成的 HTML 以指向重命名的图像?
  • 你应该阅读这个github.com/bebraw/pypandoc/blob/master/README.md你可以指定输出文件名
  • 我需要将图像名称更改为其他名称,而不是其输出文件的名称。提取媒体选项从 docx 中提取图像并将它们保存在媒体存储库中。如何更改它提取的图像的名称?

标签: python django pandoc django-media


【解决方案1】:

你得到的错误清楚地表明你没有权限在 /media/docs 下创建目录

发生这样的事情可能有多种原因

  • 您无权在“/media/docs”下创建子目录 - 只需更改权限
  • 您有权限,但您正在使用其他没有权限的用户名运行您的应用程序 - 创建组并更改该组的权限
  • 您想解压到应用程序下的“media”目录,而不是系统根目录“/media” - 您的路径指定错误 - 应该在例如之前有“more” “/home/user/program/media/docs”或“media/docs”(不带前导“/”)
  • 您正在尝试将数据提取到不存在的子目录,而您的程序无法处理这种情况,因为无法创建“父”目录 - 所以请确保已创建该目录

最后一件事 - 如果您正在上传文档,不要假设它们确实有唯一的名称,使用唯一的东西(如创建记录的主键),或者通过验证该目录不存在以及是否存在来检查唯一性, 创建一个新的,在末尾添加一些额外的数字或随机文本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-08
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    相关资源
    最近更新 更多