Pptx转md怎么支持图片上传到远端服务器 or 怎么保证pptx的文本不被转义

我希望将pptx转换为md时,将pptx的所有图片上传到远端服务器,但是我不希望图片直接落盘,因此我才用了如下的方式:
1、遍历所有的shape,找到所有的图片,下载并上传到我的服务器
2、删除图片shape,并在原位置插入图片的url(markdown格式)
但是这样转换,会导致我插入的文本被转义,导致md无法正确识别图片,有什么解决办法么?
或者有没有现场的更好的实践方案?

var pres = new Presentation(String.valueOf(Paths.get(prePath, "test_complex.pptx")));
Map<IShape, String> shapeUrlMap = new HashMap<>();
for (var slide : pres.getSlides()) {
    for (var shape : slide.getShapes()) {
        if (shape instanceof IPictureFrame) {
            // 取图片二进制、上传到服务器
            IPictureFrame picShape = (IPictureFrame) shape;
            byte[] imageBytes = picShape.getPictureFormat().getPicture().getImage().getBinaryData();
            // String imageUrl = uploadImageToRemote(imageBytes); // 自定义上传
            String imageUrl = "1111.png";

            shapeUrlMap.put(shape, imageUrl);

        }
    }
}
for (Map.Entry<IShape, String> entry : shapeUrlMap.entrySet()) {
    IShape shape = entry.getKey();
    IBaseSlide slide = shape.getSlide();
    String imageUrl = entry.getValue();

    // 删除原图片 shape
    slide.getShapes().remove(shape);

    // 插入新的 shape(文本框)——内容为 Markdown 图片语法
    IAutoShape newTextShape = slide.getShapes().addAutoShape(ShapeType.Rectangle,
            shape.getX(), shape.getY(), shape.getWidth(), shape.getHeight());
    newTextShape.getTextFrame().setText("![](" + imageUrl + ")");
}
<groupId>com.aspose</groupId>
    <artifactId>aspose-slides</artifactId>
<version>24.8</version> 

@Endergarten

在将PPTX转换为Markdown时,如果您希望上传所有图片到远端服务器并避免文本被转义,可以考虑以下方法:

  1. 上传图片:您已经在代码中实现了遍历所有形状并上传图片的逻辑,这是正确的做法。

  2. 避免文本转义:在插入Markdown格式的图片链接时,确保使用正确的Markdown语法。您可以使用newTextShape.getTextFrame().setText("![](" + imageUrl + ")");。如果文本仍然被转义,您可以在插入文本之前清理文本框的内容,确保没有多余的字符。

  3. 示例代码

    // 删除原图片 shape
    slide.getShapes().remove(shape);
    
    // 插入新的 shape(文本框)——内容为 Markdown 图片语法
    IAutoShape newTextShape = slide.getShapes().addAutoShape(ShapeType.Rectangle,
            shape.getX(), shape.getY(), shape.getWidth(), shape.getHeight());
    newTextShape.getTextFrame().setText("![](" + imageUrl + ")");
    
  4. 其他建议:如果问题依然存在,您可以考虑在转换过程中使用一个中间格式(如HTML),然后再将其转换为Markdown,这样可以更好地控制文本和图片的格式。

希望这些建议能帮助您解决问题!如果您有其他问题,请随时询问。

@Endergarten,
感谢您提交需求。很遗憾,我无法使用 Aspose.Slides 达到预期结果。

我们已在内部问题跟踪系统中创建以下新工单,并将按照 Free Support Policies 中提到的条款交付相应修复。

Issue ID(s): SLIDESJAVA-39720

如果您需要优先级支持,您可以获取 Paid Support Services,并可直接访问我们的付费支持管理团队。