【问题标题】:How to insert image in mupdf library如何在 mupdf 库中插入图像
【发布时间】:2017-09-12 07:55:19
【问题描述】:

我正在使用 mupdf 签署 pdf。

我成功用函数“pdf_update_ink_appearance”在pdf中签署了注释

现在我正在尝试将图像插入 pdf。

我添加以下代码来插入图片:

image = fz_new_image_from_file(ctx, "/storage/emulated/0/a.jpg");

fz_fill_image(ctx, dev, image, &page_ctm, 1.0f);

而且图片不显示在 pdf 中。

我尝试了另一种方法,但图像也无法显示在 pdf 中。

How to add a transparent image to PDF with mupdf using SMask?

任何人都可以帮助解决这种情况吗?

谢谢。

【问题讨论】:

    标签: mupdf


    【解决方案1】:

    我是 PyMuPDF 的作者之一(MuPDF 的 Python 绑定)并解决了这个确切的任务。你可以看看 GitHub 中的源代码。

    基本流程是:

    创建一个图像,然后从文件中创建一个像素图。如果此像素图具有 alpha(即透明度),则创建另一个包含 alpha 字节的像素图并如下链接。在此之后将主像素图添加到 PDF。最后将引用它的 XObject 添加到页面的/Resources,并在页面的/Contents 对象中使用“Do”运算符调用 XObject。

    if (filename)
    {
        image = fz_new_image_from_file(gctx, filename);
        pix = fz_get_pixmap_from_image(gctx, image, NULL, NULL, 0, 0);
        if (pix->alpha == 1)
        {
            j = pix->n - 1;
            pm = fz_new_pixmap(gctx, NULL, pix->w, pix->h, seps, 0);
            s = pix->samples;
            t = pm->samples;
            for (i = 0; i < pix->w * pix->h; i++)
                t[i] = s[j + i * pix->n];
            mask = fz_new_image_from_pixmap(gctx, pm, NULL);
            zimg = fz_new_image_from_pixmap(gctx, pix, mask);
            fz_drop_image(gctx, image);
            image = zimg;
            zimg = NULL;
        }
    }
    

    请查看文件fitz.i 并搜索函数insertImage。这是一个 SWIG 接口文件,但那部分是纯 C 与 MuPDF 接口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 2013-01-20
      • 1970-01-01
      • 2021-09-13
      • 2022-01-16
      • 1970-01-01
      相关资源
      最近更新 更多