如何使用 PDF .js阅读页脚文本
How can I read the footer text using PDF.js?
我正在尝试从科学论文中提取数字对象标识符,由于它们几乎总是位于页脚中,因此我想在浏览正文之前尝试这种策略。
这是我目前的方法,使用 Mozilla 的pdf.js
搜索任意 PDF 的第一页。
var Promise = require('bluebird');
const doiRegex = new RegExp(''b(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?!["&''<>])[[:graph:]])+)'b', 'i');
function pdfgrep(fileObj) {
return Promise.spawn(function* () {
var pdf = yield pdfjs.getDocument(fileObj.path);
console.log(pdf);
var page = yield pdf.getPage(1);
var text = yield page.getTextContent();
for (var s of text.items) {
var match = s.str.match(regex);
if (match !== null) {
return match;
}
}
return null;
});
}
下面是可以测试此方法的 PDF。 请注意,DOI 位于页脚中,可以使用搜索工具在任何普通的 PDF 查看器中进行定位。 但是,pdf.getPage
似乎不包含页脚中的任何文本。
- 如何使用 PDF 访问页脚文本.js?
- 如果做不到这一点,我可以使用任何其他工具来执行此操作吗?
RegExp 未正确编写:
-
'b
未在字符串中转义的,应''b
-
[:graph:]
可能不起作用
意思如下:
var doiRegex = /'b(10[.][0-9]{4,}(?:[.][0-9]+)*'/(?:(?!["&''<>])['x21-'x7E])+)'b/i;
getTextContent()
结果返回文本项及其在页面上的位置。通常 PDF.js 无法将单个字符组合成文本运行,因为某些 PDF 生成器将单个字形打印到单独的位置,但这在新版本的 PDF 中得到了改进.js(顺便说一句,您使用的是哪个版本的 PDF.js?尝试在匹配之前自己粘合文本运行:
...
var text = yield page.getTextContent();
var str = text.items.map(function (s) {
return s.str;
}).join('');
var match = str.match(regex);
return match;
...
相关文章:
- 当文本字段或文本区域使用纯JavaScript聚焦时,禁用键盘快捷键
- jQuery文本未使用fadeIn正确显示
- 使用Javascript更改span的文本-不使用“;OnClick”;
- 将 import.io 与鼠标悬停文本一起使用
- 启用单选按钮的文本框使用 javascript 列出列表项值之一
- 在文本区域中查找,隐藏和替换带有图片的文本,使用关键字取消隐藏点击
- 如何通过选择从SQL填充的下拉列表来检索SQL中的值到文本区域使用JavaScript在PHP中
- 如何创建动态文本并使用 KineticJS 对其进行编辑.任何可以说明的例子都会很棒
- [代码播放器]当 iframe 内容从文本区域使用 JavaScript 动态加载时,如何在 iframe 内查找元素
- 如何在 html 中编写文本并使用 onclick 提交
- 文本区域使用 jQuery 展开,当我单击提交按钮时不会提交表单
- 更新引导拆分按钮文本并使用下拉按钮功能
- 选择文本并使用 JavaScript 设置“文本区域”的格式
- 文本框使用 if else 语句打开我的链接 JavaScript
- 更改属性文本并使用挖空保留输入的值
- 单击NG-Repeater中的文本,使用JavaScript进行量角器
- 从文本字符串使用 javascript 创建数组并操作数据以满足您的需求
- 如何避免在Facebook帖子描述文本中使用Javascript
- 如何在特殊字符的输入文本中使用annyang
- AngularJS文本输入使用ng模型,但需要默认值,而不使用value=或ng-init=