如何使用软换行创建PDF以便可以在iText7中复制和粘贴?

时间:2016-11-23 08:33:10

标签: pdf itext7

我使用iText7创建PDF,包括英文和中文。但是当其他人想要将PDF的内容复制并粘贴到Word或其他文本编辑器时,每行的末尾都会有一个强制换行符,并且每个段落前面的空格都会丢失。

有没有办法克服这个问题,以便我可以将段落复制为连续文本并将空格保留在每个段落的前面?

我试图在互联网上搜索,这似乎是一个非常古老的问题(例如:Copy from PDF without line breaks at end of each line),但我找不到好的解决方案。有谁知道这方面的进展?

感谢。

1 个答案:

答案 0 :(得分:1)

创建简单文档时,\n的最简单术语是将长文本拆分为行,并将这些行写入PDF文档。您的查看者/读者的工作是正确提取文本。

然而,这是一项非常重要的工作。对于最简单的示例,假设一个句子的情况足够长,一行占用两行,另一种情况是在文本中间有明确的换行符(iText7)。在这两种情况下,视觉表示都是两行字形,如果不是不可能区分这两种情况并正确恢复原始逻辑文本,则非常困难。

但是有一个标记PDF的概念,即PDF中包含有关您放入PDF文件的内容的元信息,例如文档中的表格,段落等级。这种标记信息很可能有助于区分上述两种情况。取决于观众是否会尊重标记信息,但许多观众都这样做。标记文档可能有助于在您的案例中提取文本。

要在pdfDocument.setTagged()中创建带标记的文档,请使用<img src="@Html.Action("PieChartReport", "Agency", new { model = Model })" /> 方法,但在添加任何内容之前,请务必将其命名为。理想情况下,在构造函数之后立即调用此方法。