Наше приложение динамически загружает 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, но мне интересно, если это лучший метод? Есть ли где-нибудь, где я могу сохранить изображения, где они будут стерты после закрытия сессии? как временная папка?