Ajouter une nouvelle ligne dans iTextSharp
J'ai essayé de résoudre ce problème pour un certain temps maintenant, en vain. J'ai du texte dans iTextSharp je suis en train de mettre sur une nouvelle ligne. J'ai essayé d'utiliser le \n
caractère d'échappement, Environment.NewLine
et document.Add(new Phrase(Environment.NewLine))
sans succès. Donc, il y a une façon de le faire? Voici le morceau de mon code, je suis en train de le faire (notez les lignes commentées avec //Doesn't work
):
//Open the reader
PdfReader reader = new PdfReader(oldFile);
Rectangle size = reader.GetPageSizeWithRotation(1);
Document document = new Document(size);
//open the writer
FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write);
PdfWriter writer = PdfWriter.GetInstance(document, fs);
document.Open();
//Configure the content
PdfContentByte cb = writer.DirectContent;
//select the font properties
BaseFont bf = BaseFont.CreateFont("c:\\windows\\fonts\\calibri.ttf", BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
cb.SetColorFill(BaseColor.BLACK);
cb.SetFontAndSize(bf, 10);
//Write the text here
cb.BeginText();
text = "F\n";//Doesn’t work
document.Add(new Phrase(Environment.NewLine));//Doesn’t work
text += "o\n";
text += Environment.NewLine;//Doesn’t work
text += "o\n";
cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, text, 85, 311, 0);
cb.EndText();
//Create the new page
PdfImportedPage page = writer.GetImportedPage(reader, 1);
cb.AddTemplate(page, 0, 0);
//Close all streams
document.Close();
fs.Close();
writer.Close();
reader.Close();
Des suggestions?
Edit:
Ne fonctionne toujours pas avec document.Add(new Paragraph("\n"));
. Ai-je fait de mal?
cb.BeginText();
text = "F";
document.Add(new Paragraph("\n"));
text += "o";
document.Add(new Paragraph("\n"));
text += "o";
cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, text, 85, 311, 0);
cb.EndText();
source d'informationauteur Andrew De Forest
Vous devez vous connecter pour publier un commentaire.
Il y a deux principales façons de travailler avec le texte iTextSharp, soit par le biais de l'abstraction comme
Paragraph
etPhrase
ou manuellement par l'exécution de commandes à l'aide d'unPdfContentByte
. Les abstractions va gérer les choses comme les marges, les sauts de ligne et l'espacement tandis que le manuel de l'itinéraire est tout à vous. Vous ne pouvez pas vraiment le mélange des deux qui est ce que vous faites. Je recommande fortement d'utiliser les abstractions au lieu de le manuel de la route, sauf si vous avez un besoin spécifique pour un contrôle granulaire. Ci-dessous est un exemple montrant à la fois hors.Mais pour répondre à votre question précisément, les premières commandes PDF (que vous utilisez) dessiner du texte à certains
x,y
coordonnées de gauche à droite et ils ne prennent pas en charge le concept de "retours" ou "sauts de ligne". Pour ce faire, vous devez déplacer manuellement le texte actuel du curseur à une nouvelle ligne. Voir le code ci-dessous pour un exemple de cela.Essayer quelque chose comme cela:
document.Add(new Paragraph(" "));
fonctionne bien pour moi. Rappelez-vous, laParagraph
déclaration ajoute automatiquement un saut de ligne. Tout ce que vous avez à faire est de lui donner quelque chose à rendre. Dans ce cas, un espace fera l'amende juste.EDIT:
Avec l'ajout de l'espacement attriubtes, vous pouvez régler précisément la hauteur de la pause...
Je suis juste essayer cet outil et pour l'ajout de la nouvelle ligne j'ai juste ajouté '\r\n' et il a fait un travail.
Comme ce ci-dessous.
Ensuite ajouté l'Alinéa contentPtr à mon instance de Document.
Je sais que c'est un peu vieux, mais il est encore une autre façon. Voici un peu d'un rapport que j'ai utilisé.
Comme vous pouvez le voir, ce que j'ai fait a été de créer des morceaux. Cela vous permet d'utiliser d'utiliser "\n" à la préforme des sauts de ligne.