Handles custom processing of images while saving to Markdown.
Invoked once per image; mutate MarkdownImageSavingArgs to control the URI embedded in the Markdown output and/or redirect where the image bytes are written.
The IMarkdownImageSavingCallback type exposes the following members:
importioimportosfromGroupDocs.ConversionimportConverterfromGroupDocs.Conversion.Options.ConvertimportWordProcessingConvertOptions,MarkdownImageSavingArgsfromGroupDocs.Conversion.FileTypesimportWordProcessingFileType# Scenario 1 — capture image bytes in memory and embed placeholder idsclassCaptureImagesCallback(IMarkdownImageSavingCallback):def__init__(self,images:dict):self._index=0self._images=imagesdefImageSaving(self,args:MarkdownImageSavingArgs):img_id=f"image{self._index}"self._index+=1buffer=io.BytesIO()self._images[img_id]=bufferargs.ImageStream=buffer# redirect image bytes into our bufferargs.ImageFileName=img_id# placeholder URI written into the .mdargs.KeepImageStreamOpen=True# keep buffer readable after Convert() returnscaptured={}options=WordProcessingConvertOptions()options.Format=WordProcessingFileType.Mdoptions.MarkdownOptions.ImageSavingCallback=CaptureImagesCallback(captured)converter=Converter("source.pdf")converter.Convert("output.md",options)# captured["image0"], captured["image1"], ... now hold the image bytes# Scenario 2 — persist images to disk alongside the .md and reference them by file nameclassFileImagesCallback(IMarkdownImageSavingCallback):def__init__(self,output_folder:str):self._output_folder=output_folderself._index=0defImageSaving(self,args:MarkdownImageSavingArgs):file_name=f"image{self._index}.png"self._index+=1path=os.path.join(self._output_folder,file_name)args.ImageStream=open(path,"wb")# converter will write image bytes and close the fileargs.ImageFileName=file_name# written into the .md as options=WordProcessingConvertOptions()options.Format=WordProcessingFileType.Mdoptions.MarkdownOptions.ImageSavingCallback=FileImagesCallback("./out")converter=Converter("source.pdf")converter.Convert("./out/output.md",options)# ./out/image0.png, ./out/image1.png, ... are written and closed by the converter.