2009-07-31 10 views
0

J'essaie d'ajouter un bloc de texte à un modèle PDF existant. Je veux être en mesure de définir la marge de gauche et la marge de droite, mais la quantité de texte est indéterminée, j'ai donc besoin de la boîte pour développer par rapport au texte d'entrée.Ajouter une zone de texte illimitée à un document PDF

J'ai réussi à positionner la zone de texte sur le modèle et à insérer du texte, mais pour ce faire, j'ai besoin de définir explicitement l'emplacement de la ligne de texte dans la zone de texte.

Voici le code que j'ai jusqu'à présent (pdfStamper est prédéfini):

BaseFont bf = BaseFont.CreateFont(BaseFont.COURIER, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); 
Font font = new Font(bf, 11, Font.NORMAL); 
Phrase unicodes = new Phrase(reports.StringText, font); 
PdfContentByte over; 
over = pdfstamper.GetOverContent(1); 
ColumnText ct = new ColumnText(over); 
ct.SetSimpleColumn(unicodes, 19, **80**, 575, 335, 10, Element.ALIGN_LEFT); 
ct.Go(); 

Répondre

0

OK, je l'ai eu un aller à d'autres solutions (qui ne fonctionnent pas). Les voici:

PdfPTable table = new PdfPTable(1); 
string text = "blab balba b balbala "; 
string finalText = "TestTitle1\r\n\r\n"; 

for (int i = 0; i < 200; ++i) 
{ 
    finalText += text; 
} 
table.AddCell(finalText); 
table.TotalWidth = 300; 
table.WriteSelectedRows(0, -1, 20, 325, pdfstamper.GetUnderContent(1)); 

Cette sortie met une table à l'endroit désiré, avec la largeur désirée. Mais s'il y a trop de texte pour tenir sur cette page, je veux qu'elle s'étende à la suivante - ce qui n'est pas le cas. J'ai essayé de passer WriteSelectedRows un tableau facultatif de canevas (pdfstamper.GetUnderContent(1) et pdfstamper.GetUnderContent(2)), mais ceci lance juste une exception Index was outside the bounds of the array - mais même si cela a fonctionné, je ne sais pas si je ferais ce que je veux.

Ou il y a celui-ci:

PdfContentByte over; 
over = pdfstamper.GetOverContent(1); 
over.BeginText(); 
over.SetTextMatrix(20, 300); 
over.ShowText(report.AutonomyText); 
over.EndText(); 

Mais le texte va juste à côté du côté de la page.

Questions connexes