Prezentációk importálása PDF vagy HTML-ből Pythonon keresztül Java-val

Bevezetés

Az Aspose.Slides for Python via Java képes PDF oldalak vagy HTML tartalmat PowerPoint diákra alakítani a Microsoft PowerPoint nélkül. A SlideCollection osztály biztosítja a addFromPdf és a addFromHtml metódusokat az importált tartalom bemutatóhoz való hozzáadásához.

Ha nagyobb ellenőrzésre van szükség a HTML elhelyezése felett, a SlideCollection.insertFromHtml be tudja illeszteni a generált diákat egy gyűjtemény indexén, vagy elkezdheti kitölteni a rendelkezésre álló helyet egy meglévő dián. A hosszú HTML automatikusan több diára kerül felosztásra, a forrás lehet karakterlánc vagy folyam, és külső erőforrások betölthetők az ExternalResourceResolver segítségével egy alap‑URI-val. A visszaadott Slide tömb az érintett és az újonnan létrehozott diákat azonosítja.

Importálás PDF-ből

A PDF dokumentumot PowerPoint bemutatóvá konvertáláshoz importálja a tartalmát a diagyűjteménybe és mentse az eredményt PPTX fájlba.

pdf-to-powerpoint

  1. Hozzon létre egy új Presentation objektumot.
  2. Hívja meg a addFromPdf metódust a PDF fájl elérési útjával.
  3. Hívja meg a save metódust a SaveFormat.Pptx használatával a bemutató PPTX fájlba írásához.

A következő Python példa importál egy PDF dokumentumot és elmenti a generált diát PowerPoint bemutatóként:

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()

Az alapértelmezett üres dia a bemutatóban marad, mert az importálás hozzáfűzi a diákat. Ha csak az importált oldalakat szeretné megtartani, törölje a diagyűjteményt a SlideCollection.clear hívásával importálás előtt.

Az addFromPdf metódus visszaadja az általa hozzáadott diákat, ami hasznos, ha csak az importált diákon szeretne feldolgozni.

Importálás HTML-ből

Az Aspose.Slides képes diák létrehozására HTML dokumentumból is. A forrás lehet HTML szöveg vagy folyam. Az alábbi lépések fájlfolyam használatával mutatják be a folyamatot:

  1. Hozzon létre egy új Presentation objektumot.
  2. Nyissa meg a HTML fájlt olvasásra, és adja át a folyamot a addFromHtml metódusnak.
  3. Hívja meg a save metódust a SaveFormat.Pptx használatával az eredmény PPTX fájlba írásához.

A következő Python példa importál egy HTML dokumentumot és elmenti a generált diát PowerPoint bemutatóként:

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 tartalom beillesztése

Használja a SlideCollection.insertFromHtml metódust, amikor a HTML‑ből generált diákat egy meghatározott pozícióba kell helyezni a hozzáfűzés helyett. Az index nulla‑alapú és meghatározza azt a pozíciót, ahol az importálás kezdődik.

A useSlideWithIndexAsStart argumentum szabályozza, hogyan használja az importáló ezt a pozíciót:

  • Ha False, az importáló új diákot hoz létre a megadott indexnél és eltolja a következő diákat.
  • Ha True, az importáló a megadott indexű meglévő dián lévő szabad helyet használja a tartalom elhelyezéséhez. Ha a HTML nem fér el, az Aspose.Slides automatikusan felosztja és további diákat szúr be közvetlenül a kezdő dia után.

A SlideCollection.insertFromHtml egy Slide objektumok tömbjét adja vissza. Ha a beszúrás új diákon kezdődik, minden visszaadott elem újonnan létrehozott. Ha egy meglévő diát használunk kiindulásként, a tömb tartalmazza az érintett diát, majd az esetleges új túlfutó diákokat. Ennek a tömbnek az ellenőrzésével elkerülhető a prezentáció diálszámából való számítás a ható tartomány meghatározásához.

HTML beillesztése új diákként

Az alábbi példa HTML‑t ad meg karakterláncként, és a generált diákat a gyűjtemény 1‑es indexére illeszti. A False átadása az existing diákat változatlanul hagyja, csak eltolja őket a hely biztosításához.

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()

Kezdés egy meglévő diárról

A következő példa HTML‑t egy folyamként ad meg. Megtartja a fejlécalakzatot a meglévő sablon diáron, az importálást az elfoglalt terület alá kezdi, és a hosszú szöveg továbbfolytatódik új diákra.

A HTML tartalmaz egy relatív képelérési utat is. Egy ExternalResourceResolver szerzi be az erőforrást, míg az alap‑URI megmondja az importálónak, hogyan kell feloldani a images/logo.png hivatkozást. Ebben a példában a fájl a html-assets/images/logo.png helyen várható.

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()

GYIK

Képes‑e az Aspose.Slides táblázatokat felismerni PDF importáláskor?

Igen. Hozzon létre egy PdfImportOptions objektumot, hívja meg a setDetectTables metódust True értékkel, és adja át az opciókat a addFromPdf metódusnak. A táblázat‑felismerés minősége a forrás PDF szerkezetétől és összetettségétől függ.