Преобразование pdf с растровыми изображениями 300 dpi в svg

Я создаю инструмент для преобразования pdf в svg. Эти PDF-файлы содержат графические данные, в том числе большие растровые изображения с разрешением 300 dpi, а также множество векторов. Покопавшись в здесь, в stackoverflow, я нашел pdf2svg, который отлично работает как шарм, и векторные данные идеальны. Но похоже, что растровые изображения уменьшаются до 72 точек на дюйм. Размеры по-прежнему 8x10 в дюймах, но вы можете сказать, что dpi неправильное, когда вы увеличиваете масштаб. Логично предположить, что значения по умолчанию предполагают 72 dpi, но мне нужны растровые изображения с полным разрешением.

pdf2svg использует poppler и cairo для преобразования. Я порылся в коде и увидел, где создается страница poppler и поверхность cairo, и я увидел в документации, что страница poppler имеет понятие «масштаб», которое кажется актуально, но я не могу понять, где его подключить. Я попытался (экспериментально) жестко запрограммировать высоту и ширину, переданные в cairo_svg_surface_create, на правильные значения, но это сделало размеры, применяемые ко всему svg, больше , не затрагивая встроенное растровое изображение.

poppler_page_get_size (page, &width, &height);

// Open the SVG file
surface = cairo_svg_surface_create(svgFilename, width, height);
drawcontext = cairo_create(surface);

// Render the PDF file into the SVG file
poppler_page_render(page, drawcontext);
cairo_show_page(drawcontext);

Я не думаю, что то, что я пытаюсь сделать, очень эзотерично, поэтому я надеюсь, что кто-то, у кого есть опыт работы с библиотеками, сразу увидит мою ошибку. Любая помощь, конечно, будет очень признательна.

9
задан Community 23 May 2017 в 12:31
поделиться