我正在使用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?
任何人都可以帮助这种情况吗?
感谢。
答案 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连接。