दिलचस्प पोस्ट
FIWARE yum रिपॉजिटरी का उपयोग करने के लिए सिस्टम को कैसे कॉन्फ़िगर किया जाए? मैं बैच फ़ाइल को एक त्रुटि का सामना करने पर समाप्त कैसे कर सकता हूं? किसने "मेरी" हत्या की प्रक्रिया और क्यों? PHP $ _GET सरणी कैसे प्राप्त करें? कैलेंडर के लिए साप्ताहिक ईवेंट जोड़ें परीक्षण कि क्या एक नफारीय सरणी में एक पंक्ति दी गई है HTTPS कनेक्शन अजगर दूसरे पृष्ठ से नियंत्रण तक पहुंचें ASP.Net यह समानांतर क्यों है। कार्यक्रम के लिए कार्यक्रम को फ्रीज कर दिया गया? मैं एक आइटम को एक IEnumerable <T> संग्रह में कैसे जोड़ सकता हूं? डाक वृद्धि (i ++) और पूर्व वृद्धि (++ आई) ऑपरेटर्स जावा में कैसे काम करते हैं? बेबेल 6 यह डिफ़ॉल्ट कैसे निर्यात करता है Photos.app से अंतिम चित्र प्राप्त करें? कैसे एक चर को बताने के लिए यह संभव है, लेकिन स्ट्रिंग नहीं है सी # का उपयोग कर एक .gz फाइल को अनज़िप करना

जावास्क्रिप्ट में पीडीएफ से टेक्स्ट निकालें

मुझे आश्चर्य है कि क्या केवल जावास्क्रिप्ट का उपयोग करके पीडीएफ फाइल के अंदर पाठ प्राप्त करना संभव है? यदि हां, तो कोई मुझे कैसे दिखा सकता है?

मुझे पता है कि कुछ सर्वर-साइड जावा, सी #, आदि लाइब्रेरी हैं लेकिन मैं एक सर्वर का उपयोग करना पसंद नहीं करता धन्यवाद

Solutions Collecting From Web of "जावास्क्रिप्ट में पीडीएफ से टेक्स्ट निकालें"

