2013-07-02 12 views
9

Ich möchte Text aus PDF-Datei mit nur Javascript auf der Client-Seite extrahieren, ohne den Server zu verwenden. Ich habe bereits festgestellt, einen Javascript-Code in dem folgenden Link: extract text from pdf in JavascriptExtrahieren Sie Text aus PDF-Datei mit Javascript

und dann in

http://hublog.hubmed.org/archives/001948.html

und in:

https://github.com/hubgit/hubgit.github.com/tree/master/2011/11/pdftotext

1) Ich bitte wollen wissen, was sind die Dateien, die für diese Extraktion von den vorherigen benötigt werden. 2) Ich weiß nicht genau, wie man diese Codes in einer Anwendung anpassen kann, nicht im Web.

Jede Antwort ist willkommen. Vielen Dank.

Antwort

8

hier ist ein schönes Beispiel dafür, wie Pdf.js zu verwenden, um den Text zu extrahieren: http://git.macropus.org/2011/11/pdftotext/example/

natürlich Sie für Ihre Zwecke eine Menge Code zu entfernen, aber es sollte es

+0

Vielen Dank, es funktionierte für mich: D – Coccinelle

+1

Hinweis für zukünftige Googler: Das offizielle pdf.js-Projekt scheint mehrmals den Besitzer gewechselt zu haben, da die obigen Links veröffentlicht wurden, aber es befindet sich derzeit in Mozillas GitHub-Seite - https://github.com/mozilla/pdf.js – xarxziux

1

tun Ich habe einen einfacheren Ansatz gemacht, der keine Nachrichten zwischen Iframes mit der gleichen Bibliothek (mit der neuesten Version), using pdf.js.

Das folgende Beispiel würde die ganzen Text nur von der ersten Seite des PDF extrahieren:

/** 
* Retrieves the text of a specif page within a PDF Document obtained through pdf.js 
* 
* @param {Integer} pageNum Specifies the number of the page 
* @param {PDFDocument} PDFDocumentInstance The PDF document obtained 
**/ 
function getPageText(pageNum, PDFDocumentInstance) { 
    // Return a Promise that is solved once the text of the page is retrieven 
    return new Promise(function (resolve, reject) { 
     PDFDocumentInstance.getPage(pageNum).then(function (pdfPage) { 
      // The main trick to obtain the text of the PDF page, use the getTextContent method 
      pdfPage.getTextContent().then(function (textContent) { 
       var textItems = textContent.items; 
       var finalString = ""; 

       // Concatenate the string of the item to the final string 
       for (var i = 0; i < textItems.length; i++) { 
        var item = textItems[i]; 

        finalString += item.str + " "; 
       } 

       // Solve promise with the text retrieven from the page 
       resolve(finalString); 
      }); 
     }); 
    }); 
} 

/** 
* Extract the test from the PDF 
*/ 

var PDF_URL = '/path/to/example.pdf'; 
PDFJS.getDocument(PDF_URL).then(function (PDFDocumentInstance) { 

    var totalPages = PDFDocumentInstance.pdfInfo.numPages; 
    var pageNumber = 1; 

    // Extract the text 
    getPageText(pageNumber , PDFDocumentInstance).then(function(textPage){ 
     // Show the text of the page in the console 
     console.log(textPage); 
    }); 

}, function (reason) { 
    // PDF loading error 
    console.error(reason); 
}); 

Read the article about this solution here. Da @xarxziux erwähnt wurde, hat sich die Bibliothek geändert, seit die erste Lösung veröffentlicht wurde (sie sollte nicht mehr mit der neuesten Version von pdf.js funktionieren). Dies sollte für die meisten Fälle funktionieren.