java – 是否可以在PDFBOX中对齐文本?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 是否可以在PDFBOX中对齐文本?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2346字,纯文字阅读大概需要4分钟。
内容图文
![java – 是否可以在PDFBOX中对齐文本?](/upload/InfoBanner/zyjiaocheng/713/22455103fbb344e1a514f861733d4bea.jpg)
PDFBOX API中是否有任何函数可以使文本合理,或者我们必须手动执行?如果手动然后如何使用java(其背后的逻辑)证明文本
解决方法:
This older answer显示了如何将字符串分解为适合给定宽度的子字符串.要制作示例代码,请以填充整个行宽的方式绘制子字符串,替换如下(取决于PDFBox版本):
PDFBox 1.8.x
替换最后一个循环
for (String line: lines)
{
contentStream.drawString(line);
contentStream.moveTextPositionByAmount(0, -leading);
}
这个更精致的一个:
for (String line: lines)
{
float charSpacing = 0;
if (line.length() > 1)
{
float size = fontSize * pdfFont.getStringWidth(line) / 1000;
float free = width - size;
if (free > 0)
{
charSpacing = free / (line.length() - 1);
}
}
contentStream.appendRawCommands(String.format("%f Tc\n", charSpacing).replace(',', '.'));
contentStream.drawString(line);
contentStream.moveTextPositionByAmount(0, -leading);
}
(从BreakLongString.java测试testBreakStringJustified for PDFBox 1.8.x)
如果你想知道替换(‘,’,’.’)
contentStream.appendRawCommands(String.format("%f Tc\n", charSpacing).replace(',', '.'));
…我的语言环境使用逗号作为小数分隔符,并且在我的第一次测试运行后在页面内容中产生了逗号,我有点懒,只是添加了替换以修复事物……
PDFBox 2.0.x
替换最后一个循环
for (String line: lines)
{
contentStream.showText(line);
contentStream.newLineAtOffset(0, -leading);
}
这个更精致的一个:
for (String line: lines)
{
float charSpacing = 0;
if (line.length() > 1)
{
float size = fontSize * pdfFont.getStringWidth(line) / 1000;
float free = width - size;
if (free > 0)
{
charSpacing = free / (line.length() - 1);
}
}
contentStream.setCharacterSpacing(charSpacing);
contentStream.showText(line);
contentStream.newLineAtOffset(0, -leading);
}
(从BreakLongString.java开始测试testBreakStringJustified for PDFBox 2.0.x)
该解决方案仅使用额外的字符间距(运算符Tc)来进行调整.您可能会使用额外的字间距(运算符Tw),它只会扩展空格字符,或两者的组合;但请注意:字间距不适用于所有字体编码.有关这些操作数的更多信息,请参阅表105文本状态运算符,第9.3.2节“字符间距”和第9.3.3节“PDF规范ISO 32000-1中的字间距”
而不是前者
你现在得到了
如你所见,仍有一个小的赤字,一段的最后一行显然不应该是合理的.因此,在最后一行中,使用0字符间距代替:
contentStream.appendRawCommands("0 Tc\n"); // PDFBox 1.8.x
contentStream.setCharacterSpacing(0); // PDFBox 2.0.x
PS我刚刚偶然发现setCharacterSpacing目前(2016年11月)仅在2.1.0-SNAPSHOT开发版本而不是2.0.x版本.因此,在2.0.x中,您可能不得不重新使用appendRawCommands,即使它已被标记为已弃用.
内容总结
以上是互联网集市为您收集整理的java – 是否可以在PDFBOX中对齐文本?全部内容,希望文章能够帮你解决java – 是否可以在PDFBOX中对齐文本?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。