यह एक प्राचीन प्रश्न है, लेकिन क्योंकि pdf.js वर्षों में विकसित हो रहा है, मैं एक नया जवाब देना चाहूंगा। यही है, यह किसी भी सर्वर या बाहरी सेवा को शामिल किए बिना स्थानीय रूप से किया जा सकता है नए pdf.js में एक फ़ंक्शन है: page.getTextContent () आप उस पाठ सामग्री को उस से प्राप्त कर सकते हैं मैंने इसे सफलतापूर्वक निम्न कोड के साथ किया है

  1. प्रत्येक चरण में आपको जो कुछ मिलता है वह वादा है आपको इस तरह से कोड की जरूरत है: .then( function(){...}) अगले चरण में आगे बढ़ने के लिए

    1) PDFJS.getDocument( data ).then( function(pdf) {

    2) pdf.getPage(i).then( function(page){ ) pdf.getPage(i).then( function(page){

    3) page.getTextContent().then( function(textContent){

  2. आप अंत में क्या प्राप्त करते हैं एक स्ट्रिंग सरणी textContent.bidiTexts[]textContent.bidiTexts[] आप उन्हें 1 पृष्ठ का टेक्स्ट प्राप्त करने के लिए जोड़ते हैं। टेक्स्ट ब्लॉक 'निर्देशांकों का इस्तेमाल करने के लिए उपयोग किया जाता है कि क्या नई लाइन या स्थान डालने की आवश्यकता है। (यह पूरी तरह से मजबूत नहीं हो सकता है, लेकिन मेरे परीक्षण से यह ठीक लगता है।>

  3. इनपुट पैरामीटर data को या तो URL या ArrayBuffer प्रकार डेटा होना चाहिए। मैंने डेटा प्राप्त करने के लिए ReadAsArrayBuffer (फ़ाइल) फ़ंक्शन FileReader API में उपयोग किया।

उम्मीद है की यह मदद करेगा।

नोट: कुछ अन्य उपयोगकर्ता के अनुसार, पुस्तकालय ने अपडेट किया है और कोड को तोड़ने के कारण होता है। नीचे async5 की टिप्पणी के अनुसार, आपको textContent.bidiTexts को textContent.items साथ प्रतिस्थापित करना textContent.items

  function Pdf2TextClass(){ var self = this; this.complete = 0; /** * * @param data ArrayBuffer of the pdf file content * @param callbackPageDone To inform the progress each time * when a page is finished. The callback function's input parameters are: * 1) number of pages done; * 2) total number of pages in file. * @param callbackAllDone The input parameter of callback function is * the result of extracted text from pdf file. * */ this.pdfToText = function(data, callbackPageDone, callbackAllDone){ console.assert( data instanceof ArrayBuffer || typeof data == 'string' ); PDFJS.getDocument( data ).then( function(pdf) { var div = document.getElementById('viewer'); var total = pdf.numPages; callbackPageDone( 0, total ); var layers = {}; for (i = 1; i <= total; i++){ pdf.getPage(i).then( function(page){ var n = page.pageNumber; page.getTextContent().then( function(textContent){ if( null != textContent.bidiTexts ){ var page_text = ""; var last_block = null; for( var k = 0; k < textContent.bidiTexts.length; k++ ){ var block = textContent.bidiTexts[k]; if( last_block != null && last_block.str[last_block.str.length-1] != ' '){ if( block.x < last_block.x ) page_text += "\r\n"; else if ( last_block.y != block.y && ( last_block.str.match(/^(\s?[a-zA-Z])$|^(.+\s[a-zA-Z])$/) == null )) page_text += ' '; } page_text += block.str; last_block = block; } textContent != null && console.log("page " + n + " finished."); //" content: \n" + page_text); layers[n] = page_text + "\n\n"; } ++ self.complete; callbackPageDone( self.complete, total ); if (self.complete == total){ window.setTimeout(function(){ var full_text = ""; var num_pages = Object.keys(layers).length; for( var j = 1; j <= num_pages; j++) full_text += layers[j] ; callbackAllDone(full_text); }, 1000); } }); // end of page.getTextContent().then }); // end of page.then } // of for }); }; // end of pdfToText() }; // end of class 

मुझे काम करने के लिए ग्राम 2008 का उदाहरण नहीं मिल सका (pdf.js पर आंतरिक डेटा संरचना जाहिरा तौर पर बदल गया है), इसलिए मैंने अपने स्वयं के पूर्णतः वादा-आधारित समाधान लिखा है जो अद्यतन पीडीएफ का उपयोग कर किसी भी डीओएम तत्वों, क्वेरीसेलेटर या कैनवास का उपयोग नहीं करता है मोज़िला पर उदाहरण से .js

यह अपलोड के लिए एक फ़ाइल पथ खाता है क्योंकि मैं इसे नोड-वेबकिट के साथ उपयोग कर रहा हूं I आपको यह सुनिश्चित करने की ज़रूरत है कि आपके पास सीमैप्स डाउनलोड किए गए हैं और कहीं न कहीं और आपको यह काम करने के लिए pdf.js और pdf.worker.js को नियुक्त करना है।

  /** * Extract text from PDFs with PDF.js * Uses the demo pdf.js from https://mozilla.github.io/pdf.js/getting_started/ */ this.pdfToText = function(data) { PDFJS.workerSrc = 'js/vendor/pdf.worker.js'; PDFJS.cMapUrl = 'js/vendor/pdfjs/cmaps/'; PDFJS.cMapPacked = true; return PDFJS.getDocument(data).then(function(pdf) { var pages = []; for (var i = 0; i < pdf.numPages; i++) { pages.push(i); } return Promise.all(pages.map(function(pageNumber) { return pdf.getPage(pageNumber + 1).then(function(page) { return page.getTextContent().then(function(textContent) { return textContent.items.map(function(item) { return item.str; }).join(' '); }); }); })).then(function(pages) { return pages.join("\r\n"); }); }); } 

उपयोग:

  self.pdfToText(files[0].path).then(function(result) { console.log("PDF done!", result); }) 

यहां कुछ जावास्क्रिप्ट कोड है जो आप http://hublog.hubmed.org/archives/001948.html से Pdf.js का उपयोग करना चाहते हैं:

 var input = document.getElementById("input"); var processor = document.getElementById("processor"); var output = document.getElementById("output"); // listen for messages from the processor window.addEventListener("message", function(event){ if (event.source != processor.contentWindow) return; switch (event.data){ // "ready" = the processor is ready, so fetch the PDF file case "ready": var xhr = new XMLHttpRequest; xhr.open('GET', input.getAttribute("src"), true); xhr.responseType = "arraybuffer"; xhr.onload = function(event) { processor.contentWindow.postMessage(this.response, "*"); }; xhr.send(); break; // anything else = the processor has returned the text of the PDF default: output.textContent = event.data.replace(/\s+/g, " "); break; } }, true); 

… और यहां एक उदाहरण है:

http://git.macropus.org/2011/11/pdftotext/example/

सभी लोगों के लिए जो वास्तव में इसे नोड सर्वर पर उपयोग करना चाहते हैं:

 /** * Created by velten on 25.04.16. */ "use strict"; let pdfUrl = "http://example.com/example.pdf"; let request = require('request'); var pdfParser = require('pdf2json'); let pdfPipe = request({url: pdfUrl, encoding:null}).pipe(pdfParser); pdfPipe.on("pdfParser_dataError", err => console.error(err) ); pdfPipe.on("pdfParser_dataReady", pdf => { //optionally: //let pdf = pdfParser.getMergedTextBlocksIfNeeded(); let count1 = 0; //get text on a particular page for (let page of pdf.formImage.Pages) { count1 += page.Texts.length; } console.log(count1); pdfParser.destroy(); }); 

यह संभव है लेकिन:

  • आपको किसी भी तरह से सर्वर का उपयोग करना पड़ेगा, कोई भी तरीका नहीं है कि आप उसे उपयोगकर्ता कंप्यूटर पर फ़ाइल के स्थानांतरण और उसे वापस सर्वर पर स्थानांतरित कर सकते हैं
  • मुझे कोई बात नहीं है कि कोई भी ऐसी लाइब्रेरी अभी तक लिखा है

इसलिए यदि आपके पास कुछ खाली समय है तो आप पीडीएफ फॉर्मेट सीख सकते हैं और इस तरह एक लाइब्रेरी स्वयं लिख सकते हैं, या आप बस सर्वर साइड लाइब्रेरी का कोर्स इस्तेमाल कर सकते हैं।

मुझे पीडीएफ फाइल पढ़ने के लिए एक पुस्तकालय का पता नहीं है, लेकिन जेएसपीडीएफ नामक जावास्क्रिप्ट में उन्हें बनाने के लिए एक लाइब्रेरी है। आपको उस पुस्तकालय के स्रोत को देखकर जावास्क्रिप्ट में पीडीएफ फाइलों को पढ़ने के बारे में कुछ सुझाव मिल सकते हैं।