c# - iText 7 - 居中对齐文本和段落
问题描述
我正在尝试将文本块居中对齐,但结果不一致。这是我的代码的粗略想法:
baseCanvas.ShowTextAligned("Header 1", 555, 839, TextAlignment.CENTER, 0);
baseCanvas.ShowTextAligned("Test test test ...", 240, 809, TextAlignment.CENTER, 0);
这是PDF输出:
我已经检查了 iText 文档,但是有没有办法做到这一点而不必创建表格和单元格?
解决方案
当你这样做时:
baseCanvas.ShowTextAligned("Some text", x, y, TextAlignment.CENTER, 0);
然后你希望坐标(x, y)
与文本的中间重合"some text"
。
在您的代码片段中,您将一些文本以坐标为中心,将一些文本以解释差异(555, 839)
的坐标为中心。(40, 809)
既然您使用的是 iText 7,为什么不利用现在可以轻松地将Paragraph
对象定位在绝对位置的事实呢?.NET的iText 7 快速入门教程已经介绍了一些基本的构建块,但构建块教程更深入。
看一下第 2 章的第一个例子,并把它改成这样:
PdfPage page = pdf.AddNewPage();
PdfCanvas pdfCanvas = new PdfCanvas(page);
Rectangle rectangle = new Rectangle(36, 650, 100, 100);
Canvas canvas = new Canvas(pdfCanvas, pdf, rectangle);
PdfFont font = PdfFontFactory.createFont(FontConstants.TIMES_ROMAN);
PdfFont bold = PdfFontFactory.createFont(FontConstants.TIMES_BOLD);
Text title =
new Text("The Strange Case of Dr. Jekyll and Mr. Hyde").SetFont(bold);
Text author = new Text("Robert Louis Stevenson").SetFont(font);
Paragraph p = new Paragraph().Add(title).Add(" by ").Add(author);
p.SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER);
canvas.Add(p);
canvas.Close();
这应该在矩形内添加文本(36, 650, 100, 100)
并将所有内容居中。
推荐阅读
- amazon-web-services - 我可以使用单独的云存储并将其连接到 mapbox 吗?
- ios - Firebase:保留在 observeSingleEvent 中分配的值
- c - c:具有 nanopb (protobuf) 的重复字段的默认值
- android - 未解决的参考:在 gradle 中添加必要的工具并更新到 kotlin 最新版本后进行 Parcelize
- c++ - 示例 Shell 应用程序显示的 V8“分段错误(核心转储)”错误
- java - REST API:URL 中的 JSON 对象以获取自定义 JSON
- akka - 类型为 2.6.3 的 akka 的日志记录问题
- python - 为什么我需要一个“返回”和一个新变量?
- ios - Fabric crashlytics 显示错误:致命异常:NSInternalInconsistencyException。在 IOS 应用程序中
- r - 如何从因子存储中提取特定值作为数据框中的列值