PDFをSVGに変換するツールを作成しています。これらの pdf には、300 dpi の大きなビットマップや一連のベクターなどのグラフィック データが含まれています。ここで stackoverflowを調べてみると、 pdf2svgが見つかりました。これは素晴らしいもので、魅力的に機能し、ベクターデータは完璧です。しかし、ビットマップは 72dpi に縮小されているようです。寸法は依然として 8x10 インチですが、ズームインすると dpi が正しくないことがわかります。デフォルト値が 72 dpi であると仮定するのは理にかなっていますが、フル解像度のビットマップ画像が必要です。
pdf2svg は poppler と cairo を使用して変換を行います。コードをいじってみると、ポプラ ページとカイロ サーフェスが作成されている場所がわかりました。ドキュメンテーションで、ポプラ ページには関連しているように見える「スケール」の概念があることがわかりましたが、できます。プラグインする場所がわかりません。(実験的に)渡された高さと幅を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);
私がやろうとしていることは非常に難解だとは思わないので、ライブラリの経験がある人が私のエラーをすぐに見てくれることを願っています. もちろん、どんな助けでも大歓迎です。