gpt4 book ai didi

java - 使用 Apache-POI 获取 docx 的每个段落的行

转载 作者:行者123 更新时间:2023-12-02 11:57:34 25 4
gpt4 key购买 nike

我正在为我的应用程序使用库 Apache-POI。具体来说,POIshadow-all (ver. 3.17) 用于读取 Word 文档。
我成功地提取了每个段落,如下所示:
enter image description here
我真正需要的是提取每一行,如下所示:
enter image description here
提取每个段落的代码是这样的:

 try {

val fis = FileInputStream(path.path + "/" + document)
val xdoc = XWPFDocument(OPCPackage.open(fis))

val paragraphList: MutableList<XWPFParagraph> = xdoc.paragraphs

private val newParagraph = paragraph.createRun()

...

for (par in paragraphList) {

var currentParagraph = par.text
Log.i("TAG","current: $currentParagraph")

...
正如预期的那样,变量 currentParagraph 返回一个完整的段落。但是,我需要一个名为 currentLine 的变量,它返回一行。
我在 stackoverflow 和其他网站上研究过这个问题。我找到了一些建议,但没有一个适合我。
我还尝试通过 ctr 获取日期并使用 XWPFRun,但没有任何成功。
对于如何进行的任何建议,我将不胜感激。
在此先感谢您的帮助。

最佳答案

document does not store how many lines are there in a given paragraph 的元数据因为这取决于您如何渲染或查看它。想想一个word文档,如果你有一个更大的字体大小,你会在一个给定的段落中有更多的行,或者,如果你有一个更小的字体大小,你会在一个段落中有更少的行。因此,每个段落中的行数是不一致的,即一个变量。
但是,如果您的应用程序中有一个硬性和快速的要求来进行估算,您可以编写一些逻辑,例如 “在 X(常数)个字符后开始新行(四舍五入到单词的末尾)” .这又可能会根据屏幕大小、字体大小、缩放级别等而改变。所以我的建议是在您的应用程序中制定一个场景,您不会明确测量给定段落中的行数,而是数字单词或字符,并在绝对必要时将其用作插入换行符的衡量标准。
您可以使用的另一种潜在方法是使用转义字符分隔句子,例如 “在段落中的每个‘?’、‘!’或‘。’字符之后开始一个新句子。” 这也可能变得相当棘手,具体取决于某些句子的结构。
因此,您的问题的答案是,没有“开箱即用”的方法来使用 Apache POI 检测给定段落中的行数,您必须在那里编写自己的逻辑(可能使用上面概述的方法) ,如果绝对必要的话。

关于java - 使用 Apache-POI 获取 docx 的每个段落的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63875832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com