Comment générer des documents Word et PDF à l'aide du programme Python

高洛峰
Libérer: 2017-02-20 10:18:29
original
2580 Les gens l'ont consulté

Cet article vous présente principalement la méthode d'utilisation du programme Python pour générer des documents Word et PDF. L'article donne une introduction détaillée et un exemple de code. Je pense qu'il a une certaine valeur de référence pour tous les amis dans le besoin. Jetez un oeil.

1. Comment exporter des documents Word via le programme

Exporter du contenu Web/html vers des documents mondiaux Il existe de nombreuses solutions en Java. Par exemple, en utilisant diverses méthodes telles que Jacob, Apache POI, Java2Word, iText, etc., ainsi qu'en utilisant des moteurs de modèles tels que freemarker. Il existe également des méthodes correspondantes en PHP, mais il existe très peu de façons de générer des documents du monde à partir de contenu Web/html en Python. La chose la plus difficile à résoudre est de savoir comment utiliser le code js pour obtenir de manière asynchrone les données remplies et exporter les images dans un document Word.

1. unoconv

Fonction :

1. au format docx, vous devez donc enregistrer localement les fichiers html dans la page Web, puis appeler unoconv pour la conversion. L'effet de conversion est également bon et la méthode d'utilisation est très simple.

\# 安装
sudo apt-get install unoconv
\# 使用
unoconv -f pdf *.odt
unoconv -f doc *.odt
unoconv -f html *.odt
Copier après la connexion

Inconvénients :

1. Seul le HTML statique peut être converti, pour les pages Certaines les endroits où ajax est utilisé pour obtenir des données de manière asynchrone ne peuvent pas être convertis (principalement pour garantir qu'il y a des données dans le fichier html enregistrées à partir de la page Web).

2. Seul le HTML peut être converti S'il y a des images générées à l'aide d'echarts, de highcharts et d'autres codes js dans la page, ces images ne peuvent pas être converties en documents Word

3. Le format du contenu du document Word généré n'est pas facile à contrôler.

2. python-docx

Fonction :

1.python- docx est une bibliothèque Python capable de lire et d'écrire des documents Word.

Utilisation :

1. Obtenez les données de la page Web et utilisez Python pour les composer manuellement et les ajouter au document Word.

from docx import Document
from docx.shared import Inches
document = Document()
document.add_heading('Document Title', 0)
p = document.add_paragraph('A plain paragraph having some ')
p.add_run('bold').bold = True
p.add_run(' and some ')
p.add_run('italic.').italic = True
document.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].cells
hdr_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.desc
document.add_page_break()
document.save('demo.docx')
Copier après la connexion

from docx import Document
from docx.shared import Inches
document = 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')
Copier après la connexion

Inconvénients :

La fonction est très faible. Il existe de nombreuses limitations, telles que la non prise en charge des modèles, etc., et ne peut générer que des documents Word au format simple.

2. Méthode d'exportation de documents PDF à partir du programme

1.pdfkit

Fonction :

1.wkhtmltopdf est principalement utilisé pour générer des PDF à partir de HTML.

2.pdfkit est un package python basé sur wkhtmltopdf, qui prend en charge la conversion d'URL, de fichiers locaux et de contenu texte en PDF. Il appelle finalement la commande wkhtmltopdf. C'est le meilleur python que j'ai rencontré jusqu'à présent pour générer des pdf.

Avantages :

1.wkhtmltopdf : utilisez le noyau du webkit pour convertir du HTML en PDF

le webkit est un outil efficace et ouvert source Le noyau du navigateur, utilisé par les navigateurs, notamment Chrome et Safari. La fonction d'impression de la page Web actuelle de Chrome dispose d'une option permettant de "enregistrer directement au format PDF".

2.wkhtmltopdf utilise le moteur de rendu PDF du noyau du webkit pour convertir les pages HTML en PDF. Haute fidélité, excellente qualité de conversion et très simple à utiliser.
Utilisation :

\# 安装
pip install pdfkit
\# 使用
import pdfkit
pdfkit.from_url('http://google.com', 'out.pdf')
pdfkit.from_file('test.html', 'out.pdf')
pdfkit.from_string('Hello!', 'out.pdf')
Copier après la connexion

Inconvénients :

1. Pour utiliser des echarts, des highcharts, etc. Les icônes générées par le code js ne peuvent pas être converties en pdf (car sa fonction est principalement de convertir du html en pdf, pas du js en pdf). L'effet de conversion pour les pages purement statiques est toujours bon.

2. Autres

Les autres plug-ins pour générer des pdf incluent : weasyprint, reportlab, PyPDF2, etc. Après des tests simples, ils ne sont pas aussi efficaces que pdfkit, et certains le sont compliqué à utiliser.

Pour plus d'articles sur la façon d'utiliser les programmes Python pour générer des documents Word et PDF, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal