2009-02-24 76 views
36

我有一個現有的PDF,我可以使用FdFWriter輸入文本框。它運作良好。現在我有一個形象。我已閱讀文檔並查看了許多示例,但它們都創建新文檔並插入圖像。我想採用現有的PDF並將圖像插入圖像字段或作爲按鈕的圖標圖像。我已經嘗試過,但它腐敗的文件。如何在現有的PDF中插入iTextSharp的圖像?

我需要能夠採取現有的文件,並在上面放置一個圖像。我不想打開,閱讀,替換和刪除原件。原始更改和名稱「原始」僅表示此上下文中的源文件。有很多像這樣的PDF文件需要一個圖像。

謝謝你的幫助。

編輯 - 我非常感謝下面的代碼。它效果很好,但對我來說問題是現有的PDF上有數字簽名。當文檔像這樣複製(到result.pdf中)時,這些簽名雖然仍然存在,但它們具有不同的字節數或其他已損壞的項。這意味着這些簽名在顯示在result.pdf上時,在它們旁邊有一個圖標,表示「無效簽名」。

萬一它很重要我使用黃玉簽名板來創建我自己的簽名,這是它自己的安全。僅僅複製PDF不會破壞它,但下面的過程將會發生。

我想將圖像放在現有文檔上,而不是它的副本,在這種情況下很重要。

另外,通過簽名,我的意思是手寫的,而不是PIN碼。

再次感謝您。

編輯 - 可否使用PdfSignatureAppearance?

編輯 - 我似乎能夠做到這一點的:

VAR壓模=新PdfStamper(讀卡器,outputPdfStream, '1',真);

+0

這也可能是使用的: http://stackoverflow.com/questions/7115242/insert-an-image-in-pdf-using-itextsharp – 2012-04-03 21:44:14

回答

56

如果要更改現有PDF文件的內容並添加額外內容(如水印,pagenumbers和額外的標題),那麼PdfStamper是您需要的對象。我已經成功地使用下面的代碼中插入圖像到現有的pdf文件到給定的絕對位置:

using System.IO; 
using iTextSharp.text; 
using iTextSharp.text.pdf; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     using (Stream inputPdfStream = new FileStream("input.pdf", FileMode.Open, FileAccess.Read, FileShare.Read)) 
     using (Stream inputImageStream = new FileStream("some_image.jpg", FileMode.Open, FileAccess.Read, FileShare.Read)) 
     using (Stream outputPdfStream = new FileStream("result.pdf", FileMode.Create, FileAccess.Write, FileShare.None)) 
     { 
      var reader = new PdfReader(inputPdfStream); 
      var stamper = new PdfStamper(reader, outputPdfStream); 
      var pdfContentByte = stamper.GetOverContent(1); 

      Image image = Image.GetInstance(inputImageStream); 
      image.SetAbsolutePosition(100, 100); 
      pdfContentByte.AddImage(image); 
      stamper.Close(); 
     } 
    } 
} 

當您插入圖像,你必須調整它的可能性。您可以在iTextSharp文檔中查看transformation matrix

+0

有沒有辦法做到這一點的地方放置原始圖像而不是result.pdf?謝謝你的回答。 – johnny 2009-02-25 16:13:30

+0

原因是因爲文檔的數字簽名被進程損壞。 – johnny 2009-02-25 16:50:38

1

我可以通過簡單地添加以下行到我的簽名代碼添加圖像

var image = iTextSharp.text.Image.GetInstance(@"C:\Users\sushil\Documents\sansign.jpg"); 
appearance.Acro6Layers = true; 
appearance.SignatureGraphic = image; 
appearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.GRAPHIC_AND_DESCRIPTION; 

正如我解決我的問題用可見的數字簽名簽署文檔,現在我可以同時擁有圖像和數字簽名屬性

相關問題