我正在玩PDF.js,似乎无法找到问题的解决方案。
我有一个带修剪区域和出血的PDF,我需要获得修剪区域,以便我可以在HTML画布中裁剪PDF图像数据。
我看到Acrobat有javascript可以基于getPageBox返回Trim(" Trim")。 PDF.js中有任何等价物吗? 在检查控制台中的Javascript PDF对象时,我似乎找不到引用。
答案 0 :(得分:2)
我在编辑get trimBox()
后得到了它。测试1.7.225。首先,在get cropBox()
之后添加 get trimBox() {
var trimBox = this.getInheritedPageProp('TrimBox', true);
if (!isArray(trimBox) || trimBox.length !== 4) {
return shadow(this, 'trimBox', this.mediaBox);
}
return shadow(this, 'trimBox', trimBox);
},
,如下所示:
handler.on('GetPage', function ...
现在,在WorkerMessageHandler
的{{1}}中,添加如下几行:
handler.on('GetPage', function wphSetupGetPage(data) {
return pdfManager.getPage(data.pageIndex).then(function (page) {
var rotatePromise = pdfManager.ensure(page, 'rotate');
var refPromise = pdfManager.ensure(page, 'ref');
var userUnitPromise = pdfManager.ensure(page, 'userUnit');
var viewPromise = pdfManager.ensure(page, 'view');
var trimBoxPromise = pdfManager.ensure(page, 'trimBox'); //added
return Promise.all([
rotatePromise,
refPromise,
userUnitPromise,
viewPromise,
trimBoxPromise //added
]).then(function (results) {
return {
rotate: results[0],
ref: results[1],
userUnit: results[2],
view: results[3],
trimBox: results[4] //added
就是这样。现在,您可以通过page.pageInfo.trimBox
在应用中获取裁剪框。
答案 1 :(得分:2)
除了@Sangbok Lee的优秀答案,
如果您使用最新的PDF.js版本,则this.getInheritedPageProp函数已更改为
this._getInheritableProperty('TrimBox', true)
答案 2 :(得分:0)
想出来。 对于其他可能对第2654行的pdf.worker.js感兴趣的人,我添加了以下暴露了trimBox的内容。
tboxX = this.pageDict.map.TrimBox[0];
tboxY = this.pageDict.map.TrimBox[1];
tboxW = this.pageDict.map.TrimBox[2];
tboxH = this.pageDict.map.TrimBox[3];
我确信有一种更简洁的方式,但它有效。