我使用iText7创建PDF,包括英文和中文。但是当其他人想要将PDF的内容复制并粘贴到Word或其他文本编辑器时,每行的末尾都会有一个强制换行符,并且每个段落前面的空格都会丢失。
有没有办法克服这个问题,以便我可以将段落复制为连续文本并将空格保留在每个段落的前面?
我试图在互联网上搜索,这似乎是一个非常古老的问题(例如:Copy from PDF without line breaks at end of each line),但我找不到好的解决方案。有谁知道这方面的进展?
感谢。
答案 0 :(得分:1)
创建简单文档时,\n
的最简单术语是将长文本拆分为行,并将这些行写入PDF文档。您的查看者/读者的工作是正确提取文本。
然而,这是一项非常重要的工作。对于最简单的示例,假设一个句子的情况足够长,一行占用两行,另一种情况是在文本中间有明确的换行符(iText7
)。在这两种情况下,视觉表示都是两行字形,如果不是不可能区分这两种情况并正确恢复原始逻辑文本,则非常困难。
但是有一个标记PDF的概念,即PDF中包含有关您放入PDF文件的内容的元信息,例如文档中的表格,段落等级。这种标记信息很可能有助于区分上述两种情况。取决于观众是否会尊重标记信息,但许多观众都这样做。标记文档可能有助于在您的案例中提取文本。
要在pdfDocument.setTagged()
中创建带标记的文档,请使用<img src="@Html.Action("PieChartReport", "Agency", new { model = Model })" />
方法,但在添加任何内容之前,请务必将其命名为。理想情况下,在构造函数之后立即调用此方法。