Heim > Backend-Entwicklung > Python-Tutorial > So generieren Sie Word- und PDF-Dokumente mit dem Python-Programm

So generieren Sie Word- und PDF-Dokumente mit dem Python-Programm

高洛峰
Freigeben: 2017-02-20 10:18:29
Original
2616 Leute haben es durchsucht

Dieser Artikel führt Sie hauptsächlich in die Methode zur Verwendung des Python-Programms zum Generieren von Word- und PDF-Dokumenten ein. Der Artikel enthält meiner Meinung nach einen gewissen Referenzwert für alle Freunde in Not. Werfen Sie einen Blick darauf.

1. So exportieren Sie Word-Dokumente über das Programm

Web-/HTML-Inhalte in Weltdokumente exportieren. Es gibt viele Lösungen in Java. Zum Beispiel die Verwendung verschiedener Methoden wie Jacob, Apache POI, Java2Word, iText usw. sowie die Verwendung von Template-Engines wie Freemarker. Es gibt auch einige entsprechende Methoden in PHP, aber es gibt in Python nur sehr wenige Möglichkeiten, Weltdokumente aus Web-/HTML-Inhalten zu generieren. Am schwierigsten zu lösen ist die Verwendung von JS-Code, um die ausgefüllten Daten asynchron abzurufen und die Bilder in ein Word-Dokument zu exportieren.

1. unoconv

Funktion:

1. Unterstützt die Konvertierung lokaler HTML-Dokumente in Dokumente im docx-Format, daher müssen Sie die HTML-Dateien lokal auf der Webseite speichern und dann unoconv zur Konvertierung aufrufen. Der Konvertierungseffekt ist ebenfalls gut und die Verwendungsweise ist sehr einfach.

\# 安装
sudo apt-get install unoconv
\# 使用
unoconv -f pdf *.odt
unoconv -f doc *.odt
unoconv -f html *.odt
Nach dem Login kopieren

Nachteile:

1. Für einige Seiten kann nur statisches HTML konvertiert werden Orte, an denen Ajax zum asynchronen Abrufen von Daten verwendet wird, können nicht konvertiert werden (hauptsächlich, um sicherzustellen, dass die von der Webseite gespeicherten HTML-Dateien Daten enthalten).

2. Wenn die Seite Bilder enthält, die mit Echarts, Highcharts und anderen JS-Codes generiert wurden, können diese Bilder nicht in Word-Dokumente konvertiert werden

3. Das Inhaltsformat des generierten Word-Dokuments ist nicht einfach zu kontrollieren.

2.python-docx

Funktion:

1.python- docx ist eine Python-Bibliothek, die Word-Dokumente lesen und schreiben kann.

Verwendung:

1. Holen Sie sich die Daten von der Webseite, verwenden Sie Python, um sie manuell zu setzen, und fügen Sie sie dem Word-Dokument hinzu.

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')
Nach dem Login kopieren

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')
Nach dem Login kopieren

Nachteile:

Die Funktion ist sehr schwach. Es gibt viele Einschränkungen, z. B. keine Unterstützung von Vorlagen usw., und es können nur Word-Dokumente im einfachen Format erstellt werden.

2. Methode zum Exportieren von PDF-Dokumenten aus dem Programm

1.pdfkit

Funktion:

1.wkhtmltopdf wird hauptsächlich zum Generieren von PDF aus HTML verwendet.

2.pdfkit ist ein auf wkhtmltopdf basierendes Python-Paket, das die Konvertierung von URLs, lokalen Dateien und Textinhalten in PDF unterstützt. Es ruft letztendlich den Befehl wkhtmltopdf auf. Es ist das beste Python, das mir bisher zum Generieren von PDFs begegnet ist.

Vorteile:

1.wkhtmltopdf: Verwenden Sie den Webkit-Kernel, um HTML in PDF zu konvertieren

Webkit ist ein effizientes, offenes Quelle Der Browser-Kernel, der von Browsern wie Chrome und Safari verwendet wird. Die Chrome-Funktion zum Drucken der aktuellen Webseite verfügt über eine Option zum direkten „Speichern als PDF“.

2.wkhtmltopdf verwendet die PDF-Rendering-Engine des Webkit-Kerns, um HTML-Seiten in PDF zu konvertieren. Hohe Wiedergabetreue, hervorragende Konvertierungsqualität und sehr einfach zu bedienen.
Verwendung:

\# 安装
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')
Nach dem Login kopieren

Nachteile:

1. Für die Verwendung von Echarts, Highcharts usw. Durch JS-Code generierte Symbole können nicht in PDF konvertiert werden (da ihre Funktion hauptsächlich darin besteht, HTML in PDF zu konvertieren, nicht JS in PDF). Der Konvertierungseffekt für rein statische Seiten ist immer noch gut.

2. Andere

Andere Plug-ins zum Generieren von PDFs sind: weasyprint, reportlab, PyPDF2 usw. Nach einfachen Tests sind sie nicht so effektiv wie pdfkit, und einige sind es kompliziert in der Anwendung.

Weitere verwandte Artikel zur Verwendung von Python-Programmen zum Generieren von Word- und PDF-Dokumenten finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage