Ответ приходит к вам на основе подсказки cptjazz на github.
Прежде всего, документация для RMagick часто неверна.Я сомневаюсь, что это проблема версии, потому что документы, размещенные на ImageMagick, v2.12.0, а я использую v2.13.1.В любом случае, вот что вам нужно знать.
В документах утверждается, что вы можете использовать image[0]['pdf', 'use-cropbox'] = true
, поскольку true.to_s
возвращает строку "true".На самом деле ему нужна явная строка, а метод []=
требует только один ключ, а не два.
Я не экспериментировал с pdf:use-trimbox
, главным образом потому, что хотел вариант, который также работает для postscript.Что касается постскриптума, вы можете изменить его лишь незначительно и установить ps:use-cropbox
в значение «истина», но документы RMagick неясно, как правильно установить геометрию на PS, PS2 или PS3.(Обычно в ImageMagick можно было бы установить плотность на «300x300», а геометрию на «24%», предположительно.) И по какой-то причине выходные файлы формата PS3 не масштабируются так же, как PDF-файлы, созданные RMagick.Но я отвлекся.
Вот что я использовал для PDF:
image = Magick::Image::from_blob(svg_string) { self.format = 'SVG' }
image[0].format = 'PDF'
image[0]["use-cropbox"] = 'true'
image[0].to_blob
А вот что я использовал для PS:
image = Magick::Image::from_blob(svg_string) { self.format = 'SVG' }
page = image[0].page.dup
image[0]["use-cropbox"] = 'true'
image[0].format = 'PS3'
image[0].density = '100x100'
image[0].page = page
image[0].to_blob
По какой-то причине настройкаболее высокая плотность делает изображение меньше.Почему это должно быть загадкой.