Я пытаюсь преобразовать первую страницу файла PDF в файл миниатюр JPEG. У меня есть код, похожий на следующий код Python.
from tempfile import TemporaryFile, NamedTemporaryFile
import os
from subprocess import call
…
def createThumbnail(reporttempfile, thumbnailtempfile):
# build the command for executing for extracting thumbnail
command = "convert -resize 241x344 -background white -gravity center -extent 241x344 -quality 75"
csplit = command.split(' ')
csplit.append("pdf:"+reporttempfile.name + "[0]")
csplit.append(thumbnailtempfile.name)
print "csplit = ", csplit
print "cmd = %s" % " ".join(csplit)
# run the command convert to create thumbnail
retval = call(csplit)
print "retval = %d" % retval
return retval
Когда я вызываю вышеуказанную функцию, я получаю следующий вывод:
csplit = ['convert', '-resize', '241x344', '-background', 'white', '-gravity', 'center', '-extent', '241x344', '-quality', '75', 'pdf:/tmp/reportfile0001_zeEJ8B.pdf[0]', '/tmp/thumbnail0001_DTPHGb.jpg']
cmd = convert -resize 241x344 -background white -gravity center -extent 241x344 -quality 75 pdf:/tmp/reportfile0001_zeEJ8B.pdf[0] /tmp/thumbnail0001_DTPHGb.jpg
**** Error: Cannot find a 'startxref' anywhere in the file.
**** Warning: An error occurred while reading an XREF table.
**** The file has been damaged. This may have been caused
**** by a problem while converting or transfering the file.
**** Ghostscript will attempt to recover the data.
**** Error: Trailer is not found.
Requested FirstPage is greater than the number of pages in the file: 0
No pages will be processed (FirstPage > LastPage).
**** This file had errors that were repaired or ignored.
**** Please notify the author of the software that produced this
**** file that it does not conform to Adobe's published PDF
**** specification.
convert.im6: Postscript delegate failed `/tmp/reportfile0001_zeEJ8B.pdf': No such file or directory @ error/pdf.c/ReadPDFImage/677.
convert.im6: no images defined `/tmp/thumbnail0001_DTPHGb.jpg' @ error/convert.c/ConvertImageCommand/3044.
retval = 1
1
Однако, когда я вызываю команду напрямую, набрав в оболочке, конвертировать удается без каких-либо проблем, и я вижу, что файл .jpg конвертируется правильно. Используемая команда (то, что также напечатано в выводе выше):
convert -resize 241x344 -background white -gravity center -extent 241x344 -quality 75 pdf:/tmp/reportfile0001_zeEJ8B.pdf[0] /tmp/thumbnail0001_DTPHGb.jpg
Я видел такое поведение на Mac (10.9.5) с ImageMagick 6.9.0-0 Q16 x86_64 2015-04-09, а также с Ubuntu 14 с ImageMagick 6.7.7-10 2014-03-06 Q16.
Я в недоумении, почему это происходит. Может кто-нибудь помочь?
С уважением,
SN