2017-04-12 1 views
0

J'ajoute Big table (environ 4 à 5 pages en pdf) en PDF. J'utilise le code ci-dessous pour ajouter une grande table (environ 4 à 5 pages en pdf) en PDF. (Code de travail Fine)Itextsharp ajouter une bordure à toutes les pages pdf

private static String CreateTableDocument() 
    { 

     Document document = new Document(PageSize.A4, 0, 0, 50, 50); 


     PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("D:\\ttt.pdf", FileMode.Create)); 
     document.Open(); 

     PdfContentByte cb = writer.DirectContent; 
      // GetTable("1") is my custom method that will return big table that cover 4 to 5 pages -- no problem here - 
     document.Add(GetTable("1")); 

     document.Close(); 
     return ""; 
    } 

Le code ci-dessus génère le PDF avec succès, Maintenant, je souhaite ajouter une bordure à toutes les pages générées. Je recherche à travers et a constaté qu'il peut être possible d'utiliser PdfContentByte ou Rectangle mais il n'ajoute pas de frontière à toutes les pages ou peut-être qu'il me manque quelque chose.

Une autre option peut être possible en utilisant PageEvent mais j'utilise l'API WEB, il est donc impossible d'implémenter un écouteur d'événement.

MISE À JOUR: Ma définition de la classe est comme ci-dessous: (est-il possible de passer outre la page de l'événement (OnEndPage))

public class PDFTaskController : ApiController 
{ 
// here my all pdf task related methods i.e. CreateTableDocument() 
} 
+0

Chaque fois que vous voulez faire quelque chose * sur toutes les pages générées * d'une manière similaire, vous utilisez généralement des événements de page (plus précisément leur 'onEndPage') pour cela. Là, vous utilisez les méthodes 'PdfContentByte' comme vous l'avez lu. – mkl

+0

Oui. mais j'utilise l'API WEB, donc il n'est pas possible de surcharger onEndPage. –

+1

Pourquoi l'API WEB empêche-t-elle l'utilisation de 'onEndPage'? Cela semble absurde. Avez-vous déjà essayé d'utiliser les événements de la page? –

Répondre

0

Si vous ne pouvez pas avoir OnEndPage, vous pouvez essayer le code suivant:

//Add border to page 
    PdfContentByte content = writer.DirectContent; 
    Rectangle rectangle = new Rectangle(document.PageSize); 
    rectangle.Left += document.LeftMargin; 
    rectangle.Right -= document.RightMargin; 
    rectangle.Top -= document.TopMargin; 
    rectangle.Bottom += document.BottomMargin; 
    content.SetColorStroke(Color.BLACK); 
    content.Rectangle(rectangle.Left, rectangle.Bottom, rectangle.Width, rectangle.Height); 
    content.Stroke(); 

Selon this.

+0

Je ne pense pas qu'il va ajouter une bordure à toutes les pages. –

+0

L'avez vous essayé? Faites-moi savoir le résultat s'il vous plaît. –

+0

son ajout à la dernière page seulement –