我是PyMuPDF的作者之一(一種Python綁定MuPDF)並解決了這個確切的任務。您可能會看看GitHub中的源代碼。
的基本過程是:
創建一個圖像,然後從文件中的pixmap。如果此像素圖具有alpha(即透明度),則創建另一個包含alpha字節的像素映射,並如下所示進行鏈接。在這之後,將主像素映射添加到PDF。最後添加一個引用它到頁面的/Resources
的XObject,並在頁面的/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接口文件,但該部分是與MuPDF接口的普通C語言。