您的位置:

解密jsword——一个强大的开源操作文档工具

随着人们对数字化的需求提高,操作文档的频率越来越高,由此产生了一系列的文档工具。今天,我们要介绍的是一款完全开源的文档操作工具——jsword。通过jsword,我们可以完成多种多样的文档操作,并且有着良好的扩展性,能够满足各种不同类型的文档操作需求。下面我们将从多个角度进行jsword的介绍。

一、jsword男装——快速了解jsword

首先我们需要知道,jsword是一款用于操作文档的工具库,使用它可以进行多种多样的文档操作,比如文档预览、文档转换等等。下面就给大家介绍一下使用jsword的步骤。首先我们需要安装jsword:


npm install jsword

安装完成之后,我们可以简单了解一下jsword的基本用法,比如获取dom节点,用法如下:


const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM(`

Hello world

`); console.log(dom.window.document.querySelector("p").textContent); // "Hello world"

还有操作pdf的插件pdfkit,使用如下:


const PDFDocument = require('pdfkit');
const fs = require('fs');
// Create a document
const doc = new PDFDocument();
// Pipe its output somewhere, like to a file or HTTP response
// See below for browser usage
doc.pipe(fs.createWriteStream('output.pdf'));
// Embed a font, set the font size, and render some text
doc.font('fonts/PalatinoBold.ttf')
   .fontSize(25)
   .text('Some text with an embedded font!', 100, 100);
// Add an image, constrain it to a given size, and center it vertically and horizontally
doc.image('path/to/image.png', {
   fit: [250, 300],
   align: 'center',
   valign: 'center'
});
// Add another page
doc.addPage()
   .fontSize(25)
   .text('Here is some vector graphics...', 100, 100);
// Draw a triangle
doc.save()
   .moveTo(100, 150)
   .lineTo(100, 250)
   .lineTo(200, 250)
   .fill("#FF3300");
// Apply some transforms and render an SVG path with the 'even-odd' fill rule
doc.scale(0.6)
   .translate(470, -380)
   .path('M 250,75 L 323,301 131,161 369,161 177,301 z')
   .fill('red', 'even-odd')
   .restore();
// Add some text with annotations
doc.addPage()
   .fillColor("blue")
   .text('Here is a link!', 100, 100)
   .underline(100, 100, 160, 27, {color: "#0000FF"})
   .link(100, 100, 160, 27, 'http://google.com/');
// Finalize PDF file
doc.end();

如此简单的引入,我们就可以开始操作文档了。

二、jsword文档转pdf——多种操作,一站式解决

除了简单的dom操作外,jsword也提供了其他多样的文档操作,比如文档转换。以文档转pdf为例,我们需要用到pdfmake这个库,安装方法如下:


npm install pdfmake

安装好之后,我们就可以开始使用pdfmake了。下面我们用一个简短的例子来介绍:将文档转成pdf


const fs = require('fs');
const pdfMake = require('pdfmake');
const docDefinition = { content: 'This is test content!' };
const pdfDoc = pdfMake.createPdf(docDefinition);
pdfDoc.getBase64((data) => {
  fs.writeFileSync('output.pdf', data, 'base64');
});

代码解释:首先我们需要定义我们需要转换的文档内容docDefinition,然后通过createPdf将其转换为pdf格式。最后保存成文件。

三、jsword转pdf插件——扩展jsword功能的利器

上面提到了pdfmake这个库,其实pdfmake是一款非常强大、且易于使用的pdf生成工具。将其引入到jsword中,可以使得我们的jsword有更多的pdf操作能力。下面我们需要安装一个jsword的pdf插件:


npm install jsword-pdf-plugin

安装好之后,我们就可以使用这个插件扩展jsword的pdf操作能力了。下面我们用一个例子来尝试使用:


import PDFMake from '../../src/shared/pdfmake';
...
const pdf = new PDFMake();
const docDefinition = { content: 'This is test content!' };
pdf.download(docDefinition, 'output.pdf');

这个例子中,我们先引进了pdfmake,然后创建一个pdf对象,并且使用了pdf对象的download方法将文档下载到本地。

四、jsword文档预览——快速查看文档内容

我们还可以通过jsword来快速的预览文档。下面我们需要引入viewerjs这个库:


npm install viewerjs

安装完成之后,我们就可以使用viewerjs来预览文档了。下面给出一个例子


const Viewer = require('viewerjs');
const img = document.getElementById('image_id');
const viewer = new Viewer(img);

代码解释:我们首先需要找到要预览的文档,然后使用viewerjs的构造函数即可。

五、jsword转html——快速转换文档格式

除了转pdf操作,我们还可以使用jsword来实现文档的html格式转换。我们可以使用officegen插件来完成这项操作:


npm install officegen

安装完成之后,我们就可以使用officegen来进行文档转换了。下面给出一个例子:


const officegen = require('officegen');
const fs = require('fs');
// 建立文档
let docx = officegen('docx');
// 添加文字
docx.createP().addText("这是一个测试内容");
const out = fs.createWriteStream('output.docx');
// 将操作写入文件
docx.generate(out);

代码解释:我们首先创建了一个文档对象docx,然后添加了一些文本内容,最后将其生成到指定的文件中。

六、jsword换气记号——解决文档修复问题

jsword除了文档操作外,还有自身的一些特色功能。比如,jsword可以读取换气记号,来让我们更好的定位文档中的问题。


const jsword = require('jsword');
let wordFile = null;
// 获取word文件
jsword.read(wordFile).then(function(docx){
  // 解析换气记号
  const breaks = docx.getBreaks();
  console.log(breaks);
});

代码解释:我们通过jsword.read读取word文件,然后使用docx.getBreaks来获取文档中的换气记号,便于我们更好的定位到文档的具体问题。

总结

以上就是对于jsword的介绍。这是一款非常强大、免费、开源的文档操作工具,使用jsword,我们可以实现文档的快速转换、文档预览、文档编辑等等多种操作。而且,由于jsword开源,我们还可以在其中加入自己所需要的特色功能。相信通过jsword的介绍,大家对于这款工具已经有了较为深入的了解,希望大家能够在今后的操作当中有所收获。