【发布时间】:2015-02-16 11:02:48
【问题描述】:
使用 iTextSharp 我必须在给定的矩形中填充高度和宽度的文本。文本可以换行,我必须找到正确的字体大小才能填充矩形。
包装文本不是问题我有一个递归函数,它返回所有可能的包装配置的数组。
这不是 gdi+ 的问题,但是使用 iTextSharp 我在文本换行后无法找到高度(即包含“\n”)
有什么帮助吗?
我发现这篇文章非常有用,它从另一个角度解决了我的问题:
Centered, multiline text using iTextSharp ColumnText
添加:示例代码:
string text = "Lorem Ipsum è un testo segnaposto utilizzato nel settore della tipografia e della stampa. Lorem Ipsum è considerato il testo segnaposto standard sin dal sedicesimo secolo, quando un anonimo tipografo prese una cassetta di caratteri e li assemblò per preparare un testo campione. È sopravvissuto non solo a più di cinque secoli, ma anche al passaggio alla videoimpaginazione, pervenendoci sostanzialmente inalterato. Fu reso popolare, negli anni ’60, con la diffusione dei fogli di caratteri trasferibili “Letraset”, che contenevano passaggi del Lorem Ipsum, e più recentemente da software di impaginazione come Aldus PageMaker, che includeva versioni del Lorem Ipsum.";
Rectangle rect3 = new Rectangle(1000f, 0f, 2000f, 1000f);
// Determine correct font size
Font font3 = new Font(FontFactory.GetFont(FontFactory.HELVETICA, 1000, Font.NORMAL, Color.BLACK));
float fontSize2 = FitText(font3, text, rect3, 1000, PdfWriter.RUN_DIRECTION_DEFAULT);
PdfContentByte contentByte = writer.DirectContent;
Chunk chunk = new Chunk(text, new Font(FontFactory.GetFont(FontFactory.HELVETICA, fontSize2, Font.NORMAL, Color.BLACK)));
Phrase text33 = new Phrase(chunk);
ColumnText columnText4 = new ColumnText(cb);
columnText4.SetSimpleColumn(rect3.GetLeft(0), 0,rect3.GetRight(0), rect3.GetTop(0));
columnText4.SetText(text33);
cb.SaveState();
cb.SetColorStroke(Color.RED);
cb.Rectangle(rect3.GetLeft(0), rect3.GetBottom(0), rect3.GetRight(0), rect3.GetTop(0));
cb.Stroke();
cb.RestoreState();
columnText4.Alignment = Element.ALIGN_LEFT;
columnText4.Go();
doc.Close();
此外,即使使用 columnText4.SetSimpleColumn,我也会遇到麻烦,它会渲染到与我的 rect3 不同的 矩形...
EDIT2:使用这个似乎可以解决,但我真的不明白为什么我必须强制将 Leadong 作为字体大小: columnText4.SetSimpleColumn(rect3.Left, rect3.Bottom, rect3.Right, rect3.Top, fontSize2, Element.ALIGN_LEFT);
【问题讨论】:
标签: text itextsharp word-wrap