Konwertuj prezentacje PowerPoint na dokumenty Word w Pythonie przy użyciu Java
Przegląd
Ten artykuł wyjaśnia, jak konwertować prezentacje PowerPoint i OpenDocument na dokumenty Word przy użyciu Aspose.Slides for Python via Java razem z Aspose.Words for Java. Aspose.Slides renderuje każdy slajd i odczytuje jego tekst, podczas gdy Aspose.Words tworzy dokument Word za pomocą JPype. Microsoft Office nie jest wymagany.
Wynikowy dokument zawiera obraz slajdu, po którym znajduje się edytowalny tekst wyodrębniony z automatycznych kształtów najwyższego poziomu tego slajdu. Obraz zachowuje wizualny wygląd slajdu; poszczególne kształty, wykresy i tabele nie są konwertowane na edytowalne obiekty Word. Wyodrębniony tekst nie zachowuje oryginalnego formatowania ani położenia.
Konwertuj PowerPoint do Word
- Zainstaluj Aspose.Slides for Python via Java oraz kompatybilne środowisko uruchomieniowe Java.
- Pobierz Aspose.Words for Java. Umieść jego główny plik JAR w katalogu
libobok skryptu i zmień jego nazwę naaspose-words.jar, albo dostosuj ścieżkę w przykładzie do pobranego pliku. - Umieść wejściową prezentację
sample.pptxw katalogu roboczym. Ścieżkalib/aspose-words.jarjest również względna względem tego katalogu. - Uruchom poniższy kod Pythona, aby utworzyć
output.docx.
Przykład ładuje źródło za pomocą Presentation i renderuje slajdy przy użyciu Slide.getImage. Używa DocumentBuilder z Aspose.Words do wstawiania obrazów i tekstu do dokumentu Word.
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()
# Dopasuj obraz slajdu do szerokości obszaru tekstowego, zachowując proporcje.
builder.insertImage(image_bytes, content_width, image_height)
builder.writeln()
# Dodaj zwykły tekst z automatycznych kształtów najwyższego poziomu, w tym pola tekstowe.
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()
Każdy slajd zaczyna się na nowej stronie. Długi wyodrębniony tekst lub wyjątkowo wysokie obrazy slajdów mogą wymagać dodatkowych stron. Kod dodaje podziały stron tylko pomiędzy slajdami i zwalnia prezentację oraz renderowane obrazy w blokach finally. JVM pozostaje dostępny dla kolejnych konwersji w tym samym procesie Pythona.
FAQ
Jakie biblioteki są wymagane?
Użyj Aspose.Slides for Python via Java, JPype, kompatybilnego środowiska uruchomieniowego Java oraz Aspose.Words for Java. Obie biblioteki Aspose działają w tej samej JVM. Aspose.Slides obsługuje prezentację; Aspose.Words zapisuje dokument Word.
Czy mogę konwertować pliki PPT i ODP, a nie tylko PPTX?
Tak. Zamień sample.pptx na plik PPT lub ODP. Zobacz Obsługiwane formaty plików aby poznać obsługiwane formaty wejściowe prezentacji.
Czy cała zawartość slajdu jest edytowalna w Wordzie?
Nie. Każdy slajd jest wstawiany jako statyczny obraz, a pod nim dodawany jest zwykły tekst z automatycznych kształtów najwyższego poziomu. Tekst wewnątrz grup, tabel, SmartArt i wykresów, a także notatki prelegenta, nie są wyodrębniane w tym przykładzie. Animacje i przejścia nie są odtwarzane w dokumencie Word.
Czy mogę zapisać jako DOC zamiast DOCX?
Tak. Zmień nazwę pliku wyjściowego na output.doc. Aspose.Words wybiera format wyjściowy na podstawie rozszerzenia nazwy pliku przy użyciu tego przeciążenia metody zapisu.