2017-03-16 356 views
1

我從canva生成PDF並使用jsPDF生成它。如何在jsPDF中添加PDF生成水印?

https://github.com/MrRio/jsPDF

這裏是我的代碼是什麼我使用我想添加水印到頁面。 任何人都可以幫助我嗎?

self.downloadCanvasObjectAsPDF = function() { 
     canvas.deactivateAll().renderAll(); 

     try { 
      canvas.getContext('2d'); 
      var imgData = canvas.toDataURL("image/jpeg", 1.0); 
      var pdf = new jsPDF('p', 'mm', [297, 210]); 
      pdf.addImage(imgData, 'JPEG', 5, 5); 
      var namefile = 'export'; 
      if(namefile != null) { 
       pdf.save(namefile + ".pdf"); 
       return true; 
      }else{ 
       return false; 
      } 
     } catch(e) { 
      alert("Error description: " + e.message); 
     } 
    }; 
+0

什麼是不工作?對於圖像參數,請參閱例如[這個答案](https://stackoverflow.com/questions/29578721/image-in-pdf-cut-off-how-to-make-a-canvas-fit-entirely-in- a-pdf-page/29578919#29578919) – K3N

+0

@ K3N:我搜索了答案,但是我沒有找到任何答案。我嘗試添加文本,但爲此我需要屬性來減少文本的透明度。 –

+0

@ K3N:你知道如何將透明文本添加到jsPDF嗎? –

回答

1

您可以手動在每一頁第一添加水印被它的圖像或文字,然後添加您的內容,這樣就不會彼此重疊。

在這種方法中,您也可以在添加每個新頁面時添加/調用水印。 doc.addPage();

(OR)

在PDF生成你可以調用執行添加水印所有頁面的函數結束。

比方說,我想在PDF生成後爲我的所有頁面添加水印。

function addWaterMark(doc) { 
    var totalPages = doc.internal.getNumberOfPages(); 

    for (i = 1; i <= totalPages; i++) { 
    doc.setPage(i); 
    //doc.addImage(imgData, 'PNG', 40, 40, 75, 75); 
    doc.setTextColor(150); 
    doc.text(50, doc.internal.pageSize.height - 30, 'Watermark'); 
    } 

    return doc; 
} 

呼叫

function getPdf() { 

    var doc = new jsPDF('p', 'pt', 'a4'); 

//Add content 

//finally call the watermark 
    doc = addWaterMark(doc); 

    doc.save('test'); 

} 

小提琴這裏保存PDF參考之前此功能:https://jsfiddle.net/Purushoth/f55h4hzs/

+0

感謝您的回答。我試過了你的代碼,但它沒有重疊現有的內容。 –

+0

我需要使用現有內容覆蓋整個頁面的水印。 –

+0

jsPDF不支持此文本旋轉https://freephile.org/w/images/thumb/4/4e/Watermark_confidential.png/300px-Watermark_confidential.png 您可以添加一個圖像(PNG)相同的大小的頁面,然後添加其餘的內容。所以實際的內容不會與水印重疊。 首先爲您的頁面添加水印,然後添加內容。爲每個新頁面添加它也是如此! @RonakChauhan – Purushoth