web-dev-qa-db-ja.com

PDFまたはNode.jsでWordドキュメントを読むことはできますか?

これを行うためのパッケージが見つかりません。 PHPにはPDF用のライブラリがたくさんあります http://www.fpdf.org/ など)が、Nodeには何かありますか?

16
Shamoon

簡単に変換したり、.docテンプレートを使用して.pdfファイルを生成したりできますが、このタスクには既存のWebサービスを使用することをお勧めします。

これは Livedocx などのサービスを使用して実行できます。

ノードからこのサービスを使用するには、 node-livedocx を参照してください(免責事項:私はこのノードモジュールの作成者です)

7
Tim

textract は、PDF、Doc、Docxなどをサポートする優れたライブラリです。

14
James_1x0

PDFにはいくつかあるようですが、Wordには見つかりませんでした。

とにかく、そのようなCPUバインド処理は実際にはNodeの強みではありません(つまり、Nodeを使用して他の言語よりも優れた追加のメリットを得ることはできません)。実用的なアプローチは、優れたツールを見つけ、それをノードから利用することです。

Docsplit http://documentcloud.github.com/docsplit/ についてオフィスの周りで良いことを聞きました

ノードではありませんが、Node http://nodejs.org/docs/latest/api/all.html#child_process.exec から簡単に呼び出すことができます。

7
timoxley

最初の変換には unoconv を検討することをお勧めします。これは、実際の変換に LibreOffice またはOpenOfficeを使用します。これはオーバーヘッドを追加します。

私はいくつかのワーカーをセットアップし、すべての必要なセットアップを行い、変換を処理するために要求/応答キューを使用します...( kue または zmq

一般に、これはオフロードする必要があるCPUにバインドされた重いタスクです... Pandocやその他の人は.docxではなく.docについて具体的に言及しているため、オプションである場合とそうでない場合があります。


注:私はこの質問が古いことを知っています。これに遭遇した他の人に現在の答えを提供したいだけです。

4
Tracker1

pDFファイルにはPDFテキストを使用できます。 PDFからテキスト「チャンク」の配列にテキストを抽出します。構造化PDFテキストのファジー解析を行うのに役立ちます。

var pdfText = require('pdf-text')
var pathToPdf = __dirname + "/info.pdf"


pdfText(pathToPdf, function(err, chunks) {
  //chunks is an array of strings  
  //loosely corresponding to text objects within the pdf 
  //for a more concrete example, view the test file in this repo 
})

var fs = require('fs')
var buffer = fs.readFileSync(pathToPdf)
pdfText(buffer, function(err, chunks) {
 console.log(chunks)
})

マンモスを使用できるdocxファイルの場合、.docxファイルからテキストを抽出します。

var mammoth = require("mammoth");

mammoth.extractRawText({path: "./doc.docx"})
    .then(function(result){
        var text = result.value; // The raw text 
        console.log(text);
        var messages = result.messages;
    })
    .done();

これがお役に立てば幸いです。

3
iwayankit

Word文書からの変換のみが必要な場合の別の良いオプションは Mammoth.js です。

マンモスは、Microsoft Wordで作成されたものなどの.docxドキュメントを変換し、HTMLに変換するように設計されています。マンモスは、ドキュメント内のセマンティック情報を使用し、他の詳細を無視することにより、シンプルでクリーンなHTMLを生成することを目指しています。たとえば、Mammothは、見出しのスタイル(フォント、テキストサイズ、色など)を正確にコピーするのではなく、見出し1のスタイルを持つ段落をh1要素に変換します。

.docxで使用される構造とHTMLの構造の間に大きな不一致があるため、より複雑なドキュメントでは変換が完全ではない可能性があります。マンモスは、文書を意味的にマークアップするためにスタイルのみを使用する場合に最適に機能します。

2

PDFファイルの解析には、 pdf2json ノードモジュールを使用できます。

それはあなたがPDFファイルをjsonだけでなく生のテキストデータに変換することを可能にします。

2
Vlad Bezden

PDF using PDF.js からテキストをダウンロードして抽出する方法を示す例は次のとおりです:

import _ from 'lodash';
import superagent from 'superagent';
import pdf from 'pdfjs-dist';

const url = 'http://unec.edu.az/application/uploads/2014/12/pdf-sample.pdf';

const main = async () => {
  const response = await superagent.get(url).buffer();
  const data = response.body;
  const doc = await pdf.getDocument({ data });
  for (const i of _.range(doc.numPages)) {
    const page = await doc.getPage(i + 1);
    const content = await page.getTextContent();
    for (const { str } of content.items) {
      console.log(str);
    }
  }
};

main().catch(error => console.error(error));
1
sdgfsdh