国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

利用python程序生成word和PDF文檔的方法

2019-11-25 16:21:28
字體:
來源:轉載
供稿:網友

一、程序導出word文檔的方法

將web/html內容導出為world文檔,再java中有很多解決方案,比如使用Jacob、Apache POI、Java2Word、iText等各種方式,以及使用freemarker這樣的模板引擎這樣的方式。php中也有一些相應的方法,但在python中將web/html內容生成world文檔的方法是很少的。其中最不好解決的就是如何將使用js代碼異步獲取填充的數據,圖片導出到word文檔中。

1. unoconv

功能:

1.支持將本地html文檔轉換為docx格式的文檔,所以需要先將網頁中的html文件保存到本地,再調用unoconv進行轉換。轉換效果也不錯,使用方法非常簡單。

/# 安裝sudo apt-get install unoconv/# 使用unoconv -f pdf *.odtunoconv -f doc *.odtunoconv -f html *.odt

缺點:

      1.只能對靜態html進行轉換,對于頁面中有使用ajax異步獲取數據的地方也不能轉換(主要是要保證從web頁面保存下來的html文件中有數據)。

      2.只能對html進行轉換,如果頁面中有使用echarts,highcharts等js代碼生成的圖片,是無法將這些圖片轉換到word文檔中;

      3.生成的word文檔內容格式不容易控制。

2. python-docx

功能:

1.python-docx是一個可以讀寫word文檔的python庫。

使用方法:

1.獲取網頁中的數據,使用python手動排版添加到word文檔中。

from docx import Documentfrom docx.shared import Inchesdocument = Document()document.add_heading('Document Title', 0)p = document.add_paragraph('A plain paragraph having some ')p.add_run('bold').bold = Truep.add_run(' and some ')p.add_run('italic.').italic = Truedocument.add_heading('Heading, level 1', level=1)document.add_paragraph('Intense quote', style='IntenseQuote')document.add_paragraph( 'first item in unordered list', style='ListBullet')document.add_paragraph( 'first item in ordered list', style='ListNumber')document.add_picture('monty-truth.png', width=Inches(1.25))table = document.add_table(rows=1, cols=3)hdr_cells = table.rows[0].cellshdr_cells[0].text = 'Qty'hdr_cells[1].text = 'Id'hdr_cells[2].text = 'Desc'for item in recordset: row_cells = table.add_row().cells row_cells[0].text = str(item.qty) row_cells[1].text = str(item.id) row_cells[2].text = item.descdocument.add_page_break()document.save('demo.docx')
from docx import Documentfrom docx.shared import Inchesdocument = Document()for row in range(9): t = document.add_table(rows=1,cols=1,style = 'Table Grid') t.autofit = False #很重要! w = float(row) / 2.0 t.columns[0].width = Inches(w)document.save('table-step.docx')

缺點:

功能非常弱。有很多限制比如不支持模板等,只能生成簡單格式的word文檔。

二、程序導出PDF文檔方法

1.pdfkit

功能:

      1.wkhtmltopdf主要用于HTML生成PDF。

      2.pdfkit是基于wkhtmltopdf的python封裝,支持URL,本地文件,文本內容到PDF的轉換,其最終還是調用wkhtmltopdf命令。是目前接觸到的python生成pdf效果較好的。

優點:

      1.wkhtmltopdf:利用webkit內核將HTML轉為PDF

            webkit是一個高效、開源的瀏覽器內核,包括Chrome和Safari在內的瀏覽器都使用了這個內核。Chrome打印當前網頁的功能,其中有一個選項就是直接“保存為 PDF”。

      2.wkhtmltopdf使用webkit內核的PDF渲染引擎來將HTML頁面轉換為PDF。高保真,轉換質量很好,且使用非常簡單。
使用方法:

/# 安裝pip install pdfkit/# 使用import pdfkitpdfkit.from_url('http://google.com', 'out.pdf')pdfkit.from_file('test.html', 'out.pdf')pdfkit.from_string('Hello!', 'out.pdf')

缺點:

      1.對使用echarts,highcharts這樣的js代碼生成的圖標無法轉換為pdf(因為它的功能主要是將html轉換為pdf,而不是將js轉換為pdf)。對于純靜態頁面的轉換效果還是不錯的。

      2.其他

其他生成pdf的插件還有:weasyprint,reportlab,PyPDF2等,經簡單試驗都不如pdfkit效果好,且有些用法復雜。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南涧| 绥滨县| 博野县| 普兰店市| 延边| 车险| 视频| 城固县| 辛集市| 团风县| 西乌珠穆沁旗| 韩城市| 高阳县| 长岛县| 融水| 南涧| 玉林市| 会理县| 思茅市| 彭山县| 普兰县| 锡林浩特市| 九江县| 平舆县| 朝阳区| 宁安市| 扎兰屯市| 开阳县| 楚雄市| 甘德县| 农安县| 玛多县| 长治市| 大同县| 榆中县| 子长县| 呼和浩特市| 宁南县| 澳门| 佛坪县| 密云县|