Εισαγωγή παρουσιάσεων από PDF ή HTML στην Python μέσω Java
Εισαγωγή
Aspose.Slides for Python via Java μπορεί να μετατρέπει σελίδες PDF ή περιεχόμενο HTML σε διαφάνειες PowerPoint χωρίς το Microsoft PowerPoint. Η κλάση SlideCollection παρέχει τις μεθόδους addFromPdf και addFromHtml για την προσθήκη εισαγόμενου περιεχομένου σε μια παρουσίαση.
Για μεγαλύτερο έλεγχο στην τοποθέτηση του HTML, το SlideCollection.insertFromHtml μπορεί να εισάγει τις παραγόμενες διαφάνειες σε ένα δείκτη της συλλογής ή να αρχίσει να γεμίζει τον διαθέσιμο χώρο σε μια υπάρχουσα διαφάνεια. Το μακρύ HTML σελιδοποιείται αυτόματα σε πρόσθετες διαφάνειες, η πηγή μπορεί να παρασχεθεί ως συμβολοσειρά ή ροή, και εξωτερικά περιουσιακά στοιχεία μπορούν να φορτωθούν μέσω του ExternalResourceResolver με μια βασική URI. Ο πίνακας Slide που επιστρέφεται προσδιορίζει τις επηρεαζόμενες και τις νεοδημιουμένες διαφάνειες.
Εισαγωγή από PDF
Για να μετατρέψετε ένα έγγραφο PDF σε παρουσίαση PowerPoint, εισάγετε το περιεχόμενό του στη συλλογή διαφανειών και αποθηκεύστε το αποτέλεσμα ως αρχείο PPTX.

