Преобразование PDF-файлов в JPEG на лету и временное сохранение изображения - PullRequest
0 голосов
/ 04 июня 2019

Наше приложение динамически загружает 10 000 PDFS в DOM из эластичного поиска, нам нужны все 10 000, так как мы ищем визуально конкретные документы.

User Interface
 __________
|          |   ID: 87819237
|          |   Filename: Application.pdf
|    PDF   |   Size: 105kbs
|          |   Path: /project/XYZ/case001
|          |
|__________|

Загрузка 10000 PDF-файлов - это кошмар, но мы реализовали отложенную загрузку, однако загрузка PDF-файлов по-прежнему идет медленно, возможно, 2-3 секунды. Поэтому я разработал маршрут для преобразования каждого PDF на лету

<img src="{{ url_for('get_file', filepath=data['filepath']) }}">

Маршрут

# Endpoint for fetching
@app.route('/get_file', methods=["POST"])
def get_file():

    # Get arg from HTML
    filepath = request.args.get('filepath')
    dirname, fname = os.path.split(filepath)

    # Check if source file exists
    if os.path.isfile(filepath):

        # Prepare new image file name
        base_filename = os.path.splitext(os.path.basename(fname))[0] + '.jpg'
        save_dir = './static/images'

        # If the image doesn't already exist, create it
        if not os.path.isfile(os.path.join(save_dir, base_filename)):
            with tempfile.TemporaryDirectory() as path:
                images_from_path = convert_from_path(filepath, output_folder=path, last_page=0, first_page=0, dpi=15)
            for page in images_from_path:
                page.save(os.path.join(save_dir, base_filename), 'JPEG')

        # The image file stored on the server            
        output = send_from_directory(save_dir, base_filename)

    else:
        output = send_from_directory('./static/images', 'placeholder.jpeg')

    return output

Это прекрасно работает и может конвертировать PDF быстрее, чем он может загрузить PDF, но мне интересно, если это лучший метод? Есть ли где-нибудь, где я могу сохранить изображения, где они будут стерты после закрытия сессии? как временная папка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...