Skip to content

小程序在线打开 pdf、docx 等格式文件&下载读取 css 文件

小程序支持在线打开 doc, xls, ppt, pdf, docx, xlsx, pptx 格式文件。使用到的 api 有wx.downloadFilewx.openDocument

举个例子,打开在线 docx 格式文件

js
function look() {
	wx.downloadFile({
		// url: 'http://www.cztouch.com/upfiles/soft/testpdf.pdf',
		url: 'https://www.nmpa.gov.cn/directory/web/nmpa/images/1665371105474033774.docx',
		filePath: wx.env.USER_DATA_PATH + '/' + '隐私协议.docx',
		// fileType: 'docx',
		success: function (res) {
			wx.openDocument({
				filePath: res.filePath,
				// fileType: 'docx',
				showMenu: true,
				success: function () {
					
				},
				fail() {
					
				}
			});
		}
	});
}

小程序读取 css 文件

为什么要读取 css 文件?因为我有一个想法:每次修改字体图标,都要重新下载 iconfont.css 文件然后替换,很是麻烦。可不可以每次打开小程序都自动下载 iconfont.css,然后引入使用?

虽然结局失败了 (项目怎么引入下载下来的 css 文件呢?),但是每次打开小程序能够做到自动下载 iconfont.css,读取里面的内容。

代码如下:

js
async function readCss() {

	const fs = wx.getFileSystemManager()

	try {
		fs.accessSync(`${wx.env.USER_DATA_PATH}/style`)
	} catch (e) {
		fs.mkdirSync(`${wx.env.USER_DATA_PATH}/style`, true)
	}

	try {
		fs.accessSync(`${wx.env.USER_DATA_PATH}/style/iconfont.css`)
	} catch (e) {
		fs.mkdirSync(`${wx.env.USER_DATA_PATH}/style/iconfont.css`, true)
	}
	
	await new Promise((resolve, reject) => {
		wx.downloadFile({
			url: 'https://at.alicdn.com/t/c/font_2298467_uud05ygbeih.css?spm=a313x.7781069.1998910419.60&file=font_2298467_uud05ygbeih.css',
			success: function (res) {
				fs.saveFile({
					tempFilePath: res.tempFilePath,
					filePath: `${wx.env.USER_DATA_PATH}/style/iconfont.css`,
					success(res) {
						resolve('保存成功');
					},
					fail(e) {
						reject('保存失败');
					}
				})
			}
		});
	})

	const res = fs.readFileSync(`${wx.env.USER_DATA_PATH}/style/iconfont.css`, 'utf-8', 0)

	console.log('读取 css 文件内容', res)

}

最后我想到可不可以利用 webpack 来下载读取 css 文件呢?然而这个问题得留在后面来解决了,不然就在这个小问题上浪费太多时间了。

Released under the MIT License.