java - 如何使用 itext ColumnText 添加 pdf 标题的下划线?我将线的宽度设置为 100%,但它不起作用
问题描述
//set the width to 90%, but the generated pdf shows 100%. Please look at the picture below
LineSeparator underLine = new LineSeparator(1, 90f, null, Element.ALIGN_CENTER, 0);
Phrase phrase1 = new Phrase();
phrase1.add(underLine);
ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, phrase1, 0, pageSize.getHeight() - 75, 0);
无论我将宽度设置为 90% 还是 100%,它都显示为 100%。请看下图
解决方案
当您想在绝对位置上画线时,最好直接绘制它:
PdfContentByte canvas = writer.getDirectContent();
canvas.setColorStroke(BaseColor.BLACK);
canvas.moveTo(36, pageSize.getHeight() - 75);
canvas.lineTo(pageSize.getWidth() - 36, pageSize.getHeight() - 75);
canvas.closePathStroke();
在您的示例中,问题在于使用LineSeparator
withPhrase
方法组合,ColumnText.showTextAligned()
该方法用于将文本定位在绝对位置上。当使用相对定位时document.add(underLine)
,宽度起作用。
推荐阅读
- c# - Newtonsoft.Json.JsonSerializationException : 无法反序列化当前 JSON 对象
- python - 这个表达式是什么以及它是如何在 python 中定义的,因为我不能将它与列表一起使用
- php - 需要修改Moodle的上传文件功能
- php - Apache PHP 只触发一个多线程进程
- c# - 为什么我无法安装我在 dotnet 中创建的项目模板?
- php - 将 base64 传递给 PHP 中的 URL 以使用 OpenSSL 进行解码
- vba - 在 ms 访问中使用“IF”和“DLookup”
- ios - 我用Xcode创建UICollectionViewController的时候会出现复用问题,但是如果是我自己的代码就不会出现
- ansible - 使用 ansible community.kubernetes.helm 插件时,helm install 命令的 --set 功能等效于什么?
- jquery - 在除桌面以外的所有断点中运行 jquery