[英]Get the Trim Area of a PDF with PDF.js?
我正在玩PDF.js,似乎找不到解決我問題的方法。
我有一個帶有修剪區域和出血的PDF,我需要獲取修剪區域,以便可以在HTML畫布中裁剪PDF圖像數據。
我看到Acrobat具有可基於getPageBox(“ Trim”)返回Trim的javascript。 PDF.js中是否有任何等效項? 在控制台中檢查Javascript PDF對象時,我似乎找不到參考。
編輯pdf.worker.js
后,我能夠得到它。 用1.7.225測試。 首先,添加get trimBox()
后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
,加上幾行是這樣的:
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._getInheritableProperty('TrimBox', true)
函數已更改為this._getInheritableProperty('TrimBox', true)
弄清楚了。 對於在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];
我敢肯定有一種更整潔的方法,但是它可以工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.