iTextsharp、PdfPCell.VerticalAlignment 和 PdfPCell.HorizontalAlignment
我试图弄清楚如何让我的文本在 PdfPCell 中显示在中间。我尝试了很多不同的选择,例如:
myCell.VerticalAlignment = Element.ALIGN_MIDDLE; myCell.VerticalAlignment = PdfPCell.ALIGN_MIDDLE; myCell.VerticalAlignment = Rectangle.ALIGN_MIDDLE;
这些都不适合我。 VerticalAlignment 需要一个 int,所以我尝试创建一个循环,看看是否能找到正确的数字,但所有内容都左下对齐。
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();
Im trying to figure out how to get my text inside a PdfPCell to show in the middle. I have tried many different options, like:
myCell.VerticalAlignment = Element.ALIGN_MIDDLE; myCell.VerticalAlignment = PdfPCell.ALIGN_MIDDLE; myCell.VerticalAlignment = Rectangle.ALIGN_MIDDLE;
None of that works for me. VerticalAlignment takes an int, so I tried to make a loop, to see if i could find the right number, but everything just get left bottom align..
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();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我认为您遇到的基本问题是您将文本添加到 iTextSharp
Paragraph
对象,然后尝试使用包含它的PdfPCell
对象设置该文本的对齐方式。我不确定PdfPCell.VerticalAlignment
属性是否仅适用于PdfPCell
的文本,或者是否对齐Paragraph
对象内的 < code>PdfPCell 不会对您在测试中看到的任何影响。您还将
myCell.HorizontalAlignment
和myCell.VerticalAlignment
设置为for
循环中的索引值。我认为您打算使用 1 代替i
。无论如何,设置 PdfPCell 的
HorizontalAlignment
和VerticalAlignment
属性确实有效。下面是一个演示这一点的小方法。我根据你想要做的事情非常宽松地写了它;如果它足够接近您想要做的事情,也许您可以使用它作为您项目的起点。I think the basic problem you're having is that you're adding text to iTextSharp
Paragraph
objects and then attempting to set this text's alignment using thePdfPCell
object that contains it. I'm not sure if thePdfPCell.VerticalAlignment
property is only for aPdfPCell
's text, or if aligning theParagraph
object inside thePdfPCell
doesn't have any affect you can see in your test.You're also setting
myCell.HorizontalAlignment
andmyCell.VerticalAlignment
to the index value in yourfor
loop. I think you meant to use 1 instread ofi
.Anyway, setting a PdfPCell's
HorizontalAlignment
andVerticalAlignment
properties do work though. Below is a small method that demonstrates this. I wrote it very loosely based on what you were trying to do; if it's close enough to what you're trying to do perhaps you can use this as a starting point in your project.当我添加以下内容时,Jay Riggs 解决方案也开始适用于垂直对齐:
cell.UseAscender = true;
http://www.afterlogic.com/mailbee-net/docs-itextsharp/html/0602b79e-ea9c-0c7d-c4b2-bc4b5f976f15。嗯
Jay Riggs solution started to work also for vertical alignment when I added:
cell.UseAscender = true;
http://www.afterlogic.com/mailbee-net/docs-itextsharp/html/0602b79e-ea9c-0c7d-c4b2-bc4b5f976f15.htm
我尝试给出直接整数和这里提到的其他解决方案。但对我来说没有任何作用。这两者的结合在构图方法中对我很有用。
I tried giving direct integers and other solutions mentioned here. But nothing worked for me. A combination of this worked for me in Composition method.
请使用给定的代码,我希望我对那些想要在单元格中以中间和顶部对齐方式打印文本的人最有帮助
protected void Page_Load(对象发送者,EventArgs e)
{
获取表();
}
Please use given code, i hope i will be most helpful for those who want to print a text in a cell in middle and top alignment
protected void Page_Load(object sender, EventArgs e)
{
gettable();
}