2013-12-15 4 views
0

Я пытаюсь получить текст из pdf-документа, используя pdf.js в JS. Однако pdf.js не имеет достойной документации, я уже посмотрел на доступных примерах, и я подошел к этому:Получение textcontent pdf.js

var pdfUrl = "http://localhost/test.pdf" 
var pdf = PDFJS.getDocument(pdfUrl); 
pdf.then(function(pdf) { 
    var maxPages = pdf.pdfInfo.numPages; 
    for (var j = 1; j < maxPages; j++) { 
     var page = pdf.getPage(j); 

     page.then(function() { 
      var textContent = page.getTextContent(); 

     }) 
    } 
}); 

бит страница работает, потому что я могу видеть это PROMISS. Тем не менее, запуск этого бита дает:

Warning: Unhandled rejection: TypeError: Object #<Object> has no method 'getTextContent' 
TypeError: Object #<Object> has no method 'getTextContent' 

Он работает таким образом в примерах, которые я видел. Он получает страницу, и я могу распечатать количество страниц.

Любой, у кого есть опыт, который может пролить свет?

* Бонусный вопрос: Меня интересует только разбор pdf, а не его рендеринг в браузере. Однако это нужно делать клиентам. Является ли pdf.js правильным молотком для работы?

+1

Не может быть проблемой, но 'page.then (function() {' должен быть 'page.then (function (page) {' –

+0

На самом деле это была проблема! Сделайте это ответом, и все готово. – Difusio

ответ

2

page.then(function() { должен быть page.then(function(page) {

1

pdf.js делает свой файл в формате PDF и генерирует слова затем выводит их в виде HTML элементов. Каждый элемент затем помещается над вашим pdf с помощью свойства css {position: absolute; left: X, top: Y) и маскируется над вашим pdf.

Эти поля имеют свойство css {color: transparent}. это делает трюк выделения выделения, кажется, что вы непосредственно выбираете файл pdf, но на самом деле вы выбираете созданные элементы html.

Это как раз то, как это работает, если вы хотите отобразить PDF-файл, все в порядке, но держите его в голове, что если вы хотите изменить технологию вывода (html transparent divs), вам придется принести свою собственную замену. ..

0

Кроме того, необходимо изменить его

for (var j = 1; j <= maxPages; j++) { 

иначе вы никогда не будете получать первую страницу.

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