PowerPoint prezentációk konvertálása Markdown formátumba Pythonon keresztül Java-val
Áttekintés
Aspose.Slides for Python via Java képes PPT és PPTX prezentációkat Markdown formátumba konvertálni dokumentációhoz, statikus weboldalakhoz, tartalom‑migrációhoz és verziókezelési folyamatokhoz. Kiválaszthatja a Markdown változatot, szabályozhatja, hogyan kerül renderelésre a diák tartalma, és megadhatja, hogy az exportált képek hol legyenek tárolva, valamint hogyan hivatkozzon rájuk a generált Markdown.
Alapértelmezés szerint a Markdown export szöveg‑csak kimenetet használ. A vizuális tartalom exportálásához állítsa be az export típust a MarkdownSaveOptions.setExportType metódussal a MarkdownExportType felsorolt Sequential vagy Visual értékére. A Sequential a diák elemeit külön‑külön és sorrendben rendereli, míg a Visual a csoportos elemeket együttesen tartja, hogy megőrizze a vizuális kapcsolatot. A TextOnly érték nem generál kép‑erőforrásokat, ezért ebben a módban a kép‑mentési visszahívások nem lesznek meghívva.
Átalakítás Markdown formátumba
Töltse be a forrásfájlt a Presentation osztállyal, majd hívja meg a Presentation.save metódust a SaveFormat felsorolt Md értékével.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("presentation.pptx")
try:
presentation.save("presentation.md", SaveFormat.Md)
finally:
presentation.dispose()
Minden példa a presentation.pptx fájlt a jelenlegi munkakönyvtárból olvassa. Telepítse az Aspose.Slides for Python via Java‑t és egy kompatibilis Java futtatókörnyezetet a példák futtatása előtt. Indítsa el a JVM‑et egyszer minden Python folyamatban.
Markdown változat kiválasztása
A MarkdownSaveOptions.setFlavor metódus szabályozza a kimenethez használt Markdown specifikációt. A Flavor felsorlat tartalmazza a CommonMark‑ot, a GitHub Flavored Markdown‑ot és más támogatott változatokat.
Az alábbi példa egy prezentációt CommonMark‑ként exportál:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Flavor, MarkdownSaveOptions, Presentation, SaveFormat
presentation = Presentation("presentation.pptx")
try:
options = MarkdownSaveOptions()
options.setFlavor(Flavor.CommonMark)
presentation.save("presentation.md", SaveFormat.Md, options)
finally:
presentation.dispose()
Képek exportálása az alapértelmezett helyi mentési viselkedéssel
A MarkdownSaveOptions osztály két módszert biztosít a helyi mentésű képek konfigurálásához:
- setBasePath adja meg a Markdown dokumentum és erőforrásai alapkönyvtárát.
- setImagesSaveFolderName adja meg a képek alkönyvtárát. Alapértelmezett értéke
Images.
Az alábbi példa vizuális tartalmat renderel, a képeket az output/assets könyvtárba írja, és relatív kép hivatkozásokat hoz létre a Markdown dokumentumban:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from pathlib import Path
from asposeslides.api import MarkdownExportType, MarkdownSaveOptions, Presentation, SaveFormat
output_directory = Path("output")
output_directory.mkdir(parents=True, exist_ok=True)
presentation = Presentation("presentation.pptx")
try:
options = MarkdownSaveOptions()
options.setExportType(MarkdownExportType.Visual)
options.setBasePath(str(output_directory))
options.setImagesSaveFolderName("assets")
markdown_path = output_directory / "presentation.md"
presentation.save(str(markdown_path), SaveFormat.Md, options)
finally:
presentation.dispose()
Ez a viselkedés szolgál fallback‑ként is, amikor egy egyedi kép‑mentő kezelő False‑t ad vissza.
Képmentés és Markdown hivatkozások testreszabása
Használja a MarkdownSaveOptions.setImageSaving metódust, hogy regisztráljon egy visszahívót a nem‑SVG bitmap és metafájl erőforrásokhoz, amelyek a Markdown export során keletkeznek. Ennek MarkdownImageSavingHandler visszahívása megkapja a kép objektumot, annak ImageFormat értékét, valamint a generált Markdown hivatkozást egyelemes String[] paraméterként. Mentse vagy töltsön fel a kapott formátummal, és cserélje le a link[0]‑t arra a hivatkozásra, amelynek a Markdown kimenetben meg kell jelennie.
Az SVG formátumban keletkező erőforrások külön kerülnek kezelésre. Regisztráljon egy visszahívót a MarkdownSaveOptions.setSvgImageSaving metódussal. Ennek MarkdownSvgImageSavingHandler visszahívása megkap egy SvgImage objektumot és a egyelemes String[] link paramétert. Az SVG‑nek nincs ImageFormat argumentuma; írja vagy töltse fel az XML adatát a SvgImage.getSvgData metódussal. Az export módjától és a vizuális csoportosítástól függően egy forrás‑prezentációban lévő SVG rasterizálható vagy más tartalommal egyesíthető; a keletkező nem‑SVG erőforrás akkor kerül átadásra a kép‑mentő visszahívónak. Regisztrálja mindkét visszahívót, ha minden exportált vizuális erőforrás egyedi feldolgozást igényel.
A visszahívó visszatérési értéke határozza meg, ki dolgozza fel a képet:
Truevisszatérés után a visszahívó mentette, feltöltötte, átalakította vagy egyébként feldolgozta a képet, és érvényes értéket állított be alink[0]‑ban. Az Aspose.Slides ezt az értéket írja be a Markdown dokumentumba, és nem hajtja végre az alapértelmezett helyi mentést.Falsevisszatérés esetén az Aspose.Slides helyben menti a képet, és a linket a MarkdownSaveOptions.setBasePath és a MarkdownSaveOptions.setImagesSaveFolderName beállításaival generálja.
Important
EgyTrue‑t visszaadó kezelő vállalja a kép felelősségét. Ha a kezelő True‑t ad vissza anélkül, hogy érvényes, nem üres linket állítana be, a export InvalidOperationException‑nel meghiúsul.
Pythonban regisztrálja ezeket a visszahívókat a jpype.JProxy‑val, amely a Java visszahívó interfészt az invoke metóduson keresztül valósítja meg. A link argumentum módosítható Java string tömb: konvertálja a link[0]‑t Python stringgé a feldolgozás előtt, majd az új URL‑t rendelje vissza a link[0]‑ba.
Képek mentése CDN eredeti könyvtárba és külső URL-ek használata
Az alábbi példa a cdn-origin/presentations/quarterly-report‑et kezeli egy felcsatolt vagy szinkronizált CDN eredeti könyvtárként. Minden kezelő kinyeri a generált fájlnevet, a képet ebbe a saját könyvtárba menti, és a helyi hivatkozást egy nyilvános CDN URL‑re cseréli. A minta magában nem végez hálózati feltöltést: az URL csak akkor lesz érvényes, ha a könyvtár CDN eredetként fel van csatolva vagy fájljait a CDN‑re publikálják. Objektumtár esetén cserélje le a fájlrendszer írást a tárhely SDK feltöltési műveletére, és csak a feltöltés sikeres befejezése után állítsa be a link[0]‑t.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from pathlib import Path
from urllib.parse import quote
from asposeslides.api import MarkdownExportType, MarkdownSaveOptions, Presentation, SaveFormat
output_directory = Path("output")
public_base_url = "https://cdn.example.com/presentations/quarterly-report"
storage_directory = Path("cdn-origin", "presentations", "quarterly-report")
output_directory.mkdir(parents=True, exist_ok=True)
storage_directory.mkdir(parents=True, exist_ok=True)
def get_file_name(generated_link):
normalized_link = str(generated_link).replace("\\", "/")
return normalized_link.rsplit("/", 1)[-1]
def save_image(image, image_format, link):
if image.getWidth() < 128 or image.getHeight() < 128:
return False
file_name = get_file_name(link[0])
storage_path = storage_directory / file_name
image.save(str(storage_path), image_format)
encoded_file_name = quote(file_name, safe="")
link[0] = public_base_url + "/" + encoded_file_name
return True
def save_svg(svg_image, link):
file_name = get_file_name(link[0])
storage_path = storage_directory / file_name
svg_data = svg_image.getSvgData()
try:
storage_path.write_bytes(bytes(svg_data))
except OSError as error:
print(f"Could not save the SVG image: {error}")
return False
encoded_file_name = quote(file_name, safe="")
link[0] = public_base_url + "/" + encoded_file_name
return True
image_handler = jpype.JProxy("com.aspose.slides.MarkdownSaveOptions$MarkdownImageSavingHandler", dict(invoke=save_image))
svg_handler = jpype.JProxy("com.aspose.slides.MarkdownSaveOptions$MarkdownSvgImageSavingHandler", dict(invoke=save_svg))
presentation = Presentation("presentation.pptx")
try:
options = MarkdownSaveOptions()
options.setExportType(MarkdownExportType.Visual)
options.setBasePath(str(output_directory))
options.setImagesSaveFolderName("fallback-images")
options.setImageSaving(image_handler)
options.setSvgImageSaving(svg_handler)
markdown_path = output_directory / "presentation.md"
presentation.save(str(markdown_path), SaveFormat.Md, options)
finally:
presentation.dispose()
A bitmap kezelő szándékosan False‑t ad vissza 128 × 128 pixelnél kisebb képek esetén, így az Aspose.Slides ezeket a képeket a output/fallback-images könyvtárba menti az alapértelmezett viselkedés szerint. Nagyobb bitmap és metafájl erőforrások, valamint az SVG erőforrások a saját kód által kerülnek kezelve. Például egy generált helyi hivatkozás, mint fallback-images/image1.png, https://cdn.example.com/presentations/quarterly-report/image1.png‑re alakul. A kezelők csak fájlrendszer‑útvonalakat használnak fájlok írásához; a Markdown‑ba írt hivatkozások perjelekkel és URL‑kódolt fájlnevekkel jelennek meg. Ugyanezt a szabályt alkalmazza relatív linkek építésénél: használjon /‑t, ne a platform‑specifikus könyvtárelválasztót.
GYIK
Kezelhet egyetlen visszahívó egyszerre raszteres és SVG képeket?
Nem. Használja a MarkdownSaveOptions.setImageSaving‑t bitmap és metafájl erőforrásokhoz, valamint a MarkdownSaveOptions.setSvgImageSaving‑t SVG‑ként exportált erőforrásokhoz. Az első visszahívó egy képobjektumot és egy ImageFormat értéket ad, a második egy SvgImage objektumot, amelynek SVG adatait a SvgImage.getSvgData‑val olvashatja. Egy forrás‑SVG, amely exportálás során rasterizálódik, az image‑saving visszahívóval kerül feldolgozásra.
Mi történik, ha egy képmentő visszahívó False‑t ad vissza?
Az Aspose.Slides az alapértelmezett helyi mentési viselkedését használja. A kép helyét és a generált hivatkozást a MarkdownSaveOptions.setBasePath és a MarkdownSaveOptions.setImagesSaveFolderName beállításaival szabályozza.
Megadhat egy visszahívó URL‑t anélkül, hogy a képet helyileg mentené?
Igen. A visszahívó feltöltheti a képet objektumtárba vagy átadhatja egy másik szolgáltatásnak, a kapott URL‑t a link[0]‑ba állíthatja, és True‑t ad vissza. A visszahívónak magának kell elvégeznie a feldolgozást; a True visszatérés megakadályozza az alapértelmezett helyi mentést.
Miért dob a Markdown export InvalidOperationException hibát egy visszahívótól?
Ez a kivétel akkor fordul elő, ha a visszahívó True‑t ad vissza, de nem ad meg érvényes linket. A relatív útvonalat vagy külső URL‑t, amelyet a Markdown‑ba kell írni, a True visszatérés előtt állítsa be.
Milyen útvonalelválasztót kell használni a kép hivatkozásoknál?
A Markdown hivatkozásokban és URL‑ekben használjon perjeleket (/). A fájlrendszer‑útvonalakhoz csak a pathlib.Path‑t használja, majd a Markdown referencia építésekor vagy normalizálásakor alkalmazza a perjeleket.
Megmaradnak a hiperhivatkozások a Markdown export során?
Igen. A szöveg hyperlinks megmarad standard Markdown linkként. A diák transitions és animations nem kerülnek konvertálásra.
Alakíthatók a prezentációk párhuzamosan Markdown‑ba?
Feldolgozhat különböző prezentációs fájlokat párhuzamosan, de ne ossza meg ugyanazt a Presentation példányt szálak között. Kövesse a multithreading guidelines‑t, és minden fájlhoz használjon külön példányt.