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