Μετατροπή Παρουσιών PowerPoint σε Έγγραφα Word με Python μέσω Java
Επισκόπηση
Αυτό το άρθρο εξηγεί πώς να μετατρέψετε παρουσιάσεις PowerPoint και OpenDocument σε έγγραφα Word χρησιμοποιώντας το Aspose.Slides for Python via Java μαζί με το Aspose.Words for Java. Το Aspose.Slides αποδίδει κάθε διαφάνεια και διαβάζει το κείμενό της, ενώ το Aspose.Words δημιουργεί το έγγραφο Word μέσω του JPype. Το Microsoft Office δεν απαιτείται.
Το παραγόμενο έγγραφο περιέχει μια εικόνα διαφάνειας ακολουθούμενη από επεξεργάσιμο κείμενο που εξάγεται από τα κορυφαίου επιπέδου αυτόματα σχήματα της διαφάνειας. Η εικόνα διατηρεί την οπτική εμφάνιση της διαφάνειας· μεμονωμένα σχήματα, γραφήματα και πίνακες δεν μετατρέπονται σε επεξεργάσιμα αντικείμενα Word. Το εξαγόμενο κείμενο δεν διατηρεί την αρχική μορφοποίηση ή θέση του κειμένου.
Μετατροπή PowerPoint σε Word
- Εγκαταστήστε Aspose.Slides for Python via Java και ένα συμβατό περιβάλλον εκτέλεσης Java.
- Κατεβάστε Aspose.Words for Java. Τοποθετήστε το κύριο αρχείο JAR σε κατάλογο
libδίπλα στο σενάριό σας και μετονομάστε το σεaspose-words.jar, ή προσαρμόστε τη διαδρομή στο παράδειγμα ώστε να ταιριάζει με το αρχείο που κατεβάσατε. - Τοποθετήστε την παρουσίαση εισόδου,
sample.pptx, στον τρέχοντα κατάλογο εργασίας. Η διαδρομήlib/aspose-words.jarείναι επίσης σχετική με αυτόν τον κατάλογο. - Εκτελέστε τον παρακάτω κώδικα Python για να δημιουργήσετε το
output.docx.
Το παράδειγμα φορτώνει την πηγή με Presentation και αποδίδει τις διαφάνειες με Slide.getImage. Χρησιμοποιεί DocumentBuilder από το Aspose.Words για να εισάγει τις εικόνες και το κείμενο στο έγγραφο 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()
# Προσαρμόστε την εικόνα της διαφάνειας στο πλάτος της περιοχής κειμένου, διατηρώντας την αναλογία διαστάσεων.
builder.insertImage(image_bytes, content_width, image_height)
builder.writeln()
# Προσθέστε απλό κείμενο από τα αυτόματα σχήματα ανώτερου επιπέδου, συμπεριλαμβανομένων των πλαισίων κειμένου.
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()
Κάθε διαφάνεια ξεκινά σε νέα σελίδα. Το μακρύ εξαγόμενο κείμενο ή οι ιδιαίτερα ψηλές εικόνες διαφάνειας μπορεί να απαιτούν πρόσθετες σελίδες. Ο κώδικας προσθέτει αλλαγές σελίδας μόνο μεταξύ διαφανειών και απελευθερώνει την παρουσίαση και τις αποδομένες εικόνες σε μπλοκ finally. Η JVM παραμένει διαθέσιμη για επόμενες μετατροπές στην ίδια διαδικασία Python.
Συχνές Ερωτήσεις
Ποιες βιβλιοθήκες απαιτούνται;
Χρησιμοποιήστε Aspose.Slides for Python via Java, JPype, ένα συμβατό περιβάλλον εκτέλεσης Java και Aspose.Words for Java. Και οι δύο βιβλιοθήκες λειτουργούν στην ίδια JVM. Το Aspose.Slides διαχειρίζεται την παρουσίαση· το Aspose.Words γράφει το έγγραφο Word.
Μπορώ να μετατρέψω αρχεία PPT και ODP, καθώς και PPTX;
Ναι. Αντικαταστήστε το sample.pptx με αρχείο PPT ή ODP. Δείτε το Supported File Formats για τις μορφές εισόδου παρουσίασης.
Είναι όλο το περιεχόμενο της διαφάνειας επεξεργάσιμο στο Word;
Όχι. Κάθε διαφάνεια εισάγεται ως στατική εικόνα, με απλό κείμενο από τα κορυφαίου επιπέδου αυτόματα σχήματα προστεμένο από κάτω. Το κείμενο εντός ομάδων, πινάκων, SmartArt και γραφημάτων, καθώς και οι σημειώσεις του παρουσιαστή, δεν εξάγονται από αυτό το παράδειγμα. Οι κινήσεις και οι μεταβάσεις δεν αναπαράγονται στο έγγραφο Word.
Μπορώ να αποθηκεύσω ως DOC αντί για DOCX;
Ναι. Αλλάξτε το όνομα του εξαγώμενου αρχείου σε output.doc. Το Aspose.Words επιλέγει τη μορφή εξόδου από την επέκταση του ονόματος αρχείου όταν χρησιμοποιείται αυτή η υπερφόρτωση αποθήκευσης.