Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# PdfPCell中的水平文本对齐_C#_Asp.net_.net_Vb.net_Itextsharp - Fatal编程技术网

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