2011-12-10 15 views
10

Ciao: il metodo "setMargins" in IText funziona in modo convenzionale?iText: I margini impostati funzionano?

Ho provato quanto segue

 System.out.println(f.exists()); 
     Document document = new Document(PageSize.A4,36,36,36,36); 
     PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(f.getAbsolutePath()+"0.pdf")); 
     document.open(); 

     //reader 
     PdfReader reader = new PdfReader(new FileInputStream(f)); 
     PdfContentByte cb = writer.getDirectContent(); 

     for(int i = 1 ; i < reader.getNumberOfPages()+1 ; i++) 
     { 
      System.out.println(f.getName()+" "+i); 
      PdfImportedPage page = writer.getImportedPage(reader, i); 
      document.newPage(); 
      cb.addTemplate(page,0,0); 
     } 


     // Add your new data/text here 
     // for example... 
     //document.add(new Paragraph("my timestamp")); 
     document.close(); 

Tuttavia, ottengo lo stesso risultato come il mio ingresso. Mi chiedo se ci sia un trucco speciale per far funzionare normalmente il metodo setMargins.

risposta

16

metodo SetMargins funziona solo prima

document.open(); 
+0

Bene, questo ha funzionato .... grazie – Saqib

1

margini possono essere cambiati dopo open(), tuttavia, le modifiche hanno effetto solo dopo newPage().

L'aggiunta di una PdfImportedPage come "immagine" rende onore ai margini del documento.

Esempio:

PdfImportedPage page = writer.getImportedPage(reader, i); 
document.add(Image.getInstance(page)); 
1

È possibile modificare le impostazioni relative a sinistra e migliori margini nel nuovo documento pdf con l'aggiunta di compensato chiamando

cb.addTemplate(page, leftMarginOffset,topMarginOffset); 

I numeri positivi ridurrà i margini e numeri negativi li aumenterà.