2017-09-12 175 views
1

我正在使用mupdf簽署pdf。如何在mupdf庫中插入圖像

我成功簽署在PDF中批註與功能「pdf_update_ink_appearance」

現在我試圖插入的圖像轉換成PDF。

我添加以下代碼以插入圖像:

圖像= 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

我是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語言。