2010-10-11 17 views
7

J'essaie de faire démarrer mon document pdf à (0,0) mais il semble que l'objet document ait une marge supérieure par défaut que je ne peux pas mettre à 0. Y a-t-il un moyen de faire cela?Comment supprimer la marge supérieure par défaut d'un document pdf avec itextsharp?

Mon code se présente comme suit

 using (MemoryStream memoria = new MemoryStream()) 
     { 
      Document pdf = new Document(new Rectangle(288, 144)); 

      try 
      { 
       PdfWriter writer = PdfWriter.GetInstance(pdf, memoria); 

       pdf.Open(); 
       pdf.SetMargins(0, 0, 0, 0); 

       PdfPTable tPrincipal = new PdfPTable(2);    
       tPrincipal .WidthPercentage = 100;   
       tPrincipal .DefaultCell.Border = 0; 
       tPrincipal .TotalWidth = 288f; 
       tPrincipal .LockedWidth = true; 

....

Je ne peux pas simplement obtenir de fixer la marge supérieure à 0. Il ne fait pas que se soucier de mon établissement à (0, 0,0,0) et laisse une marge supérieure (environ 50f).

Répondre

14

Vous devez définir vos marges dans votre constructeur de document, comme celui-ci:

Document pdf = new Document(new Rectangle(288f, 144f), 0, 0, 0, 0); 

Vous ne aurez pas besoin d'utiliser la méthode Document.SetMargins(). Je crois que vous utiliseriez SetMargins() après avoir créé une nouvelle page en appelant Document.NewPage().

+1

Merci Jay qui a travaillé, mais j'ai dû inclure le "f" après tous les ceros. Document pdf = nouveau document (nouveau rectangle (288f, 144f), 0f, 0f, 0f, 0f); – Lilian

+0

@Lilian, bon point qu'ils attendent des flotteurs. –

+1

et il n'y a pas d'erreur lorsque vous utilisez 0, il met simplement dans les marges par défaut. 0f Tout le chemin! – TChadwick

1

Option 1:

Document doc = new Document(); 
doc.setMargins(0 , 0 , 0 , 0); 

Option 2:

Document pdf = new Document(new Rectangle(595 , 842), 0, 0, 0, 0); 

Lorsque, 595x842 est du papier de format A4.