1.下載Centos鏡像
docker pull centos
2.進(jìn)入容器
docker run -it -d centos /bin/bash
-t: 讓docker分配一個(gè)偽終端并綁定到容器的標(biāo)準(zhǔn)輸入上;
-i: 讓容器的標(biāo)準(zhǔn)輸入保持打開(kāi),這時(shí)bash命令才不會(huì)自動(dòng)退出;
-d: 讓容器在后臺(tái)運(yùn)行。
如果沒(méi)有-d,則會(huì)進(jìn)入容器交互模式,輸入exit命令后,會(huì)導(dǎo)致容器退出運(yùn)行狀態(tài)。加上-d, exit命令退出容器后,容器仍然能保持后臺(tái)運(yùn)行狀態(tài)。
執(zhí)行docker exec進(jìn)入centos容器
docker exec -it centos /bin/bash
3.安裝libreoffice、中文字體庫(kù)等所需的軟件
yum search libreoffice
可以看到除了libreoffice,還有很多office單一的子模塊
yum目前的版本只到5.3.6.1,如果要安裝最新的版本,需要從官網(wǎng)下載最新的安裝包安裝
libreoffice.x86_64 : Free Software Productivity Suite
libreoffice-calc.x86_64 : LibreOffice Spreadsheet Application
libreoffice-writer.x86_64 : LibreOffice Word Processor Application
libreoffice-draw.x86_64 : LibreOffice Drawing Application
......
因?yàn)橹恍枰幚鞥xcel,所以就只安裝libreoffice-calc.x86_64
yum install libreoffice-calc.x86_64
yum groupinstall "Fonts"
yum groupinstall "Input Methods"
4.生成安裝了libreoffice、中文字體等軟件的docker 鏡像
執(zhí)行exit命令退出容器后在宿主機(jī)執(zhí)行
docker commit CONTAINER_ID alexxu/librexlsx
通過(guò)docker ps|grep centos查看centos容器的container id.
5.停掉剛才運(yùn)行的centos容器
docker stop CONTAINER_ID或是container_name(這里是centos)
6.啟動(dòng)上面新生成的docker 鏡像alexxu/librexlsx
docker run –name libxlsx -it -d -v /$HOME/data:/root/pdf alexxu/librexlsx /bin/bash
-v創(chuàng)建共享目錄,將宿主機(jī)目錄/$HOME/data 映射到容器的/root/pdf目錄 ,把要轉(zhuǎn)換的Excel文件indicator.xlsx放到/$HOME/data目錄。
進(jìn)入容器
docker run -it -d centos /bin/bash
執(zhí)行命令:
soffice --headless --invisible --convert-to pdf --outdir /root/pdf /root/pdf/indicator.xlsx
則在/$HOME/data目錄可以看到生成的indicator.pdf
注意:如果你上面yum安裝的是libreoffice而不是像我單獨(dú)安裝libreoffice-calc模塊,導(dǎo)出時(shí),導(dǎo)出命令最好加上output filter:calc_pdf_Export;如果是轉(zhuǎn)word文檔,則output filter類(lèi)型為:writer_pdf_Export;這樣明確告訴libreoffice是要哪個(gè)模塊去轉(zhuǎn)換。
soffice --headless --invisible --convert-to pdf:calc_pdf_Export --outdir /root/pdf /root/pdf/indicator.xlsx
因?yàn)槲也淮_定libreoffice是不是能夠自動(dòng)識(shí)別你要轉(zhuǎn)換的是Excel還是Word.
libreoffice命令行參數(shù)作用可以查看:https://help.libreoffice.org/Common/Starting_the_Software_With_Parameters/zh-CN
如果是在容器外執(zhí)行。
docker exec libxlsx /bin/bash -c 'soffice --headless --invisible --convert-to pdf --outdir /root/pdf /root/pdf/indicator.xlsx'
以上就是怎樣在linux環(huán)境通過(guò)libreoffice將Excel轉(zhuǎn)換為pdf的詳細(xì)過(guò)程。
如果想轉(zhuǎn)換為html, 則將參數(shù) --convert-to pdf改為 --convert-to html就可以。