Importieren von Präsentationen aus PDF oder HTML in Python über Java
Einleitung
Aspose.Slides für Python über Java kann PDF‑Seiten oder HTML‑Inhalte in PowerPoint‑Folien umwandeln, ohne Microsoft PowerPoint zu benötigen. Die Klasse SlideCollection stellt addFromPdf und addFromHtml zum Anhängen importierter Inhalte an eine Präsentation bereit.
Für mehr Kontrolle über die HTML‑Platzierung kann SlideCollection.insertFromHtml generierte Folien an einem Sammlungs‑Index einfügen oder beginnen, verfügbaren Platz auf einer bestehenden Folie zu füllen. Langes HTML wird automatisch über zusätzliche Folien verteilt, die Quelle kann als Zeichenkette oder Stream bereitgestellt werden, und externe Ressourcen können über ExternalResourceResolver mit einem Basis‑URI geladen werden. Das zurückgegebene Slide‑Array identifiziert die betroffenen und neu erstellten Folien.
Import aus PDF
Um ein PDF‑Dokument in eine PowerPoint‑Präsentation zu konvertieren, importieren Sie dessen Inhalt in die Folien‑Sammlung und speichern das Ergebnis als PPTX‑Datei.

- Erstellen Sie ein neues Presentation Objekt.
- Rufen Sie addFromPdf mit dem Pfad zur PDF‑Datei auf.
- Rufen Sie save mit SaveFormat.Pptx auf, um die Präsentation in einer PPTX‑Datei zu speichern.
Das folgende Python‑Beispiel importiert ein PDF‑Dokument und speichert die erzeugten Folien als PowerPoint‑Präsentation:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation()
try:
presentation.getSlides().addFromPdf("document.pdf")
presentation.save("presentation.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Die standardmäßige leere Folie bleibt in der Präsentation erhalten, weil der Import Folien anhängt. Um nur die importierten Seiten zu behalten, leeren Sie die Folien‑Sammlung mit SlideCollection.clear vor dem Import.
Die Methode addFromPdf gibt die hinzugefügten Folien zurück, was nützlich ist, wenn Sie nur die importierten Folien verarbeiten müssen.
Tipp
Probieren Sie die kostenlose Web‑App PDF to PowerPoint, um diesen Konvertierungs‑Workflow in Aktion zu sehen.Import aus HTML
Aspose.Slides kann auch Folien aus einem HTML‑Dokument erstellen. Die Quelle kann als HTML‑Text oder als Stream bereitgestellt werden. Die folgenden Schritte verwenden einen Dateistream:
- Erstellen Sie ein neues Presentation Objekt.
- Öffnen Sie die HTML‑Datei zum Lesen und übergeben den Stream an addFromHtml.
- Rufen Sie save mit SaveFormat.Pptx auf, um das Ergebnis in einer PPTX‑Datei zu speichern.
Das folgende Python‑Beispiel importiert ein HTML‑Dokument und speichert die erzeugten Folien als PowerPoint‑Präsentation:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
from java.io import FileInputStream
presentation = Presentation()
try:
html_stream = FileInputStream("page.html")
try:
presentation.getSlides().addFromHtml(html_stream)
finally:
html_stream.close()
presentation.save("presentation.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
HTML‑Inhalt einfügen
Verwenden Sie SlideCollection.insertFromHtml, wenn HTML‑generierte Folien an einer bestimmten Position platziert werden müssen, anstatt angehängt zu werden. Der Index ist nullbasiert und gibt die Position an, an der der Import beginnt.
Das Argument useSlideWithIndexAsStart steuert, wie der Importeur diese Position verwendet:
- Wenn es
Falseist, erstellt der Importeur neue Folien an dem angegebenen Index und verschiebt die nachfolgenden Folien. - Wenn es
Trueist, beginnt der Importeur, Inhalte im verfügbaren Platz der bestehenden Folie an diesem Index zu platzieren. Passt das HTML nicht, paginiert Aspose.Slides es automatisch und fügt unmittelbar nach der Startfolie zusätzliche Folien ein.
SlideCollection.insertFromHtml gibt ein Array von Slide‑Objekten zurück. Beginnt die Einfügung auf neuen Folien, ist jedes zurückgegebene Element neu erstellt. Wird eine bestehende Folie als Start verwendet, enthält das Array diese betroffene Folie, gefolgt von allen neuen Überlauf‑Folien. Sie können dieses Array inspizieren, anstatt den betroffenen Bereich anhand der Folienzahl der Präsentation zu berechnen.
HTML als neue Folien einfügen
Das folgende Beispiel liefert HTML als Zeichenkette und fügt die erzeugten Folien am Sammlungs‑Index 1 ein. Die Übergabe von False lässt die bestehenden Folien unverändert, abgesehen vom Verschieben, um Platz zu schaffen.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation()
try:
layout_slide = presentation.getLayoutSlides().get_Item(0)
presentation.getSlides().addEmptySlide(layout_slide)
presentation.getSlides().addEmptySlide(layout_slide)
insert_index = 1
html = "<html><body><h1>Quarterly update</h1><p>This content is inserted before the slide that was at index 1.</p></body></html>"
inserted_slides = presentation.getSlides().insertFromHtml(insert_index, html, False)
for slide in inserted_slides:
print("Inserted slide index:", presentation.getSlides().indexOf(slide))
presentation.save("presentation-with-inserted-html.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Auf einer bestehenden Folie beginnen
Das nächste Beispiel liefert das HTML über einen Stream. Es behält eine Kopfzeilenform auf der bestehenden Vorlagenfolie bei, beginnt den Import unterhalb des belegten Bereichs und lässt den langen Inhalt auf neue Folien fortsetzen.
Das HTML enthält außerdem eine relative Bild‑URL. Ein ExternalResourceResolver ruft die Ressource ab, während der Basis‑URI dem Importeur mitteilt, wie images/logo.png aufgelöst werden soll. In diesem Beispiel wird die Datei unter html-assets/images/logo.png erwartet.
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ExternalResourceResolver, Presentation, SaveFormat, ShapeType
from java.io import ByteArrayInputStream
presentation = Presentation()
try:
template_slide = presentation.getSlides().get_Item(0)
header = template_slide.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 680, 60)
header.getTextFrame().setText("Product roadmap")
html_parts = ["<html><body><img src='images/logo.png' width='120' height='60'><h2>Roadmap details</h2>"]
for item_index in range(1, 61):
html_parts.append(f"<p style='font-size:24pt'>Roadmap item {item_index}: detailed implementation notes.</p>")
html_parts.append("</body></html>")
html = "".join(html_parts)
html_data = html.encode("utf-8")
resolver = ExternalResourceResolver()
base_directory = Path("html-assets").resolve()
base_uri = base_directory.as_uri() + "/"
html_stream = ByteArrayInputStream(html_data)
try:
affected_slides = presentation.getSlides().insertFromHtml(0, html_stream, resolver, base_uri, True)
for slide in affected_slides:
print("Affected slide index:", presentation.getSlides().indexOf(slide))
finally:
html_stream.close()
presentation.save("presentation-with-html-overflow.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Warnung
Ein uneingeschränkter externer Ressourcen‑Resolver kann lokale oder Netzwerk‑Ressourcen, die im HTML referenziert werden, lesen. Für nicht vertrauenswürdige Eingaben sollten Sie Ressource‑URLs anhand einer Positivliste zulässiger Schemata, Verzeichnisse und Hosts validieren und bereinigen, bevor Sie das HTML importieren.FAQ
Kann Aspose.Slides Tabellen beim Importieren eines PDFs erkennen?
Ja. Erstellen Sie ein PdfImportOptions Objekt, rufen Sie setDetectTables mit True auf und übergeben Sie die Optionen an addFromPdf. Die Qualität der Tabellenerkennung hängt von der Struktur und Komplexität des Quell‑PDFs ab.