使用PDF.js获取PDF的修剪区域?

时间:2015-03-04 13:37:57

标签: javascript html5 pdf trim pdf.js

我正在玩PDF.js,似乎无法找到问题的解决方案。

我有一个带修剪区域和出血的PDF,我需要获得修剪区域,以便我可以在HTML画布中裁剪PDF图像数据。

我看到Acrobat有javascript可以基于getPageBox返回Trim(" Trim")。 PDF.js中有任何等价物吗? 在检查控制台中的Javascript PDF对象时,我似乎找不到引用。

3 个答案:

答案 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];

我确信有一种更简洁的方式,但它有效。