html怎么去掉段落长度自动,html – 如何用PDFbox创建固定宽度的段落?

本文介绍了一种在PDF文档中实现文本自动换行的方法。利用PDFBox库,通过定义可能的换行点来确保文本能够根据指定的段落宽度进行换行。文中还提供了实现这一功能的具体代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据

this answer,不可能将换行符插入到某些文本中,并且PDF正确显示(无论是使用PDFBox还是其他东西),所以我认为自动包装一些文本以适应某些宽度也可能是不能做的事情自动. (除此之外,还有许多方法可以包装一个文本 – 全部单词,将它们分成较小的部分等)

This answer到另一个问题(以一个字符串为中心)给出了一些关于如何自己做的指针.假设你写了一个函数possibleWrapPoints(String):int []列出文本中的所有点,可以发生一个单词wrap(不包括“zero”,包括“text length”),一个可能的解决方案可能是:

PDFont font = PDType1Font.HELVETICA_BOLD; // Or whatever font you want.

int fontSize = 16; // Or whatever font size you want.

int paragraphWidth = 200;

String text = "test text";

int start = 0;

int end = 0;

int height = 10;

for ( int i : possibleWrapPoints(text) ) {

float width = font.getStringWidth(text.substring(start,i)) / 1000 * fontSize;

if ( start < end && width > paragraphWidth ) {

// Draw partial text and increase height

content.moveTextPositionByAmount(10 , height);

content.drawString(text.substring(start,end));

height += font.getFontDescriptor().getFontBoundingBox().getHeight() / 1000 * fontSize;

start = end;

}

end = i;

}

// Last piece of text

content.moveTextPositionByAmount(10 , height);

content.drawString(text.substring(start));

可能的WapapPoints的一个例子,允许在不是单词(reference)的任何一点的包装可以是:

int[] possibleWrapPoints(String text) {

String[] split = text.split("(?<=\\W)");

int[] ret = new int[split.length];

ret[0] = split[0].length();

for ( int i = 1 ; i < split.length ; i++ )

ret[i] = ret[i-1] + split[i].length();

return ret;

}

更新:一些附加信息:

> PDF文件格式设计为在不同情况下看起来是一样的,像您所要求的功能在PDF编辑器/创建者中是有意义的,但不是PDF文件本身.因此,大多数“低级”工具往往集中在处理文件格式本身,而忽略了这样的东西.

>高级工具OTOH通常具有进行此转换的方法.一个例子是Platypus(对于Python,虽然),它有简单的方法来创建段落,并依赖于较低级别的ReportLab函数来执行实际的PDF渲染.我不知道类似的PDFBox工具,但this post提供了一些关于如何使用免费提供的工具在Java环境中将HTML内容转换为PDF的提示.没有自己尝试过,但是我在这里发布,因为它可能是有用的(如果我以上的手工尝试是不够的).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值