jspdf用于html轉pdf。需借助html2canvas遍歷頁面中的dom節點,渲染成canvas image,再用jspdf把圖片轉為pdf。
office-to-pdf 用于word轉pdf。依賴于libreOffice,需提前安裝
?
mac安裝libreOffice
1.首先需要jdk8,并配置環境變量
2.再就是需要安裝libreOffice。?
下載 LibreOffice_7.3.0_MacOS_x86-64.dmg 雙擊安裝
soffice --version 提示command not found
mac默認安裝在/Applications下,
在/Applications/LibreOffice.app/Contents/MacOS/soffice 找到了soffice,并且./soffice --version可以運行。
3.需要配置環境變量或者軟連接到/usr/local/bin (ps:mac只能軟連接到/usr/local/bin里面,/usr/bin,/usr/sbin即使使用sudo也沒權限)
3-1.嘗試了軟連接到/usr/local/bin,運行soffice出錯No Info.plist file in application bundle or no NSPrincipalClass in the Info.plist file, exiting
3-2.于是改成配置環境變量。
#查看文件內容
cat ~/.zshrc
#如果文件不存在,或者存在直接進入編輯狀態
vim ~/.zshrc
#鍵入i,開始編輯文件,在文件中添加下列內容并保存
export PATH="/Applications/LibreOffice.app/Contents/MacOS:$PATH"
source ~/.bash_profile
再執行soffice命令,執行成功。可以編寫jspdf代碼了。
ubuntu安裝libreOffice:
apt install openjdk-11-jre-headless
apt install libreoffice-common
apt install libreoffice-writer
apt-get install libreoffice-pdfimport //安裝下面的包可以安裝所有能用到的依賴
apt-get install ttf-wqy-zenhei??//安裝中文字體庫 fix pdf轉換中文亂碼問題
soffice --headless --invisible --convert-to pdf model.docx??//測試轉換pdf
3. npm安裝office-to-pdf并使用
npm install office-to-pdf -S
讀取word文件并轉換為pdf的代碼如下:
const toPdf = require("office-to-pdf");
var docxData = fs.readFileSync( "model.docx");
toPdf(docxData).then((pdfBuffer: any) => {
? ?fs.writeFileSync(path.resolve(__dirname, 'Pdfs/out.pdf'), pdfBuffer);
});