2015-03-04 3 views
0

Я играю с PDF.js и не могу найти решение моей проблемы.Получить область обрезки PDF с PDF.js?

У меня есть PDF с областью отделки и кровоточить, мне нужно получить область обрезки, чтобы я мог обрезать данные изображения PDF в холсте HTML.

Я вижу, что Acrobat имеет javascript, который может вернуть Trim на основе getPageBox («Trim»). Есть ли эквивалент в PDF.js? Я не могу найти ссылку при проверке Javascript PDF Object в консоли.

ответ

0

Обдумал это. Для всех, кто может быть заинтересован в pdf.worker.js в строке 2654, я добавил следующее, которое выставило 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]; 

Уверен, что есть более аккуратный способ, но он работает.

0

Я смог получить его после редактирования 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.

Смежные вопросы