Wand 0.6.13 < /li>
Веб -сервер: nginx 1.24.0 < /li>
Сервина овиновника: 23.0.0 < /li>
Мы не являемся < /em>. Это приложение Django работает непосредственно на сервере с локальной виртуальной средой. Вот сердце этого: < /p>
Код: Выделить всё
with Image(filename=pdf_location) as pdf:
with Image(pdf.sequence[0]) as first_page_pdf:
with first_page_pdf.convert('png') as first_page_png:
first_page_png.background_color = Color('white')
first_page_png.alpha_channel = 'remove'
return first_page_png.make_blob()
< /code>
Когда я загружаю PDF на сайт администратора для обработки, я получаю эту ошибку: < /p>
MagickReadImage returns false, but did not raise ImageMagick exception. This can occur when a delegate is missing, or returns EXIT_SUCCESS without generating a raster.
- I do установить GhostScript:
Код: Выделить всё
$ gs --version
10.02.1
$ which gs
/usr/bin/gs
- My ImageMagick Police.xml содержит контент по умолчанию, найденный в файле Policy-debian.xml , который включен в пакет ImageMagick, с заметным исключением, обеспечивающего
< /ul>Both correctly create page-001.png when using this test PDF.Код: Выделить всё
$ identify -list policy Path: /etc/ImageMagick-6/policy.xml Policy: Resource name: disk value: 2GiB Policy: Resource name: map value: 2048MiB Policy: Resource name: memory value: 1024MiB Policy: Resource name: area value: 256MP Policy: Resource name: height value: 32KP Policy: Resource name: width value: 32KP Policy: Undefined rights: None Policy: Path rights: None pattern: @* Policy: Delegate rights: None pattern: URL Policy: Delegate rights: None pattern: HTTPS Policy: Delegate rights: None pattern: HTTP Policy: Coder rights: Read Write pattern: PDF Path: [built-in] Policy: Undefined rights: None < /code> Преобразование одного и того же файла PDF работает, когда я делаю это вручную как с GhostScript, так и с ImageMagick (как предложено здесь): < /li> < /ul> $ gs -sDEVICE=pngalpha -o page-%03d.png -r120 pdf-test.pdf GPL Ghostscript 10.02.1 (2023-11-01) Copyright (C) 2023 Artifex Software, Inc. All rights reserved. This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY: see the file COPYING for details. Processing pages 1 through 1. Page 1 Loading font ArialMT (or substitute) from /usr/share/ghostscript/10.02.1/Resource/Font/NimbusSans-Regular < /code> и < /p> $ convert -density 120 pdf-test.pdf page-%03d.png
And finally, when doing this manually within my Django shell (i.e., within the same venv that nginx uses), it also works properly:
Код: Выделить всё
$ ./manage_dev.py shell
19 objects imported automatically (use -v 2 for details).
Python 3.12.3 (main, Jun 18 2025, 17:59:45) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from wand.image import Image, Color
>>> with Image(filename='pdf-test.pdf') as pdf:
... with Image(pdf.sequence[0]) as first_page_pdf:
... with first_page_pdf.convert('png') as first_page_png:
... first_page_png.background_color = Color('white')
... first_page_png.alpha_channel = 'remove'
... blob = first_page_png.make_blob()
... with open('screenshot.png', 'wb') as png:
... png.write(blob)
...
24420
< /code>
[*] Одна вещь, которая немного странна, заключается в том, что когда я перечисляю делегатов ImageMagick, GS < /code> не указан. Это единственное, о чем я могу придумать, что может вызвать проблему, но я не могу понять, как ее перечислить: < /li>
< /ul>
$ convert -list configure | grep DELEGATES
DELEGATES bzlib djvu fftw fontconfig freetype heic jbig jng jpeg lcms lqr lzma openexr openjp2 pango png ps raw tiff webp wmf x xml zlib zstd
DELEGATES bzlib djvu fftw fontconfig freetype heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png raw tiff webp wmf x xml zlib
< /code>
Обратите внимание, что это не опечатка; Здесь есть 2 линии делегатов
для повторного подтверждения, этот код отлично работал в течение многих лет до этой миграции/обновления сервера, так что все это заставляет меня верить, что я просто не могу приложить его файл конфигурации (Imagemagick, Nginx?). Я действительно надеюсь, что у одного из вас может быть некоторое представление.
Заранее! Я должен? < /Li>
< /ul>
Код: Выделить всё
$ convert -version
Version: ImageMagick 6.9.12-98 Q16 x86_64 18038 https://legacy.imagemagick.org
Copyright: (C) 1999 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP(4.5)
Delegates (built-in): bzlib djvu fftw fontconfig freetype heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png raw tiff webp wmf x xml zlib
< /code>
convert -list configure | grep pdf
[*] У меня не было в моей политике. Xml . Я добавил эту строку и устанавливаю права для чтения | write , но я все еще получаю ту же ошибку. Настройка его для чтения фактически введено политикуррором : попытка выполнить операцию, не разрешенную политикой безопасности `pdf ' @ error/module.c/openmodule/1293 .
Подробнее здесь: https://stackoverflow.com/questions/797 ... ick-except