将pdf与300dpi位图转换为svg

Pau*_*nan 9 c pdf svg poppler cairo

我正在创建一个将pdf转换为svg的工具.这些pdf包含图形数据,包括300 dpi的大位图和一堆矢量.周围戳这里计算器,我发现pdf2svg,这伟大的-就像一个魅力,矢量数据是完美的.但看起来位图缩小到72dpi.尺寸仍然是8x10英寸,但是当你放大时你可以看出dpi是不对的.柔和的意义是默认值假设72 dpi,但我需要全分辨率位图图像.

pdf2svg使用poppler和cairo进行转换.我在代码中探讨了一下,我看到它在哪里创建一个poppler页面和一个cairo表面,我在文档中看到一个poppler页面有一个"scale"的概念似乎相关,但我可以'找出插入的位置.我尝试(通过实验)将传入的高度和宽度硬编码为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);
Run Code Online (Sandbox Code Playgroud)

我不认为我想做的事情是非常深奥的,所以我希望有图书馆经验的人能立刻看到我的错误.当然,任何帮助都会受到极大的赞赏.

Uli*_*ter 0

cairo_surface_set_fallback_resolution() 也许有帮助吗?(不,我自己也不确定)