我使用slides-java对pptx添加文本水印后,该pptx通过某些PowerPoint打开会提示需要修复无法打开

public static void pptAddFirstFoot(String sourceFile, String targetFile, String text) throws Exception {
    int textHeight = 30;
    Presentation pres = null;
    try {
        pres = new Presentation(sourceFile);
        double slideHeight = pres.getSlideSize().getSize().getHeight();
        ISlide firstSlide = pres.getSlides().get_Item(0);
        // x,y,width,height
        IAutoShape footer = firstSlide.getShapes().addAutoShape(
                ShapeType.Decagon, 10, (float) (slideHeight - textHeight), 450, textHeight, false);
        footer.addTextFrame(" ");
        ITextFrame txtFrame = footer.getTextFrame();

        IParagraph para = txtFrame.getParagraphs().get_Item(0);
        para.getParagraphFormat().setAlignment(FontAlignment.Automatic);
        IPortion portion = para.getPortions().get_Item(0);
        portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
        portion.getPortionFormat().setFontHeight(8);
        portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(java.awt.Color.DARK_GRAY);
        portion.setText(text);
        pres.save(targetFile, OfficeMergeTypeEnum.getEnumByFileType(FileUtils.getSuffix(sourceFile)).getCode());
    } catch (Exception e) {
        exception(e, targetFile);
    } finally {
        if (Objects.nonNull(pres)) {
            pres.dispose();
        }
    }
}
1 Like

@caii,
感谢您联系支持。我正在处理这个问题,将尽快回复您。

@andrey.potapov
谢谢需要我提供pptx文件吗?我发现我只要读取什么都不做,然后直接输出就会发生这种情况,产生出来的pptx在windows版的PowerPoint下打开会提示文件已损坏无法需要修复,但是在Microsoft PowerPoint for mac 上可以正常打开,在wps上也能正常打开,不确定是不是兼容性问题。

1 Like

我现在甚至什么都不做都会出现这个问题

public static void pptAddFirstFoot2(String sourceFile, String targetFile, String text) throws Exception {
    Presentation pres = null;
    try {
        pres = new Presentation(sourceFile);
        pres.save(targetFile, com.aspose.slides.SaveFormat.Pptx);
    } catch (Exception e) {
        exception(e, targetFile);
    } finally {
        if (Objects.nonNull(pres)) {
            pres.dispose();
        }
    }
}

img_v3_025v_22e0d938-39d4-462d-bb93-7d90fe5e976g.jpg (127.6 KB)

windows上的PowerPoint版本是这个,Microsoft 365 企业版

1 Like

你好,我已成功复现引起这个原因是slide中含有某种图表类型引起的
图表测试.pptx.zip (53.6 KB)

图表测试.pptx代表原始能够通过Microsoft 365 企业版能打开制作的,然后我只是用slides读一下然后save,再通过Microsoft 365 打开就提示文件损坏需要修复,点击修复后,有图表的那一页幻灯片里面的东西就会消失

1 Like

我使用的slides版本是22.8,但是我看最新的版本是23.11,我试了一下用最新的版本貌似可以。(手动呆无辜,我先多测一下吧…

你好,还是存在问题的,即使通过最新版的aspose-slide读一下,还是会导致Microsoft 365再次打开提示文件损坏,修复后,幻灯片里面的图表类型就会消失,而且被读过的pptx分享到微信,微信里面打开预览几秒后会自动弹出
@andrey.potapov

@caii,
感谢您的耐心。我已经使用版本22.8成功重现了您描述的问题,但在我的一侧,使用版本23.11时问题未能重现。请再次检查一下。

你好,这个版本还是不行
img_v3_025s_6b6e5877-e3fd-4876-ab89-0f57e2a0986g.jpg (65.3 KB)
@andrey.potapov

1 Like

@caii,
我们在内部问题跟踪系统中开设了以下新的工单,并将根据Free Support Policies中提到的条款进行修复。

Issue ID(s): SLIDESJAVA-39373

如果您需要优先支持,并且想直接与我们的付费支持管理团队联系,您可以获取 Paid Support Services

1 Like

感谢,希望能早日得到解决!

@caii,
我们的开发人员将尽力解决此问题。感谢您使用 Aspose.Slides。

1 Like

@caii,
很抱歉,我们无法重现这个问题。我们在许多版本的PowerPoint上进行了测试。此外,我们还在MS Office 365版本2311(Build 17029.20068 Current Channel)中测试了演示文稿,一切都正常。

看起来问题存在于MS Office 365(Monthly Enterprise Channel)的这个特定版本中,似乎是PowerPoint中的一个错误。

无论如何:

  1. 请更新微软办公套件到最新版本,然后检查结果。
  2. 另外,您能与我们分享生成的PPTX文件吗?
  3. 请提供您的环境信息(操作系统版本,JDK版本)?

@andrey.potapov
你好,我想知道是不是每个aspose slides版本处理的ppt其实是对应兼容一个范围内的MS PowerPoint 版本的?这样就能解释被某个特定版本的aspose slides处理过的ppt在某些PowerPoint版本上面可以正常打开而某些版本是无法正常打开的,稍等我给下我的场景。

@andrey.potapov

我的正式环境操作系统:
image.png (26.7 KB)
我的正式环境JDK:
image.png (12.6 KB)

我的本地操作系统:
image.png (74.6 KB)
我的本地JDK:
image.png (6.5 KB)

在以上两个环境中我使用"aspose-slides:jdk16:22.8"直接read一下我的问题ppt然后输出,就会导致某些PowerPoint版本打开提示修复,具体的我发现的那些版本能打开那些不能打开我下一条回复。
ppt文件(包含读取前-图表测试3和读取后-图表测试3-read)
归档.zip (148.5 KB)

我的示例代码:

public static void main(String[] args) {
    Locale locale = new Locale("zh", "CN");
    Locale.setDefault(locale);
    System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
    final com.aspose.slides.License lic = new com.aspose.slides.License();
    lic.setLicense(new ByteArrayInputStream(LICENSE.getBytes(StandardCharsets.UTF_8)));
    Presentation pres = null;
    try {
        pres = new Presentation("/XX/Downloads/图表测试3.pptx");
        pres.save("/XX/Downloads/图表测试3-read.pptx", SaveFormat.Pptx);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (Objects.nonNull(pres)) {
            pres.dispose();
        }
    }
}

@andrey.potapov

接上条回复

读之前能打开,读之后不能打开的版本:
img_v3_025s_6b6e5877-e3fd-4876-ab89-0f57e2a0986g.jpg (65.3 KB)

img_v3_025v_22e0d938-39d4-462d-bb93-7d90fe5e976g.jpg (127.6 KB)

读之前能打开,读之后也能打开的版本:
image.jpg (95.1 KB)

image.png (95.7 KB)

WPS…

@caii,

请查看以下文章:

在22.8版本之后有很多更新,正如我之前所写的,我在使用最新版本时解决了这个问题。您可以分享使用 Aspose.Slides 23.11 的结果吗?

@andrey.potapov
你好,当我使用aspose.slides 23.11时
读之前能打开,读之后不能打开的版本
image.jpg (82.9 KB)

但是 MS Office 365版本2311(Build 17029.20068)是可以正常打开了
img_v3_025v_22e0d938-39d4-462d-bb93-7d90fe5e976g.jpg (127.6 KB)

@caii,
谢谢您提供的详细信息。我会尽快回复您。

1 Like