2015-02-20 5 views
0

Я пытаюсь добавить изображение с помощью itextsharp, но не повезло есть тонна учебников для добавления изображения в новый pdf-документ, но нет и существующего pdf, так что .add menthod is не avaivlableitextsharp добавление изображения в существующий pdf

я Тринг используем метод Стампер записи, чтобы добавить изображение и я не получаю какие-либо ошибки, но изображение не появляется

PdfReader reader = new PdfReader(pdfIn); //get pdf 

     if (File.Exists(pdfOut)) File.Delete(pdfOut); //reset 
     FileStream fs = new FileStream(pdfOut, FileMode.Create); 

     PdfStamper stamper = new PdfStamper(reader, fs); 
     try 
     { 
      // Convert base64string to bytes array 
      Byte[] bytes = Convert.FromBase64String(base64decode); 
      iTextSharp.text.Image sigimage = iTextSharp.text.Image.GetInstance(bytes);// 
      sigimage.SetAbsolutePosition(10, 10); 
      sigimage.ScaleToFit(140f, 120f); 
      stamper.Writer.Add(sigimage); 
     }catch (DocumentException dex){//log exception here 
     }catch (IOException ioex){//log exception here 
     } 



     AcroFields fields = stamper.AcroFields; 
     //repeat for each pdf form fill field  
     fields.SetField("agencyName", name.Value); 


     stamper.FormFlattening = true; // set to true to lock pdf from being editable 
     stamper.Writer.CloseStream = true; 
     stamper.Close(); 
     reader.Close(); 
     fs.Close(); 

ответ

1

Я думаю, что вы пытаетесь следующее добавление его в байтах

 PdfReader reader = new PdfReader(pdfIn) 
     FileStream fs = new FileStream(pdfOut, FileMode.Create); 
     var stamper = new PdfStamper(reader, fs); 
     var pdfContentByte = stamper.GetOverContent(1); 
     iTextSharp.text.Image sigimage = iTextSharp.text.Image.GetInstance(bytes); 
     sigimage.SetAbsolutePosition(100, 100); 
     pdfContentByte.AddImage(sigimage); 
+0

Спасибо вам Благодарим Вас! это была проблема не с использованием pdfContentByte – Terry

+0

@Coldtold, можете ли вы объяснить, как вставить на новую страницу? (через штамп). Так что возьмите существующий pdf и вставьте туда изображение на новую страницу (специально для изображения) !? благодаря! – XTL

1

, используя следующий код, вы можете добавить изображение на каждую страницу в существующем файле pdf. (Я использую этот код для настольного приложения)

string FileLocation = @"C:\\test\\pdfFileName.pdf"; // file path of pdf file 
var uri = new Uri(@"pack://application:,,,/projrct_name;component/View/Icons/funnelGreen.png"); // use image from project/application folder (this image will insert to pdf) 
var resourceStream = Application.GetResourceStream(uri).Stream; 
PdfReader pdfReader = new PdfReader(FileLocation); 
PdfStamper stamp = new PdfStamper(pdfReader, new FileStream(FileLocation.Replace(".pdf", "(tempFile).pdf"), FileMode.Create));iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(System.Drawing.Image.FromStream(resourceStream), System.Drawing.Imaging.ImageFormat.Png); 
img.SetAbsolutePosition(125, 350); // set the position in the document where you want the watermark to appear. 
img.ScalePercent(35f);// not neccessory, use if you want to adjust image 
img.ScaleToFit(140f, 100f); // not neccessory, use if you want to adjust image 
PdfContentByte waterMark; 

for (int page = 1; page <= pdfReader.NumberOfPages; page++) // for loop will add image to each page. Based on the condition you can add image to single page also 
{ 
     waterMark = stamp.GetOverContent(page); 
    waterMark.AddImage(img); 
} 

stamp.FormFlattening = true; 
stamp.Close();// closing the pdfStamper, the order of closing must be important 
pdfReader.Close(); 

File.Delete(FileLocation); 
File.Move(FileLocation.Replace(".pdf", "(tempFile).pdf"), FileLocation); 
Смежные вопросы