1

fz_run_page()MuPDFを呼び出すと、実際のP​​DFオブジェクトのみがピックスマップに描画されます

(例:テキスト、画像、ベクターグラフィックなど)

ページ境界ボックスを描画せず、静的な色(白など)で塗りつぶします。MuPDFにページの背景も描画させる方法はありますか?

fz_clear_pixmap_with_value()電話をかける前に手動で背景を静的な色に設定できることは知っていfz_run_page().ますが、回転すると、回転したPDFページの境界に未使用のスペースが空になるため、このソリューションは回転が始まるとすぐに問題になります。したがって、MuPDFで最初にページの境界ボックスを描画し、その背景を静的な色で塗りつぶしてから、テキストなどのPDFオブジェクトを描画する可能性があると非常に役立ちます。

これはどういうわけか可能ですか?

ありがとう!

4

1 に答える 1

1

誰かが同じ問題を抱えている場合に備えて。解決策は、fz_run_page() を呼び出す前に、単純にピックスマップをクリアしてから、自分で白い背景を描画することです。たとえば、次のようにします。

dev = fz_new_draw_device(ctx, pixmap);
path = fz_new_path(ctx);
fz_moveto(ctx, path, 0, 0);
fz_lineto(ctx, path, 0, height);
fz_lineto(ctx, path, width, height);
fz_lineto(ctx, path, width, 0);
fz_closepath(ctx, path);
fz_fill_path(dev, path, 0, ctm, fz_device_gray, &constant_0, 1.0f);
fz_free_path(ctx, path);
fz_run_page(doc, page, dev, ctm, &cookie);
fz_free_device(dev);

fz_bound_page() の結果を「幅」と「高さ」に使用することが重要です。これは、ページの実際の丸められていない寸法が含まれているためです。

変換マトリックスを使用しない場合は、ピックスマップに 0xff を事前に入力することもできます。

于 2013-02-21T16:37:05.680 に答える