簡體   English   中英

使用PDF.js獲取PDF的修剪區域?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM