C 强制MuPDF也绘制页面背景

C 强制MuPDF也绘制页面背景,c,pdf,2d,mupdf,C,Pdf,2d,Mupdf,当我调用fz\u run\u page()时,MuPDF只将实际的PDF对象绘制到pixmap上 (例如文本、图像、矢量图形等) 它不会绘制页面边界框并用静态颜色(例如白色)填充。有没有办法让MuPDF也绘制页面背景 我知道我可以使用fz\u clear\u pixmap\u with_value()在调用fz\u run\u page()之前手动将背景设置为静态颜色。但是一旦开始旋转,这个解决方案就会出现问题,因为旋转后的PDF页面的边框上会出现未使用的空白。因此,如果有可能让MuPDF先绘制

当我调用
fz\u run\u page()时,
MuPDF只将实际的PDF对象绘制到pixmap上

(例如文本、图像、矢量图形等)

它不会绘制页面边界框并用静态颜色(例如白色)填充。有没有办法让MuPDF也绘制页面背景

我知道我可以使用
fz\u clear\u pixmap\u with_value()
在调用
fz\u run\u page()之前手动将背景设置为静态颜色。
但是一旦开始旋转,这个解决方案就会出现问题,因为旋转后的PDF页面的边框上会出现未使用的空白。因此,如果有可能让MuPDF先绘制页面的边界框,将其背景填充为静态颜色,然后在其上绘制文本等PDF对象,这将非常有用

这有可能吗


谢谢

以防有人有同样的问题。解决方案是只需清除pixmap,然后在调用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()的结果表示“宽度”和“高度”非常重要,因为它们包含页面的真实、未舍入的维度


如果不使用转换矩阵,也可以在pixmap中预先填充0xff。

以防有人遇到同样的问题。解决方案是只需清除pixmap,然后在调用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()的结果表示“宽度”和“高度”非常重要,因为它们包含页面的真实、未舍入的维度

如果不使用变换矩阵,也可以在pixmap中预先填充0xff