J'essaie de comprendre comment insérer mon texte dans une PdfPCell au milieu. J'ai essayé beaucoup d'options différentes, comme:
myCell.VerticalAlignment = Element.ALIGN_MIDDLE; myCell.VerticalAlignment = PdfPCell.ALIGN_MIDDLE; myCell.VerticalAlignment = Rectangle.ALIGN_MIDDLE;
Rien de tout cela ne fonctionne pour moi. VerticalAlignment prend un int, alors j'ai essayé de faire une boucle, pour voir si je pouvais trouver le bon nombre, mais tout ce qui reste à gauche est aligné en bas ..
Document myDocument = new Document(PageSize.A4);
PdfWriter myPdfWriter = PdfWriter.GetInstance(myDocument, new FileStream(strPDFFilePath, FileMode.Create));
myDocument.Open();
myDocument.NewPage();
PdfContentByte myPdfContentByte = myPdfWriter.DirectContent;
PdfPCell myCell;
Paragraph myParagraph;
PdfPTable myTable = new PdfPTable(4);
myTable.WidthPercentage = 100;
myTable.SetWidths(new int[4] { 25, 25, 25, 25 });
myTable.DefaultCell.BorderWidth = 1;
myTable.DefaultCell.BorderColor = BaseColor.RED;
for (int i = -100; i < 100; i++)
{
myParagraph = new Paragraph(String.Format("Alignment: {0}", i));
myParagraph.Font.SetFamily("Verdana");
myParagraph.Font.SetColor(72, 72, 72);
myParagraph.Font.Size = 11;
myCell = new PdfPCell();
myCell.AddElement(myParagraph);
myCell.HorizontalAlignment = i;
myCell.VerticalAlignment = i;
myTable.AddCell(myCell);
}
myDocument.Add(myTable);
myDocument.Add(new Chunk(String.Empty));
myDocument.Close();
Je pense que le problème fondamental que vous rencontrez est que vous ajoutez du texte aux objets iTextSharp Paragraph
, puis que vous essayez de définir l'alignement de ce texte à l'aide de l'objet PdfPCell
qui le contient. Je ne sais pas si la propriété PdfPCell.VerticalAlignment
concerne uniquement le texte d'une PdfPCell
, ou si l'alignement de l'objet Paragraph
à l'intérieur de la PdfPCell
n'a aucun effet visible dans votre test.
Vous définissez également myCell.HorizontalAlignment
et myCell.VerticalAlignment
sur la valeur d'index de votre boucle for
. Je pense que vous vouliez utiliser 1 mot de i
.
Quoi qu'il en soit, définir les propriétés HorizontalAlignment
et VerticalAlignment
d'un PdfPCell fonctionne bien. Vous trouverez ci-dessous une petite méthode qui le démontre. Je l'ai écrit très vaguement en fonction de ce que vous tentiez de faire. si cela est assez proche de ce que vous essayez de faire, vous pouvez peut-être utiliser cela comme point de départ de votre projet.
private void TestTableCreation() {
using (FileStream fs = new FileStream("TableTest.pdf", FileMode.Create)) {
Document doc = new Document(PageSize.A4);
PdfWriter.GetInstance(doc, fs);
doc.Open();
PdfPTable table = new PdfPTable(4);
for (int i = -100; i < 100; i++) {
PdfPCell cell = new PdfPCell(new Phrase(String.Format("Alignment: {0}", i)));
// Give our rows some height so we can see test vertical alignment.
cell.FixedHeight = 30.0f;
// ** Try it **
//cell.HorizontalAlignment = Element.ALIGN_LEFT;
//cell.HorizontalAlignment = Element.ALIGN_CENTER;
cell.HorizontalAlignment = Element.ALIGN_RIGHT;
cell.VerticalAlignment = Element.ALIGN_TOP;
//cell.VerticalAlignment = Element.ALIGN_MIDDLE;
//cell.VerticalAlignment = Element.ALIGN_BOTTOM;
table.AddCell(cell);
}
doc.Add(table);
doc.Close();
}
}
La solution de Jay Riggs a également commencé à fonctionner pour l'alignement vertical lorsque j'ai ajouté:
cell.UseAscender = true;
http://www.afterlogic.com/mailbee-net/docs-itextsharp/html/0602b79e-ea9c-0c7d-c4b2-bc4b5f976f15.htm
J'ai essayé de donner des entiers directs et d'autres solutions mentionnées ici. Mais rien n'a fonctionné pour moi. Une combinaison de ceci a fonctionné pour moi dans la méthode de composition.
cell.HorizontalAlignment = Element.ALIGN_CENTER;
cell.VerticalAlignment = Element.ALIGN_MIDDLE;
S'il vous plaît utiliser le code donné, j'espère que je serai plus utile pour ceux qui veulent imprimer un texte dans une cellule dans l'alignement moyen et supérieur Protected void Page_Load (expéditeur d'objet, EventArgs e) { gettable (); }
void gettable()
{
using (FileStream fs = new FileStream(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Vedic-Chart-Life-Report.pdf"), FileMode.Create, FileAccess.Write, FileShare.Read))
{
Document doc = new Document(PageSize.LETTER);
PdfWriter writer = PdfWriter.GetInstance(doc, fs);
doc.Open();
doc.NewPage();
BaseFont bf = BaseFont.CreateFont("C:/WINDOWS/Fonts/krdv010.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font f = new Font(bf, 16, Font.BOLD);
PdfContentByte cb = writer.DirectContent;
cb.MoveTo(0, doc.PageSize.Height - 20);
cb.LineTo(doc.PageSize.Width, doc.PageSize.Height - 20);
cb.Stroke();
cb.ClosePathStroke();
PdfPTable table = new PdfPTable(1);
PdfPCell cell = new PdfPCell(new Phrase("eaxynks'k foospu", f));
// Give our rows some height so we can see test vertical alignment.
cell.FixedHeight = 15f;
cell.HorizontalAlignment = 1;
cell.VerticalAlignment = Element.ALIGN_TOP;
table.AddCell(cell);
doc.Add(table);
//cb.RoundRectangle(10f, 550f, 592f, 200f, 20f);
//cb.Stroke();
//doc.Add(new Phrase("eaxynks'k foospu", f));
doc.Close();
}
}