c - 强制 MuPDF 也绘制页面背景

标签 c pdf 2d mupdf

当我调用 fz_run_page() 时,MuPDF 只将实际的 PDF 对象绘制到像素图上

(例如文本、图像、 vector 图形等)

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

我知道我可以在调用 fz_run_page() 之前使用 fz_clear_pixmap_with_value() 手动将背景设置为静态颜色。旋转开始发挥作用,因为旋转后的 PDF 页面的边界处会有未使用的空白空间。因此,如果有可能让 MuPDF 先绘制页面的边界框,将其背景填充为静态颜色,然后在其上绘制 PDF 对象(如文本等),这将非常有帮助。

这有可能吗?

谢谢!

最佳答案

以防万一有人遇到同样的问题。解决办法是简单地清除像素图,然后在调用 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 预填充像素图。

关于c - 强制 MuPDF 也绘制页面背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14903979/

相关文章:

c - 为什么我可以在 c 中的 float 2d 数组中为未分配的内存分配一个值?

python - 在 PDF 文件中查找文本位置

javascript - 在将 pdf 上传到服务器之前使用 Internet Explorer 预览

java - A* 寻路算法运行速度极慢

c++ - 如何获取当前流程的工作对象(如果有)?

c - 为字符串数组分配内存

c - 如何返回指向结构数组内元素的指针?

javascript - Puppeteer 中的整页 PDF

javascript - 如何在点周围的网格中绘制 "rhombus' ish"形状

java - 按多列对数组进行排序