Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用PDF.js获取PDF的修剪区域?_Javascript_Html_Pdf_Trim_Pdf.js - Fatal编程技术网

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

Javascript 使用PDF.js获取PDF的修剪区域?,javascript,html,pdf,trim,pdf.js,Javascript,Html,Pdf,Trim,Pdf.js,我在玩PDF.js,似乎找不到解决问题的方法 我有一个带有修剪区域和出血的PDF,我需要得到修剪区域,这样我就可以在HTML画布中裁剪PDF图像数据 我看到Acrobat有javascript可以基于getPageBoxTrim返回修剪。PDF.js中是否有任何等效文件? 在控制台中检查Javascript PDF对象时,我似乎找不到引用。找到了。 对于其他可能对第2654行的pdf.worker.js感兴趣的人,我添加了以下内容,暴露了trimBox tboxX = this.pageDict

我在玩PDF.js,似乎找不到解决问题的方法

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

我看到Acrobat有javascript可以基于getPageBoxTrim返回修剪。PDF.js中是否有任何等效文件? 在控制台中检查Javascript PDF对象时,我似乎找不到引用。

找到了。 对于其他可能对第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];
我确信有一种更整洁的方法,但它是有效的。

找到了它。 对于其他可能对第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];

我确信有一种更整洁的方法,但它是有效的。

我在编辑pdf.worker.js后能够得到它。使用1.7.225进行测试。首先,在get cropBox之后添加get trimBox,如下所示:

 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 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
现在,在handler.on'GetPage'中,函数。。。对于WorkerMessageHandler,添加如下几行:

 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 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在你的应用程序中获得修剪框。

我在编辑pdf.worker.js后能够获得它。使用1.7.225进行测试。首先,在get cropBox之后添加get trimBox,如下所示:

 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 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
现在,在handler.on'GetPage'中,函数。。。对于WorkerMessageHandler,添加如下几行:

 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 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在你的应用程序中获得修剪框。

除了@Sangbok Lee的优秀答案, 如果使用最新的PDF.js版本,则this.getInheritedPageProp函数已更改为 此.\u getInheritableProperty'TrimBox',true

除了@Sangbok Lee的精彩回答, 如果使用最新的PDF.js版本,则this.getInheritedPageProp函数已更改为 此.\u getInheritableProperty'TrimBox',true