- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 ABCpdf 来提取一些 PDF 文件的文本内容,特别是通过调用 Doc.GetText("Text")。 (您循环调用它,每页一次。)这通常效果很好,但对于某些 PDF 文件,生成的文本由缺少空格字符的文本组成,例如
Thissentencedoesn'thaveanyspacesbetweenwords.
This sentence doesn't have any spaces between words.
最佳答案
简答:您可以通过 Doc.GetText("SVG")
获取文本的单个标记,解析 TEXT
的 XML和 TSPAN
元素,并确定是否存在应视为实际空间的布局间距。您从 PDFBox 看到的行为可能是他们试图做出这种假设。此外,即使是 Adobe Acrobat 也可以像 PDFBox 一样通过剪贴板返回间隔文本。
长答案:这可能会导致更多问题,因为这可能不是 PDF 中文本的原始意图。
ABCpdf 在这里做的是正确的事情,因为 PDF 规范只描述了东西应该放在输出媒体的什么地方。可以构建一个 ABCpdf 以两种风格解释的 PDF 文件,即使原始句子看起来几乎相同。
为了证明这一点,以下是来自 Adobe InDesign 的文档快照,其中显示了与示例句子的两种情况相匹配的文本布局。
请注意,第一行不是用实际空格构建的,而是手动将单词放置在单独的文本区域中,并排成一行,看起来大致像一个间隔适当的句子。第二行有一个句子,在单个文本区域中,单词之间有实际的文本空间。
当导出为 PDF,然后由 ABCpdf 读入时,Doc.GetText("TEXT")
将返回以下内容:
ThisSentenceDoesn'tHaveAnySpacesBetweenWords.
This Sentence Doesn't Have Any Spaces Between Words.
Doc.GetText("SVG")
返回文本和其他绘图实体,因为 ABCpdf 在页面上看到它们,您可以决定如何处理基于布局的间距的情况。
<?xml version="1.0" standalone="no"?>
<svg width="612" height="792" x="0" y="0" version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<text xml:space="preserve" x="36" y="46.1924" font-size="14" font-family="ArialMT" textLength="26.446" transform="translate(36, 46.1924) translate(-36, -46.1924)">This</text>
<text xml:space="preserve" x="66.002" y="46.1924" font-size="14" font-family="ArialMT" textLength="59.15" transform="translate(66.002, 46.1924) translate(-66.002, -46.1924)">Sentence</text>
<text xml:space="preserve" x="129.604" y="46.1924" font-size="14" font-family="ArialMT" textLength="47.46" transform="translate(129.604, 46.1924) translate(-129.604, -46.1924)">Doesn’t</text>
<text xml:space="preserve" x="181.208" y="46.1924" font-size="14" font-family="ArialMT" textLength="32.676" transform="translate(181.208, 46.1924) translate(-181.208, -46.1924)">Have</text>
<text xml:space="preserve" x="219.61" y="46.1924" font-size="14" font-family="ArialMT" textLength="24.122" transform="translate(219.61, 46.1924) translate(-219.61, -46.1924)">Any</text>
<text xml:space="preserve" x="249.612" y="46.1924" font-size="14" font-family="ArialMT" textLength="46.69" transform="translate(249.612, 46.1924) translate(-249.612, -46.1924)">Spaces</text>
<text xml:space="preserve" x="301.216" y="46.1924" font-size="14" font-family="ArialMT" textLength="54.474" transform="translate(301.216, 46.1924) translate(-301.216, -46.1924)">Between</text>
<text xml:space="preserve" x="360.016" y="46.1924" font-size="14" font-family="ArialMT" transform="translate(360.016, 46.1924) translate(-360.016, -46.1924)"><tspan textLength="13.216">W</tspan><tspan dx="-0.252" textLength="31.122">ords.</tspan></text>
<text xml:space="preserve" x="36.014" y="141.9944" font-size="14" font-family="ArialMT" transform="translate(36.014, 141.9944) translate(-36.014, -141.9944)">
<tspan textLength="181.3">This Sentence Doesn’t Have </tspan><tspan dx="-0.756" textLength="150.178">Any Spaces Between W</tspan><tspan dx="-0.252" textLength="31.122">ords.</tspan></text>
</svg>
<?xml version="1.0" standalone="no"?>
<svg>
<text>This</text>
<text>Sentence</text>
<text>Doesn’t</text>
<text>Have</text>
<text>Any</text>
<text>Spaces</text>
<text>Between</text>
<text><tspan>W</tspan><tspan>ords.</tspan></text>
<text>
<tspan>This Sentence Doesn’t Have </tspan>
<tspan>Any Spaces Between W</tspan>
<tspan>ords.</tspan>
</text>
</svg>
关于abcpdf - 将 PDF 转换为文本时,我可以防止 ABCpdf 将单词混搭在一起(例如 mashingwordstogether)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7827051/
我正在尝试使用 ABCpdf 将 HTML 页面导出为 PDF。文本转换正常,但图表非常模糊。我尝试过增大字体大小,但效果甚微。解决办法是什么? 编辑:如果有帮助的话,我正在使用 asp.net 图表
我正在使用 ABCpdf,并且根本无法以编程方式获取文档的标题或作者。在 WebSupergoo 的网站上似乎找不到任何好的例子!应该是一个简单的问题。 Doc d = new Doc(); d.Re
我正在使用 ABCpdf 来提取一些 PDF 文件的文本内容,特别是通过调用 Doc.GetText("Text")。 (您循环调用它,每页一次。)这通常效果很好,但对于某些 PDF 文件,生成的文本
我已经使用 ABDpdf 呈现 pdf 并将其流式传输到浏览器,但我想知道是否可以将呈现的 pdf 附加到电子邮件中。有人做过吗? 我希望有一种方法不需要我将 pdf 保存到临时目录然后附加文件,然后
这可能更多是技术支持问题,但我想知道是否有其他开发人员遇到过这个问题: 我在我的 ASP.NET 代码中使用 Abcpdf 从 HTML 生成 PDF。它工作正常,但一个用户生成的 PDF 没有应用
我正在使用ABCPdf将HTML转换为PDF。我正在使用的方法: AddImageUrl() 这在Dev和UAT中工作正常,但在生产环境中,我不断收到以下消息: Unable to render HT
我使用 ABCpdf 9.1 x64 .Net 和 Coldfusion 创建基于 HTML 内容的 PDF。每个 PDF 文档都有不同的页眉和页脚,这些页眉和页脚是使用一些 Coldfusion 代
我正在使用 ABCPDF 库的 AddImageUrl 函数并让页面以 PDF 格式呈现。但是我遇到了一个问题,链接(标签)没有在 PDF 链接中呈现,而是作为没有链接功能的普通文本呈现。我已经检查了
我正在使用 ABCPDF.Net 版本 5 从 HTML 创建 PDF 文件。但是,这些链接似乎以深色突出显示,几乎无法阅读。如果我设置 pdfDoc.HtmlOptions.AddLinks = f
我有一个将 HTML 转换为 PDF 的 Windows 服务。我通过调用 嵌入自定义前端 var fontSwiftFont = pdfDoc.EmbedFont("swift-fontv2", L
当我尝试使用 ABCpdf 将每个页面保存为 GIF 时,只保存了第一页。 例如:我有一个包含 3 页的 PDF。我使用 ABCpdf 将每个页面呈现为流,并保存到磁盘。当我打开目标文件夹中的文件时,
在我的网站中,我使用 ABCpdf从 HTML 动态生成 pdf。我有两个条件: 用户已登录,显示第一页并将第一页绘制为 pdf 用户未登录显示在第二页并将第二页绘制为 pdf 我的代码是这样的:
问题是一个头文件,我必须在 abcpdf 生成的 pdf 文件的每一页上包含它。 头文件包含不止一个图像文件和几行文本,具体情况视情况而定。 问题是我不知道如何计算标题的大小。我需要有它的大小来分配矩
我正在试用 ABCPdf 8.1,在使用 AddImageUrl(...) 方法时出现以下错误: Access to the registry key 'HKEY_CURRENT_USER\Softw
我按照示例将带有页码的页脚添加到来自 abcpdf 文档站点的“页眉和页脚示例”页面。 问题是我的 pdf 文档有多个页面,方向和页面大小都不同。 大多数页面要么是纵向和 A4,要么是横向和 A3,但
我正在使用 ABCPDF 通过 EMF 文件将 PDF 文件打印到本地打印机。我非常密切地基于 ABC PDF 的示例“ABCPDFView”项目。我的应用程序在我的 Windows 7 和 Wind
我有一个系统,可以根据用户自己的图像创建 pdf 书籍。这些图像是高分辨率的,pdf 最终有大约 70 页,其中大部分都带有图片。 在服务器上的本地应用程序中生成 pdf 时,该过程使用大约 3Gb
我正在尝试将单选按钮添加到我通过 abcpdf 呈现的 pdf 页面。我正在查看 abcpdf 的文档,它指定我使用以下代码 Doc theDoc = new Doc(); InteractiveFo
是否可以使用 ABCPdf 将文档 JavaScript 添加到生成的 PDF 中? 最佳答案 如果您的意思是在文档加载后执行的 Javascript,请查看 this documentation p
我希望在将一段文本绘制到页面上并检查它的 y 位置之前判断一段文本是否适合页面底部。 有人知道 ABCPDF 是否可行吗? 最佳答案 据我所知,从我做 PDF 的时候开始(比如...... 6-7 年
我是一名优秀的程序员,十分优秀!