9

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);

私がやろうとしていることは非常に難解だとは思わないので、ライブラリの経験がある人が私のエラーをすぐに見てくれることを願っています. もちろん、どんな助けでも大歓迎です。

4

2 に答える 2

4

http://lists.freedesktop.org/archives/poppler/2011-December/008451.htmlで説明されているようにソースに変更を加えたところ、完全に機能しました-画像はネイティブ解像度のようです。

交換

poppler_page_render(page, drawcontext);

poppler_page_render_for_printing(page, drawcontext);
于 2012-06-13T17:58:44.907 に答える
0

cairo_surface_set_fallback_resolution()はおそらく役に立ちますか?(いいえ、私自身もこれについてはわかりません)

于 2012-05-12T07:53:32.497 に答える