2011-12-10 87 views
10

Hola: ¿El método "setMargins" en IText funciona de manera convencional?iText: ¿Funcionan los márgenes?

He intentado el siguiente

 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(); 

Sin embargo, me da la misma salida que mi entrada. Me pregunto si existe un truco especial para que el método setMargins funcione normalmente.

Respuesta

16

método sólo funciona SetMargins antes

document.open(); 
+0

Bueno, eso funcionó .... gracias – Saqib

1

Los márgenes se pueden cambiar después open(), sin embargo, los cambios sólo tienen efecto después de newPage().

Agregar una PdfImportedPage como "imagen" respeta los márgenes del documento.

Ejemplo:

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

Puede cambiar márgenes izquierdo y superior en el nuevo documento PDF al sumar desplazamiento llamando

cb.addTemplate(page, leftMarginOffset,topMarginOffset); 

Los números positivos reducirá los márgenes y los números negativos aumentarlos.