我正在创建一个将 pdf 转换为 svg 的工具。这些 pdf 包含图形数据,包括 300 dpi 的大位图和一堆矢量。在 stackoverflow 上四处寻找,我发现pdf2svg非常棒——就像一个魅力,矢量数据是完美的。但看起来位图正在缩小到 72dpi。尺寸仍然是 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);
我不认为我想做的事情很深奥,所以我希望有图书馆经验的人能马上看到我的错误。当然,任何帮助都将不胜感激。