У меня есть файл PDF, который я пытаюсь преобразовать в изображение jpg с помощью imagemagick на цифровом океаническом сервере с ОС Ubuntu 18.04.
Когда я делаю это на своем домашнем компьютере (ОС Ubuntu 16.04, настольная версия) преобразование выполнено успешно.
Когда я запускаю ту же команду на сервере, сгенерированное изображение имеет проблемы с отображением текста.В частности, на некоторых строках вместо текста я вижу прямоугольники, как вы можете видеть на изображении:
.
Я полагаю, это связано с некоторыми шрифтами.Итак, я выполнил pdffonts в исходном файле PDF, который отображает:
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
Helvetica-Bold Type 1 WinAnsi no no no 8 0
Helvetica Type 1 WinAnsi no no no 9 0
e42697+DejaVuSans TrueType WinAnsi yes no yes 10 0
Так что теперь я думаю, что проблема возникает из-за того, что шрифты Helvetica не встроены в pdf.
Команда, которую я использовалдля преобразования используется следующее:
convert invoice.pdf[0] -encoding WinAnsi -thumbnail 800x -background white -alpha remove -quality 95 -gravity center -format jpg jpg:out.jpg
Таким образом, вопрос заключается в следующем: есть ли способ добавить некоторые параметры в команду преобразования, чтобы избежать проблемы, или это какой-то пакет, который я могу установить на своем сервере?Я уже пробовал опции -font, но безуспешно.
Вот версии инструментов, которые я использую:
$ convert --version
Version: ImageMagick 6.9.7-4 Q16 x86_64 20170114
http://www.imagemagick.org
Copyright: © 1999-2017 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP
Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff wmf x xml zlib
$ ghostscript --version
9.22
Спасибо за вашу помощь.Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.
EDIT Я также пытался скомпилировать из исходного кода новейший imagemagick 7, но все равно происходит то же самое.
$ convert -list configure
Path: /usr/local/lib/ImageMagick-7.0.8//config-Q16HDRI/configure.xml
Name Value
-------------------------------------------------------------------------------
CC gcc
CFLAGS -I/usr/include/libxml2 -I/usr/include/libpng16 -
I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -
I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-
gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -
I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -
I/usr/include/OpenEXR -I/usr/include/lqr-1 -I/usr/include/glib-2.0 -
I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -
I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -
I/usr/include/freetype2 -I/usr/include/libpng16 -pthread -fopenmp -g -O2
-Wall -mtune=core2 -fexceptions -pthread -DMAGICKCORE_HDRI_ENABLE=1 -
DMAGICKCORE_QUANTUM_DEPTH=16
CODER_PATH /usr/local/lib/ImageMagick-7.0.8/modules-Q16HDRI/coders
CONFIGURE ./configure '--with-gslib=yes'
CONFIGURE_PATH /usr/local/etc/ImageMagick-7/
COPYRIGHT Copyright (C) 1999-2018 ImageMagick Studio LLC
CPPFLAGS -I/usr/local/include/ImageMagick-7
CXX g++
CXXFLAGS -g -O2 -pthread
DEFS -DHAVE_CONFIG_H
DELEGATES bzlib djvu mpeg fftw fontconfig freetype gslib jbig jng jpeg lcms lqr lzma openexr pango png ps tiff wmf x xml zlib
DISTCHECK_CONFIG_FLAGS --disable-deprecated --with-quantum-depth=16 --with-jemalloc=no --with-umem=no --with-autotrace=no --with-fontpath= --with-rsvg=no --with-perl=no
DOCUMENTATION_PATH /usr/local/share/doc/ImageMagick-7
EXEC-PREFIX /usr/local
EXECUTABLE_PATH /usr/local/bin
FEATURES DPC HDRI Cipher OpenMP
FILTER_PATH /usr/local/lib/ImageMagick-7.0.8/modules-Q16HDRI/filters
GIT_REVISION 14730
HOST x86_64-pc-linux-gnu
INCLUDE_PATH /usr/local/include/ImageMagick-7
LDFLAGS -L/usr/local/lib
LIB_VERSION 0x708
LIB_VERSION_NUMBER 7,0,8,11
LIBRARY_PATH /usr/local/lib/ImageMagick-7.0.8
LIBS -ljbig -llcms2 -ltiff -lfreetype -ljpeg -lgs -llqr-1 -
lglib-2.0 -lpng16 -lz -ldjvulibre -lfftw3 -lfontconfig -lfreetype -
lwmflite -lXext -lXt -lSM -lICE -lX11 -llzma -lbz2 -lIlmImf -lImath -
lHalf -lIex -lIexMath -lIlmThread -lpthread -lpangocairo-1.0 -lpango-1.0 -
lgobject-2.0 -lglib-2.0 -lcairo -lxml2 -lz -lm -lgomp
NAME ImageMagick
PCFLAGS -fopenmp -DMAGICKCORE_HDRI_ENABLE=1 -
DMAGICKCORE_QUANTUM_DEPTH=16
PREFIX /usr/local
QuantumDepth 16
RELEASE_DATE 2018-09-22
SHARE_PATH /usr/local/share/ImageMagick-7
SHAREARCH_PATH /usr/local/lib/ImageMagick-7.0.8/config-Q16HDRI
TARGET_CPU x86_64
TARGET_OS linux-gnu
TARGET_VENDOR pc
VERSION 7.0.8
WEBSITE http://www.imagemagick.org
Path: [built-in]
Name Value
-------------------------------------------------------------------------------
FEATURES OpenMP
NAME ImageMagick
QuantumDepth 16
РЕДАКТИРОВАТЬ 2
Мне удалось ограничить проблему ghostscript.Теперь у меня возникает такая же проблема при выполнении следующей команды:
$ gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m -r300 -
sOutputFile=gs_out_300.png invoice.pdf
GPL Ghostscript 9.22 (2017-10-04)
Copyright (C) 2017 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1
Loading NimbusSans-Bold font from
/usr/share/ghostscript/9.22/Resource/Font/NimbusSans-Bold... 4509328 2901747 2393680 1046799 3 done.
Loading NimbusSans-Regular font from /usr/share/ghostscript/9.22/Resource/Font/NimbusSans-Regular... 4575440 3079563
2413880 1062624 3 done.