C# PdfPCell中的水平文本对齐
我使用这个代码来水平对齐C# PdfPCell中的水平文本对齐,c#,asp.net,.net,vb.net,itextsharp,C#,Asp.net,.net,Vb.net,Itextsharp,我使用这个代码来水平对齐 cell = New PdfPCell(); p = New Phrase("value"); cell.AddElement(p); cell.HorizontalAlignment = PdfPCell.ALIGN_CENTER; //Tried with Element.Align_Center Also. Tried Adding this line before adding element also. table.AddCell(cell); 它不起作用
cell = New PdfPCell();
p = New Phrase("value");
cell.AddElement(p);
cell.HorizontalAlignment = PdfPCell.ALIGN_CENTER; //Tried with Element.Align_Center Also. Tried Adding this line before adding element also.
table.AddCell(cell);
它不起作用了
我正在创建一个包含5列的表,并在运行时使用上述代码在for循环中动态添加单元格。我希望所有单元格内容都居中。试试这个
cell = New PdfPCell();
p = New Phrase("value");
cell.AddElement(p);
cell.HorizontalAlignment = Element.ALIGN_CENTER; //Tried with Element.Align_Center Also. Tried Adding this line before adding element also.
table.AddCell(cell);
cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
我知道这是一个老问题,但正确的解决方法是使用
cell.HorizontalAlignment=1代码>
这是一个不错的试试这个
cell = New PdfPCell();
p = New Phrase("value");
cell.AddElement(p);
cell.HorizontalAlignment = Element.ALIGN_CENTER; //Tried with Element.Align_Center Also. Tried Adding this line before adding element also.
table.AddCell(cell);
cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
根据注释,正确的答案(我刚刚在本地测试过)是创建一个段落元素,并将对齐指令添加到段落中
演示这一点的工作代码块是:
Font qFont = FontFactory.GetFont(FontFactory.HELVETICA_BOLDOBLIQUE, 10);
List<float> widths = new List<float>();
for(int i = 0; i < qs.Selected.Items.Count; i++) {
widths.Add((pageRectangle.Width - 250)/ qs.Selected.Items.Count);
}
PdfPTable table = new PdfPTable(qs.Selected.Items.Count);
table.HorizontalAlignment = Element.ALIGN_CENTER;
table.SetTotalWidth(widths.ToArray());
foreach(System.Web.UI.WebControls.ListItem answer in qs.Selected.Items) {
cell = new PdfPCell();
cell.Border = Rectangle.NO_BORDER;
/******************** RELEVANT CODE STARTS HERE ***************************/
Paragraph p = new Paragraph(answer.Text, aFont);
p.Alignment = Element.ALIGN_CENTER;
cell.AddElement(p);
table.AddCell(cell);
/******************** RELEVANT CODE ENDS HERE ***************************/
}
Font qFont=FontFactory.GetFont(FontFactory.HELVETICA_,10);
列表宽度=新列表();
对于(int i=0;i
这应该归功于用户布鲁诺·洛瓦吉(Bruno Lowagie),但似乎有一些奇怪的事情正在发生,对正确答案的否决票和随后删除的投诉
如果在正确的时间,在正确的地点发布了明确的答案,我将吃掉所有的反对票
有些东西比互联网点更重要 我尝试了以上所有的解决方案,但没有一个奏效。
然后我尝试了这个方法,找到了正确的解决方案
PdfPCell c2 = new PdfPCell(new iTextSharp.text.Phrase("Text")) { HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER };
table.AddCell(c2);
我知道OP中不需要它,但是如果用分隔符分隔,也可以将几个单词居中放置\n。此外,还可以使用Element.ALIGN_MIDDLE垂直居中
所有这些代码都是:
PdfPCell c2 = new PdfPCell(new iTextSharp.text.Phrase("AAAAAAAAA\nBBBBBB")) { HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER, VerticalAlignment = iTextSharp.text.Element.ALIGN_MIDDLE };
table.AddCell(c2);
结果是:
希望有帮助可以为所有表格单元格设置对齐方式,例如:
table.DefaultCell.HorizontalAlignment = Element.ALIGN_JUSTIFIED;
如果某些表格单元格需要其他对齐方式,可以单独指定-
Phrase phraseConstant = new Phrase("Name :", font);
PdfPCell cell = new PdfPCell(phraseConstant);
cell.HorizontalAlignment = 0;
table.AddCell(phraseConstant);
最后
更改此项:
cell = New PdfPCell();
p = New Phrase("value");
cell.AddElement(p);
cell.HorizontalAlignment = PdfPCell.ALIGN_CENTER;
table.AddCell(cell);
为此:
PdfPCell cell = new PdfPCell(new Phrase("value"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
看起来相似但结果不同我不知道为什么见Bruno的回答:基本上你需要使用段落,并将水平对齐设置为元素。居中对齐。Bruno Lowagie删除的答案也解决了我的问题。在这里:。它正在工作。。。见评论。。我累了。。现在我通过给新创建的短语分配cells短语属性来解决我的问题。有人否决了正确答案。在您的情况下,我理解,因为您使用1
而不是元素。ALIGN_CENTER
,并且您引用了一个外部示例,但没有显示更为实质性的代码片段,但我不理解为什么我的答案被否决,也不理解为什么不被接受。我看不出您的任何意见,你解释为什么有人会对我的答案投反对票,这与问题无关。此外,我认为答案的目的是为问题提供工作解决方案,我确实这样做了。我真的不在乎我想要帮助的分数或选票。我用了这个方法,它奏效了。尽管每次你想要声明一些东西,你都应该按照相关代码从这里开始的方式来做
用短语初始化单元格,然后设置对齐方式,完成技巧+1