文本内容自动排布
类似GUILayout
Chunk
最简单的文本对象
- 显示文本
- 设置使用的字体,不设置字体,默认使用英文字体
- 设置下划线
- 设置背景色
- 文档中只使用Chunk,文本内容不会自动换行
换行:Chunk.NEWLINE或者"\n"
csharp
doc.Add(new Chunk("Hello PDF!"));//使用英文字体 不显示中文
doc.Add(new Chunk("你好,PDF!", BoldFont));//显示中文
var chunk = new Chunk("你好,PDF!", BoldFont);
chunk.SetUnderline(0.5f, -1f);//设置下划线
chunk.SetBackground(BaseColor.RED);//设置背景色
doc.Add(chunk);//"你好,PDF!"使用BoldFont字体,背景红色,有下划线显示在pdf中
for (int i = 0; i < 12; i++)//文字重叠在一行
{
var chunk = new Chunk("你好,PDF!", BoldFont);
doc.Add(chunk);
}
文字重叠效果如下
Phrase
比Chunk高级的文本对象,由多个Chunk组成。
Phrase可以存放多个不同样式的Chunk 且可以自动换行
- 文本长度超出文档宽度自动到下一行显示。
- 如果文档中加入Phrase,之前添加的Chunk会自动换行。
- 可设置行高,单位pt磅
SetLeading(固定行高,倍数行高)
csharp
for (int i = 0; i < 12; i++)
{
var phrase = new Phrase();
var chunk = new Chunk("你好,PDF!", BoldFont);
phrase.Add(chunk);
doc.Add(phrase);
}
Paragraph
继承Phrase,可添加Chunk和Phrase
- 自动换行,且每一个对象都在一个新行开始
- 可在段落上方和下方设置间距 SpcingBefore,SpacingAfter,单位像素
- 设置缩进,FirstLineIndent首行缩进,IndentationLeft,IndentationRight
- 设置对齐方式,Alignment 0左对齐,1居中,2右对齐
文本设置在绝对位置
pdf文档页面的原点(0,0)在左下角,向上为+y,向右为+x。
文档的PageSize可获取页面的宽高数值
文字内容作为一个矩形,左下角作为位置点。
csharp
var writer = PdfWriter.GetInstance(doc, new FileStream(fileName, FileMode.Create));
doc.Open();
PdfContentByte cb = writer.DirectContent;
cb.BeginText();
cb.SetFontAndSize(BoldBaseFont, 12f);//设置字体和大小
cb.SetTextMatrix(doc.PageSize.Width / 2, doc.PageSize.Height / 2);//设置位置
cb.ShowText("你好,PDF!");//设置内容
cb.EndText();