Возьмите загруженные файлы на plone и загрузите их через скрипт на python? - PullRequest
1 голос
/ 11 апреля 2019

Я создал сайт документов на Plone, с которого можно загружать файлы.Я видел, что plone сохраняет их в файловой системе в виде большого двоичного объекта, теперь мне нужно провести их через скрипт на python, который будет обрабатывать PDF-файлы, загруженные с помощью OCR.У кого-нибудь есть идеи как это сделать?Спасибо

1 Ответ

2 голосов
/ 12 апреля 2019

Не знаете, как извлечь PDF-файлы из BLOB-хранилища или, если это вообще возможно, но вы можете извлечь их с работающего сайта Plone (например, выполнить скрипт через браузер):

import os
from Products.CMFCore.utils import getToolByName

def isPdf(search_result):
    """Check mime_type for Plone >= 5.1, otherwise check file-extension."""
    if mimeTypeIsPdf(search_result) or search_result.id.endswith('.pdf'):
        return True
    return False


def mimeTypeIsPdf(search_result):
    """
    Plone-5.1 introduced the mime_type-attribute on files.
    Try to get it, if it doesn't exist, fail silently.
    Return True if mime_type exists and is PDF, otherwise False.
    """
    try:
        mime_type = search_result.mime_type
        if mime_type == 'application/pdf':
            return True
    except:
        pass
    return False


def exportPdfFiles(context, export_path):
    """
    Get all PDF-files of site and write them to export_path on the filessytem.
    Remain folder-structure of site.
    """
    catalog = getToolByName(context, 'portal_catalog')
    search_results = catalog(portal_type='File', Language='all')
    for search_result in search_results:
        # For each PDF-file:
        if isPdf(search_result):
            file_path = export_path + search_result.getPath()
            file_content = search_result.getObject().data
            parent_path = '/'.join(file_path.split('/')[:-1])
            # Create missing directories on the fly:
            if not os.path.exists(parent_path):
                os.makedirs(parent_path)
            # Write PDF:
            with open(file_path, 'w') as fil:
                fil.write(file_content)
                print 'Wrote ' + file_path

    print 'Finished exporting PDF-files to ' + export_path

В этом примере структура папок Plone-сайта хранится в каталоге экспорта. Если вы хотите, чтобы они были плоскими в одном каталоге, необходим обработчик для повторяющихся имен файлов.

...