Скорее всего, проблемы заключается в том, что ImageMagick является имеющим PDF оказанного растровым Ghostscript, а затем экспортировать растровое изображение, завернутое в файл PDF. Не видя оригинала, я не могу сказать наверняка, но если оригинал содержит изображения JPEG, то, скорее всего, вы в конечном итоге используете JPEG, применяемый дважды, или просто визуализация вообще вызывает проблему.
Лучше всего использовать инструмент, который может просто применить CropBox к страницам. Вы можете сделать это с помощью Ghostscript, например (который может также модифицировать PDF другими способами, включая двойное квантование JPEG, поэтому будьте осторожны).
gs -sDEVICE=pdfwrite \
-sOutputFile=cropped.pdf \
-dBATCH -dNOPAUSE \
-c "<</ColorImageFilter /FlateEncode>> setdistillerparams" \
-f <input.pdf> \
-c "[ /CropBox [ 0 0 100 100] /PAGES pdfmark" \
-f
Первый участок между -c
и -f
говорит устройству pdfwrite использовать FlateEncode для цветных изображений, по умолчанию JPEG, используя Flate будет гарантировать, что Вы не получаете квантование применяется дважды.
Второй раздел между -c
и -f
сообщает устройству pdfwrite написать CropBox в файл и сделать его от 0,0 до 100,100. Единицы являются обычными единицами в формате PDF; 1/72 дюйма, вы можете использовать дробные значения.
Я уверен, что есть и другие инструменты, которые сделают это, возможно еще более легко.
Команда ImageMagick 'convert' использует Ghostscript в фоновом режиме для конвертирования (возможно) векторных страниц PDF в растровые изображения. Затем он применяет «trimbox» к изображению и снова конвертирует полноэкранное растровое изображение в контейнеры PDF-страниц. Другими словами, весь кусок мяса был превращен в фарш, и нет никакой возможности вернуть всю вашу кусочек. (Вы должны использовать другие инструменты, которые избегают растеризации.) –