玩转 Word 文档之旅:除了常见软件,还有这些神奇的处理方式
平时工作总离不开Word、WPS或Pages这种文字编辑软件,那咱们来讲讲关于Word文档的小秘密。包括如何转成HTML格式,还有一些好用的技巧,这样就能轻松上手!
Word文档的内部结构
你们应该听说过Word文档后面加个'.docx'?这个小技巧能帮我们把文件缩小些,速度也更快。要查看内容的话,把'.docx'换成'.zip'再解压就行了。其实docx文档怎么压缩图片,Word文档就是一堆XML文件和多媒体文件的集合。比如那个叫「abao.docx」的文档,解压后,你会发现头像文件都藏在「word/media」里。
这个设计让我们在word里可以随心所欲地编排各种信息,而且还很好操作,能清楚看到文档里的数字!如果懂点文档排布的话,那就能更轻松地进行编辑和管理。
将Word文档转换为HTML
-rw-rw-r--@ 1 fer staff 1641 7 11 01:25 [Content_Types].xml
drwxr-xr-x@ 3 fer staff 96 7 11 09:41 _rels
drwxr-xr-x@ 4 fer staff 128 7 11 09:41 docProps
drwxr-xr-x@ 13 fer staff 416 7 11 09:42 word
建站的时候,我们常常要将Word文档转成HTML。这样就能在网上看到文档内容,还能设计出简单大方的网页。可由于.docx和HTML的格式不同,对于复杂些的文档,转换起来可能有些费劲。
咱们做网页编程时能用上那个叫FileAPI的东西读取Word文档的文章。别看它只是个小插件,可厉害着呐,找Blob对象内的内容都没问题,甚至还能extraordinary地给你整出文档的数据对象。接下来,就看你怎么操作了,Word文档轻松变身HTML文档不是梦!
图片处理与转换
在改Word文档为HTML时,别忘了处理图片!通常来说,Word里的图就变成了个叫DataURL的东西,直接镶进HTML里了。但如果你用Javascript,就能根据需要调整图片处理器,把它们编成Base64编码格式。
export function readFileInputEventAsArrayBuffer(event, callback) {
const file = event.target.files[0];
const reader = new FileReader();
reader.onload = function(loadEvent: Event) {
const arrayBuffer = loadEvent.target["result"];
callback(arrayBuffer);
};
reader.readAsArrayBuffer(file);
}
想缩小图片?直接转回Blob格式。图片加载速度飞快,网站还会更快!
JSZip库的应用
mammoth.convertToHtml({ arrayBuffer })
想把Word文档换成其他格式?用JSZip库就OK!这个库可以帮忙搞懂ZIP文件的创建、读取和修改,处理Word文档里的压缩包就是小菜一碟了。学着用JSZip库,你会更明白Word文档转换的门道~
开源转换器的使用
想把Word转成HTML格式?别怕,教你个开源神器——「html-to-docx」。这玩意儿是用JavaScript做成的,操作超容易。有了这些免费工具,轻轻松松搞定文档转换,提高工作效率不在话下!
let options = {
convertImage: mammoth.images.imgElement(function(image) {
return image.read("base64").then(function(imageBuffer) {
return {
src: "data:" + image.contentType + ";base64," + imageBuffer
};
});
})
};
总结与展望
搞定Word文档后,你要是知道该如何导出成HTML页面就太好了!这些小秘籍可以让我们操作起来更顺手,提高工作效率,快点试试看!
const mammothOptions = {
convertImage: mammoth.images.imgElement(function(image) {
return image.read("base64").then(async (imageBuffer) => {
const result = await uploadBase64Image(imageBuffer, image.contentType);
return {
src: result.data.path // 获取图片线上的URL地址
};
});
})
};
各位,来说说看你是如何搞定Word文档的呀?分享下你的小技巧,别忘了点赞文章这样大家都能学到新东西了。
async function uploadBase64Image(base64Image, mime) {
const formData = new FormData();
formData.append("file", base64ToBlob(base64Image, mime));
return await axios({
method: "post",
url: "http://localhost:3000/uploadfile", // 本地图片上传的API地址
data: formData,
config: { headers: { "Content-Type": "multipart/form-data" } }
});
}