ホームページ  >  記事  >  ウェブフロントエンド  >  nodejsは単語プレビューを実装します

nodejsは単語プレビューを実装します

WBOY
WBOYオリジナル
2023-05-27 19:15:072204ブラウズ

時代の発展に伴い、文書処理方法も常に変化しています。以前は、文書を編集したり閲覧したりするためにさまざまな文書処理ソフトウェアを使用していましたが、現在では、インターネット上で文書を処理することに慣れている人が増えています。オンライン文書処理の実現という点では、Node.js は非常に強力なツールとなっています。

Word プレビューは、間違いなく文書処理において最も一般的なニーズの 1 つです。ユーザーが Word 文書をアップロードするときは、Web ページ上でプレビューし、閲覧や印刷などの基本的な操作を行う必要があり、これは多くの企業や個人が満たさなければならない要件です。この記事では、Node.js を使用して Word 文書のオンライン プレビューを実装する方法を紹介します。

1. 前提知識

始める前に、まずいくつかの前提知識を理解する必要があります。

1. Office 拡張フィールド名

Word 文書内のテキスト、図、表などの要素は、文書として保存されるときに「Office Open XML」に格納されます。 docx」または「.doc」ファイル。このファイルでは、各要素に一意の拡張プロパティ名 (拡張プロパティ名) が割り当てられます。

私たちのアプリケーションでは、次の表に示すように、一般的に使用されるいくつかの拡張フィールド名を使用する必要があります。

修飾子docProps/core.xml/lastModifiedBy変更時刻docProps/core.xml/modified#図表2. Node.js
Type 拡張フィールド名
Text docProps/core.xml/title
Creator docProps/core.xml/creator
作成時間 docProps/core.xml/created
word/media/image1
word/document.xml/table

Node.js は、サーバーサイド プログラミングに JavaScript 言語を使用するランタイム環境です。これにより、JavaScript を使用してサーバー側アプリケーションを作成し、さまざまなサービスを提供できます。 Node.js は、イベント駆動型のノンブロッキング I/O モデルを使用して、高いパフォーマンスと非常に優れたスケーラビリティを確保します。

この記事では、Node.js を使用して Word ドキュメントのコンテンツを読み取り、Word ドキュメントを HTML に変換します。

3. Docxtemplater

Docxtemplater は、Word ドキュメントを読み取って変更できる、Node.js ベースのテンプレート エンジンです。 Docxtemplater を使用して Word 文書を変更し、オンライン プレビュー機能を実装します。

2. 導入プロセス

次に、上記のテクノロジーを使用して Word 文書のオンライン プレビューを実現する方法を紹介します。

1. 必要なモジュールをインストールする

Node.js を使用して Word ドキュメントのオンライン プレビューを実装するため、必要なモジュールをいくつかインストールする必要があります。この記事では、使用する必要があるモジュールは docxtemplater、unzip、fs です。

npm コマンドを使用してこれらのモジュールをインストールできます:

npm install docxtemplater unzip fs

2. Word 文書の内容を確認します

docxtemplater を使用して Word 文書を変更する前に、次のことを行う必要があります。最初に読んでください Word 文書のコンテンツを取得します。 Node.js の組み込み fs モジュールを使用してファイルの読み取りを実装できます。読む前に、「.docx」ファイルを解凍する必要があります。

// 解压docx文件
function unzipDocx(file) {
  return new Promise((resolve) => {
    const extractPath = path.join(__dirname, 'extracted');
    const unzipper = new Unzipper();

    mkdirp(extractPath);
    unzipper.on('extract', resolve);
    fs.createReadStream(file).pipe(unzipper).pipe(fs.createWriteStream(extractPath));
  });
}

// 读取Word文档内容
function readDocx(file) {
  const ext = path.extname(file);

  return ext === '.docx' ? readDocxXml(file) : '';
}

function readDocxXml(file) {
  const contentXml = path.join(__dirname, `extracted/word/document.xml`);

  return fs.readFileSync(contentXml);
}

3. Word 文書を HTML に変換する

Docxtemplater は Word 文書を HTML に変換でき、非常に便利です。テンプレート エンジンを呼び出すときに、出力テンプレートを HTML として指定するだけで済みます。

// 将Word文档转换为HTML
async function parseDocx(content) {
  const templater = new Docxtemplater();

  templater.loadZip(new JSZip(content));
  templater.setData({});

  // 替换表格为HTML
  templater.attachModule(new HtmlModule());
  templater.compile();
  const { renderedHtml } = templater.getRendered();

  return renderedHtml;
}

Word ドキュメントを HTML に変換するプロセスでは、Docxtemplater の HtmlModule モジュールを使用することに注意してください。このモジュールは、Word ドキュメント内の表やその他のコンテンツを HTML に変換できます。

4. アプリケーションを実行します

上記の手順を完了すると、Word 文書をプレビューできるアプリケーションが表示されます。このアプリケーションでは、Express を使用してサービスを提供します。

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  const filePath = req.query.file;

  if (!filePath) {
    res.send(`请指定需要预览的Word文档文件路径,如:http://localhost:3000/?file=/path/to/your/file.docx`);
    return;
  }

  unzipDocx(filePath).then(() => {
    const content = readDocx(filePath);
    parseDocx(content).then(html => {
      res.send(html);
    });
  });
});

app.listen(3000, () => console.log('应用程序已启动,访问 http://localhost:3000 即可查看。'));

このアプリケーションを実行した後、ブラウザで http://localhost:3000/?file=/path/to/your/file.docx にアクセスして Word 文書をプレビューできます。

3. 概要

Node.js を使用して Word ドキュメントのオンライン プレビューを実現すると非常に便利です。テンプレート エンジンである Docxtemplater を使用すると、Word ドキュメントを HTML にすばやく変換し、簡単な操作でブラウザにプレビュー機能を実装できます。

Node.js を使用して Word ドキュメントをプレビューするプロセス中、ユーザーのファイル セキュリティを保護する必要があることに注意してください。ユーザーのファイルを保護するために、パスワードやアクセス権などを使用できます。同時に、漏洩などの問題を避けるために、サーバーのセキュリティにも特別な注意を払う必要があります。

Node.js は Web 開発で広く使用されており、オンライン ドキュメント プレビューでも、その他の Web アプリケーション開発でも、Node.js は非常に強力なツールになります。今後、Node.js は Web 開発者の間でますます普及していくと考えています。

以上がnodejsは単語プレビューを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。