- Δημιουργήστε ένα νέο αντικείμενο Presentation.
- Καλέστε τη μέθοδο addFromPdf με τη διαδρομή προς το αρχείο PDF.
- Καλέστε τη μέθοδο save με το SaveFormat.Pptx για να γράψετε την παρουσίαση σε αρχείο PPTX.
Το παρακάτω παράδειγμα Python εισάγει ένα έγγραφο PDF και αποθηκεύει τις παραγόμενες διαφάνειες ως παρουσίαση PowerPoint:
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()
Η προεπιλεγμένη κενή διαφάνεια παραμένει στην παρουσίαση επειδή η εισαγωγή προσθέτει διαφάνειες. Για να διατηρήσετε μόνο τις εισαγόμενες σελίδες, καθαρίστε τη συλλογή διαφανειών με το SlideCollection.clear πριν την εισαγωγή.
Η μέθοδος addFromPdf επιστρέφει τις διαφάνειες που προσθέτει, κάτι που είναι χρήσιμο όταν χρειάζεται να επεξεργαστείτε μόνο τις εισαγόμενες διαφάνειες.
Tip
Δοκιμάστε τη δωρεάν εφαρμογή ιστού PDF to PowerPoint για να δείτε αυτή τη ροή εργασίας μετατροπής σε δράση.Εισαγωγή από HTML
Το Aspose.Slides μπορεί επίσης να δημιουργήσει διαφάνειες από ένα έγγραφο HTML. Η πηγή μπορεί να παρασχεθεί ως κείμενο HTML ή ως ροή. Τα παρακάτω βήματα χρησιμοποιούν ροή αρχείου:
- Δημιουργήστε ένα νέο αντικείμενο Presentation.
- Ανοίξτε το αρχείο HTML για ανάγνωση και περάστε τη ροή στη μέθοδο addFromHtml.
- Καλέστε τη μέθοδο save με το SaveFormat.Pptx για να γράψετε το αποτέλεσμα σε αρχείο PPTX.
Το παρακάτω παράδειγμα Python εισάγει ένα έγγραφο HTML και αποθηκεύει τις παραγόμενες διαφάνειες ως παρουσίαση PowerPoint:
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
Χρησιμοποιήστε το SlideCollection.insertFromHtml όταν οι διαφάνειες που παράγονται από HTML πρέπει να τοποθετηθούν σε συγκεκριμένη θέση αντί για προσθήκη στο τέλος. Ο δείκτης είναι μηδενικής βάσης και προσδιορίζει τη θέση από όπου ξεκινά η εισαγωγή.
Το όρισμα useSlideWithIndexAsStart ελέγχει τον τρόπο με τον οποίο ο εισαγωγέας χρησιμοποιεί αυτή τη θέση:
- Όταν είναι
False, ο εισαγωγέας δημιουργεί νέες διαφάνειες στη συγκεκριμένη θέση και μετακινεί τις διαφάνειες που ακολουθούν. - Όταν είναι
True, ο εισαγωγέας αρχίζει να τοποθετεί περιεχόμενο στον διαθέσιμο χώρο της υπάρχουσας διαφάνειας σε αυτή τη θέση. Αν το HTML δεν χωράει, το Aspose.Slides το σελιδοποιεί αυτόματα και εισάγει πρόσθετες διαφάνειες αμέσως μετά τη διαφάνεια έναρξης.
Το SlideCollection.insertFromHtml επιστρέφει έναν πίνακα αντικειμένων Slide. Όταν η εισαγωγή ξεκινά σε νέες διαφάνειες, κάθε στοιχείο που επιστρέφεται είναι νεοδημιουργούμενο. Όταν χρησιμοποιείται μια υπάρχουσα διαφάνεια ως αρχή, ο πίνακας περιλαμβάνει τηffected διαφάνεια και στη συνέχεια τυχόν νέες διαφάνειες υπερχείλισης. Μπορείτε να εξετάσετε αυτόν τον πίνακα αντί να υπολογίσετε την επηρεαζόμενη περιοχή από το σύνολο διαφανειών της παρουσίασης.
Εισαγωγή HTML ως νέες διαφάνειες
Το παρακάτω παράδειγμα παρέχει HTML ως συμβολοσειρά και εισάγει τις παραγόμενες διαφάνειες στο δείκτη της συλλογής 1. Η μεταβίβαση του False αφήνει τις υπάρχουσες διαφάνειες αμετάβλητες εκτός από τη μετατόπισή τους για να δημιουργηθεί χώρος.
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()
Έναρξη σε υπάρχουσα διαφάνεια
Το επόμενο παράδειγμα παρέχει το HTML μέσω ροής. Διατηρεί ένα σχήμα κεφαλίδας στη διαφάνεια προτύπου, αρχίζει την εισαγωγή κάτω από την κατειλημμένη περιοχή και αφήνει το μακρύ κυρίως κείμενο να συνεχίσει σε νέες διαφάνειες.
Το HTML περιέχει επίσης σχετικό URL εικόνας. Ένας ExternalResourceResolver αποκτά τον πόρο, ενώ η βασική URI λέει στον εισαγωγέα πώς να επιλύσει το images/logo.png. Σε αυτό το παράδειγμα, το αρχείο αναμένεται στο html-assets/images/logo.png.
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()
Warning
Ένας ανεξέλεγκτος εξωτερικός επιλυτής πόρων μπορεί να διαβάσει τοπικούς ή δικτυακούς πόρους που αναφέρονται από το HTML. Για μη αξιόπιστες εισροές, επικυρώστε και καθαρίστε τα URL πόρων έναντι λίστας επιτρεπόμενων σχημάτων, καταλόγων και κέντρων πριν την εισαγωγή του HTML.Συχνές ερωτήσεις
Μπορεί το Aspose.Slides να εντοπίσει πίνακες κατά την εισαγωγή PDF;
Ναι. Δημιουργήστε ένα αντικείμενο PdfImportOptions, καλέστε το setDetectTables με True και περάστε τις επιλογές στο addFromPdf. Η ποιότητα της αναγνώρισης πινάκων εξαρτάται από τη δομή και την πολυπλοκότητα του πηγαίου PDF.