2017-10-12 6 views
1

Comment créer un document avec des tailles de page inégales dans iText 7?Comment créer un document avec des tailles de page inégales dans iText 7

Est-ce possible dans iText7? Dans iText5, j'ai utilisé document.setPageSize() et document.newPage().

+0

Oui. plusieurs approches existent en changeant la taille de la page au niveau 'Document'. La meilleure approche à prendre dépendra de votre utilisation. Si vous avez besoin d'une nouvelle page après l'ajout de certains contenus, vous pouvez définir la taille de la page et ajouter un élément de saut de page pour forcer une nouvelle page, si vous avez besoin de quelque chose comme une page paysage , etc. –

+0

Oui, je souhaite ajouter une nouvelle page (différente du type de page) après l'ajout de certains contenus. Comment définir la taille de la page et ajouter un élément de saut de page pour forcer une nouvelle page? J'ai besoin d'aide. Merci pour votre commentaire. – Franken

Répondre

1

Si vous ajoutez du contenu à travers l'API de haut niveau (Document.add() et son acabit), et la page de taille désirée est directement liée à un contenu spécifique, modifier la valeur par défaut la taille de la page à PdfDocument.setDefaultPageSize est probablement le moyen le plus propre et le plus facile d'y parvenir, comme ceci:

public void createPdf(String dest) throws IOException, FileNotFoundException{ 
    PdfWriter writer = new PdfWriter(dest); 
    PdfDocument pdfDoc = new PdfDocument(writer); 
    Document doc = new Document(pdfDoc); 
    pdfDoc.setDefaultPageSize(PageSize.A5);//All pages will be added using this page size 
    String paragraphOneText = "I have seen the face of sorrow\n" + 
      "She looks away in the distance\n" + 
      "Across all these bridges\n" + 
      "From whence I came\n" + 
      "And those spans, trussed and arched\n" + 
      "Hold up our lives as we go back again\n" + 
      "To how we thought then\n" + 
      "To how we thought we thought then"; 
    String paragraphTwoText = "I have seen sorrow's face,\n" + 
      "But she is ever turned away\n" + 
      "And her words leave me blind\n" + 
      "Her eyes make me mute\n" + 
      "I do not understand what she says to me\n" + 
      "I do not know if to obey\n" + 
      "Or attempt a flood of tears"; 
    String paragraphThreeText = "I have seen her face\n" + 
      "She does not speak\n" + 
      "She does not weep\n" + 
      "She does not know me\n" + 
      "For I am but a stone fitted in place\n" + 
      "On the bridge where she walks"; 
    String attribution = "--Toc the Younger"; 

    Paragraph p = new Paragraph(paragraphOneText); 
    //Current default pagesize is A5, so any new pages will be created as A5 
    doc.add(p); 
    //Changing default pagesize will affect any new pages that are created 
    pdfDoc.setDefaultPageSize(PageSize.A5.rotate()); 
    //Adding an areabreak of type NEXT_PAGE will force the creation of a new page 
    doc.add(new AreaBreak(AreaBreakType.NEXT_PAGE)); 
    p = new Paragraph(paragraphTwoText); 
    doc.add(p); 
    pdfDoc.setDefaultPageSize(PageSize.A5); 
    doc.add(new AreaBreak(AreaBreakType.NEXT_PAGE)); 
    p = new Paragraph(paragraphThreeText); 
    doc.add(p); 
    p= new Paragraph(attribution); 
    doc.add(p); 
    doc.close(); 
} 
0

Peut-être que cela pourrait fonctionner

Rectangle one = new Rectangle(70,140); 
document.setPageSize(one); 
+0

Merci pour votre réponse, mais la classe Document dans iText7 n'a pas d'API setPageSize(). – Franken