PowerPoint-presentaties omzetten naar Word-documenten in Python via Java
Overzicht
Dit artikel legt uit hoe u PowerPoint‑ en OpenDocument‑presentaties kunt converteren naar Word‑documenten met Aspose.Slides voor Python via Java in combinatie met Aspose.Words voor Java. Aspose.Slides rendert elke dia en leest de tekst, terwijl Aspose.Words het Word‑document maakt via JPype. Microsoft Office is niet vereist.
Het resulterende document bevat een dia‑afbeelding, gevolgd door bewerkbare tekst die is geëxtraheerd uit de boven‑niveau auto‑vormen van die dia. De afbeelding behoudt het visuele uiterlijk van de dia; afzonderlijke vormen, grafieken en tabellen worden niet omgezet naar bewerkbare Word‑objecten. De geëxtraheerde tekst behoudt niet de oorspronkelijke opmaak of positionering.
PowerPoint naar Word converteren
- Installeer Aspose.Slides for Python via Java en een compatibele Java‑runtime.
- Download Aspose.Words for Java. Plaats het hoofd‑JAR‑bestand in een
lib‑map naast uw script en hernoem het naaraspose-words.jar, of pas het pad in het voorbeeld aan zodat het overeenkomt met het gedownloade bestand. - Plaats de invoer‑presentatie,
sample.pptx, in de werkmap. Het padlib/aspose-words.jaris eveneens relatief ten opzichte van die map. - Voer de volgende Python‑code uit om
output.docxte maken.
Het voorbeeld laadt de bron met Presentation en rendert dia’s met Slide.getImage. Het gebruikt DocumentBuilder van Aspose.Words om de afbeeldingen en tekst in het Word‑document in te voegen.
from pathlib import Path
import jpype
import asposeslides
words_jar = Path("lib/aspose-words.jar").resolve()
jpype.addClassPath(str(words_jar))
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import AutoShape, ImageFormat, Presentation
ByteArrayOutputStream = jpype.JClass("java.io.ByteArrayOutputStream")
Document = jpype.JClass("com.aspose.words.Document")
DocumentBuilder = jpype.JClass("com.aspose.words.DocumentBuilder")
BreakType = jpype.JClass("com.aspose.words.BreakType")
presentation = Presentation("sample.pptx")
try:
document = Document()
builder = DocumentBuilder(document)
page_setup = builder.getPageSetup()
content_width = page_setup.getPageWidth() - page_setup.getLeftMargin() - page_setup.getRightMargin()
slide_size = presentation.getSlideSize().getSize()
image_height = content_width * slide_size.getHeight() / slide_size.getWidth()
slide_count = presentation.getSlides().size()
for slide_index in range(slide_count):
if slide_index > 0:
builder.insertBreak(BreakType.PAGE_BREAK)
slide = presentation.getSlides().get_Item(slide_index)
image = slide.getImage(1.0, 1.0)
try:
image_stream = ByteArrayOutputStream()
try:
image.save(image_stream, ImageFormat.Png)
image_bytes = image_stream.toByteArray()
finally:
image_stream.close()
finally:
image.dispose()
# Pas de dia-afbeelding aan op de breedte van het tekstgebied, behoudende de beeldverhouding.
builder.insertImage(image_bytes, content_width, image_height)
builder.writeln()
# Voeg platte tekst toe van de auto-vormen op het hoogste niveau, inclusief tekstvakken.
for shape in slide.getShapes():
if isinstance(shape, AutoShape):
text_frame = shape.getTextFrame()
if text_frame is not None:
text = str(text_frame.getText())
if text.strip():
builder.writeln(text)
document.save("output.docx")
finally:
presentation.dispose()
Elke dia begint op een nieuwe pagina. Lange geëxtraheerde tekst of uitzonderlijk hoge dia‑afbeeldingen kunnen extra pagina’s vereisen. De code voegt alleen pagina‑eindes toe tussen dia’s en geeft de presentatie en gerenderde afbeeldingen vrij in finally‑blokken. De JVM blijft beschikbaar voor volgende conversies in hetzelfde Python‑proces.
FAQ
Welke bibliotheken zijn vereist?
Gebruik Aspose.Slides for Python via Java, JPype, een compatibele Java‑runtime en Aspose.Words for Java. Beide Aspose‑bibliotheken draaien in dezelfde JVM. Aspose.Slides verwerkt de presentatie; Aspose.Words schrijft het Word‑document.
Kan ik PPT‑ en ODP‑bestanden evenals PPTX converteren?
Ja. Vervang sample.pptx door een PPT‑ of ODP‑bestand. Zie Supported File Formats voor de ondersteunde invoerformaten voor presentaties.
Is alle dia‑inhoud bewerkbaar in Word?
Nee. Elke dia wordt ingevoegd als een statische afbeelding, met platte tekst uit de boven‑niveau auto‑vormen eronder toegevoegd. Tekst in groepen, tabellen, SmartArt en grafieken, evenals aantekeningen voor de spreker, wordt niet geëxtraheerd door dit voorbeeld. Animaties en overgangen worden niet gereproduceerd in het Word‑document.
Kan ik opslaan als DOC in plaats van DOCX?
Ja. Verander de uitvoernaam naar output.doc. Aspose.Words bepaalt het uitvoerformaat op basis van de bestandsextensie bij het gebruik van deze opslaafunctie.