2016-11-15 3 views
0

J'ai un texte dynamique, dont le nombre de lignes est inconnu. Ce nombre de lignes peut être compris entre 1 et 1000. Maintenant, je veux créer un document PDF, qui crée automatiquement une nouvelle page si un nombre spécifique de lignes est atteint.Multipage automatique avec texte multiligne

J'ai déjà trouvé que cela fonctionnerait probablement avec MigraDoc, mais je l'ai déjà testé et bien ... ça n'a pas fonctionné comme je l'ai testé.

 // You always need a MigraDoc document for rendering. 

     Document doc = new Document(); 

     MigraDoc.DocumentObjectModel.Section sec = doc.AddSection(); 

     // Add a single paragraph with some text and format information. 

     MigraDoc.DocumentObjectModel.Paragraph para = sec.AddParagraph();  
     para.Format.Alignment = ParagraphAlignment.Justify;  
     para.Format.Font.Name = "Times New Roman";  
     para.Format.Font.Size = 12;   
     para.Format.Font.Color = MigraDoc.DocumentObjectModel.Colors.DarkGray;  
     para.Format.Font.Color = MigraDoc.DocumentObjectModel.Colors.DarkGray;  
     para.AddText("Duisism odigna acipsum delesenisl ");   
     para.AddFormattedText("ullum in velenit", TextFormat.Bold);  
     para.AddText(" ipit iurero dolum zzriliquisis nit wis dolore vel et nonsequipit, velendigna " +   
     "auguercilit lor se dipisl duismod tatem zzrit at laore magna feummod oloborting ea con vel " + 
     "essit augiati onsequat luptat nos diatum vel ullum illummy nonsent \nA \n B\nV \nD \nE\nF\nG\nA \n B\nV \nD \nE\nF\nG\nA \n B\nV \nD \nE\nF\nG\nA \n B\nV \nD \nE\nF\nG\nA \n B\nV \nD \nE\nF\nGnit ipis et nonsequis " +   
     "niation utpat. Odolobor augait et non etueril landre min ut ulla feugiam commodo lortie ex " +   
     "essent augait el ing eumsan hendre feugait prat augiatem amconul laoreet. ≤≥≈≠");  
     para.Format.Borders.Distance = "5pt";   
     para.Format.Borders.Color = MigraDoc.DocumentObjectModel.Colors.Gold; 
     // Create a renderer and prepare (=layout) the document 
     MigraDoc.Rendering.DocumentRenderer docRenderer = new DocumentRenderer(doc);   
     docRenderer.PrepareDocument(); 

Ceci est le code que j'ai pris à partir d'un exemple MigraDoc, mais il ne fonctionne pas vraiment comme je le souhaite. Au lieu de créer une nouvelle page après le nombre approprié de lignes, il écrit juste plus loin de la frontière de la première page.

Pouvez-vous me donner un exemple où le texte multiligne crée une nouvelle page si le nombre de lignes approprié est atteint?

+0

Eh bien, le problème est que ce texte n'est qu'un exemple pour tester le texte long. Dans un exemple réel, il s'agirait simplement d'une variable au lieu du texte, mais elle pourrait aussi être aussi longue que ce texte. Dois-je séparer ce texte à chaque fois? Et si oui, comment puis-je faire cela pour varier les numéros de ligne? J'utilise Migradoc 1.32 – Benziner

Répondre

0

Pour créer un document PDF à partir de MigraDoc, utilisez la classe PdfDocumentRenderer et vous obtiendrez autant de pages que nécessaire.

Un échantillon peut être trouvé ici:
http://www.pdfsharp.net/wiki/HelloMigraDoc-sample.ashx

La classe DocumentRenderer que vous utilisez est pour des cas particuliers. Par conception, il ne peut pas gérer les sauts de page automatiquement.

+0

Eh bien c'est exactement ce qui ne m'aide pas. Les exemples sont trop volumineux et il y a trop de problèmes sur lesquels je dois me concentrer jusqu'à ce que ça fonctionne vraiment. Pouvez-vous me donner un très petit exemple avec un texte qui dépasse 2 pages pour que je puisse voir ce qui est vraiment nécessaire pour cela? J'ai déjà testé l'exemple de MigraDoc mais il arrête le débogage à différents points. Voilà pourquoi je demande un petit exemple – Benziner