gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 03:57:42 26 4
gpt4 key购买 nike

当我调用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com