如何在mupdf库中插入图像

时间:2017-09-12 07:55:20

标签: mupdf

我正在使用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?

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

感谢。

1 个答案:

答案 0 :(得分: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连接。

相关问题