2010-11-04 6 views
1

Le code suivant est très utile pour mettre une seule page dans un fichier pdf. Cela ne fonctionne pas pour les pages suivantes. Si le flux est un fichier pdf existant, l'image est remplacée. Comment obtenir NewPage() pour créer réellement une nouvelle page et ajouter l'image à la fin.Ajout d'une image à un fichier PDF EXISTANT à l'aide d'itextsharp

 using (Stream ms = GetStream()) { 

      Document doc = new Document(PageSize.A4); 
      var writer = PdfWriter.GetInstance(doc, ms); 

      doc.Open(); 
      if (!doc.NewPage()) 
       throw new InvalidOperationException("NewPage failed."); 

      PDFImage jpg = PDFImage.GetInstance(image, ImageFormat.Jpeg); 
      jpg.Alignment = Element.ALIGN_CENTER; 
      jpg.ScaleToFit(PageSize.A4.Width, PageSize.A4.Height); 
      doc.Add(jpg); 

      doc.Close(); 
     } 

Répondre

0

appel doc.NewPage() ne fait rien quand il n'y a rien sur la page en cours. Il y a au moins 3 options:

1) Ajouter quelque chose d'invisible à la page en cours. Un paragraphe vide, un espace blanc pour le PdfContentByte, peu importe. 2) Dites à votre document PDF "non, ce n'est vraiment pas vide, prenez ma parole": PdfDocument.PageEmpty =false; 3) Ne pas lancer lorsque NewPage renvoie faux. C'est parfaitement acceptable dans les circonstances.

J'irais aveC# 3 personnellement.

Questions connexes