Free Support Forum - aspose.com

Pptx转pdf转换失败


#1

使用18.11相关包之后转换pptx至pdf后pdf文件不能打开,压缩包中包含我的代码以及原文件和转换后的文件
另外在给该pdf增加水印时会报错
java.lang.OutOfMemoryError: Java heap space
at java.awt.image.DataBufferInt.(DataBufferInt.java:75)
at java.awt.image.Raster.createPackedRaster(Raster.java:467)
at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1032)
at java.awt.image.BufferedImage.(BufferedImage.java:333)
at sun.java2d.loops.GraphicsPrimitive.convertFrom(GraphicsPrimitive.java:557)
at sun.java2d.loops.GraphicsPrimitive.convertFrom(GraphicsPrimitive.java:541)
at sun.java2d.loops.MaskBlit$General.MaskBlit(MaskBlit.java:189)
at sun.java2d.loops.Blit$GeneralMaskBlit.Blit(Blit.java:204)
at sun.java2d.pipe.DrawImage.blitSurfaceData(DrawImage.java:959)
at sun.java2d.pipe.DrawImage.renderImageCopy(DrawImage.java:577)
at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:67)
at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:1014)
at sun.java2d.pipe.ValidatePipe.copyImage(ValidatePipe.java:186)
at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3318)
at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3445)
at com.aspose.slides.internal.ey.class.do(Unknown Source)
at com.aspose.slides.internal.ey.class.do(Unknown Source)
at com.aspose.slides.internal.ey.class.do(Unknown Source)
at com.aspose.slides.internal.ey.class.do(Unknown Source)
at com.aspose.slides.internal.ey.class.do(Unknown Source)
at com.aspose.slides.internal.ey.class.do(Unknown Source)
at com.aspose.slides.internal.ey.static.do(Unknown Source)
at com.aspose.slides.synchronized.do(Unknown Source)
at com.aspose.slides.synchronized.do(Unknown Source)
at com.aspose.slides.GeometryShape.do(Unknown Source)
at com.aspose.slides.PictureFrame.do(Unknown Source)
at com.aspose.slides.GroupShape.do(Unknown Source)
at com.aspose.slides.Slide.for(Unknown Source)
at com.aspose.slides.Slide.do(Unknown Source)
at com.aspose.slides.Slide.do(Unknown Source)
at com.aspose.slides.acr.do(Unknown Source)
at com.aspose.slides.acr.do(Unknown Source)

不知道该问题如何处理
增加水印的代码在测试文件中被我注释掉了,您如果想测试可以取消注释


#2

@wdacat,

我观察了您共享的堆栈跟踪,并请求您尝试增加堆大小。 如果仍然存在问题,请提供示例代码和源代码演示再现问题以及操作系统和Java详细信息。


#3

-Xmx2048m -Xms2048m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:NewSize=512m -XX:MaxNewSize=384m
这是我的jdk启动参数2048m难道还不能满足吗


#4

@wdacat,

请提供源代码演示文稿,重现您的问题。 我们将能够在提供所要求的信息时进一步调查该问题。


#5

ppt转pdf测试代码.zip (3.8 KB)
这个是源码
原文件30M我上传了压缩包好几次都上传失败


#6

@wdacat,

我见过示例Java文件。 但是,我还没有找到任何源代码文件使用的结果,这是再现问题。 如果您的演示文稿文件超过3 MB,则需要在某些文件服务器上共享该文件并与我们共享下载链接。


#7

https://box.lenovo.com/l/2n6Ssy
不知道这个您是否可以下载


#8

@wdacat,

我使用Java 8和Mac OS,使用Aspose.Slides for Java 18.11共享了您共享的演示文件。我一直无法观察到这个问题。您能不能在最后分享操作系统和Java详细信息以重现问题。


#9

操作系统是linux java也是java8
这个bug我感觉是因为在这个pdf中会有大量的图片
在保存过程中会消耗很大的内存
我这边观察我的服务器剩余有1G内存空闲
在执行save方法时会消耗掉剩余所有的1G内存然后报错


#10

@wdacat,

我观察了你的意见。我们的问题跟踪系统中添加了ID SLIDESJAVA-37454的错误,以解决此问题。此线程已与故障单关联,以便我们可以在解决问题后与您共享通知


#11

在ppt转换pdf执行save方法时如果ppt中会有一些大于1Mb的图片处理速度就会明显变慢,甚至几十秒
不知道是否有其他可以优化的方法


#12

@wdacat,

我观察了你的评论并记录了一张票以便进一步调查。我请求您的耐心,我们将尽快与您分享好消息。


#13

已经过去一周时间了,不知道您那边是否有关于ppt的save性能优化方案,
另外该ppt文件增加水印时处理时间更加长,是否有一些效率更高的处理水印的算法?
我增加水印的代码片段如下
private Presentation getWatermarkedPresentation(InputStream input, String watermarkText) {
try {
// 载入ppt文件
Presentation pres = new Presentation(input);
// 计算页面大小
int pageWidth = (int) pres.getSlideSize().getSize().getWidth();
int pageHeight = (int) pres.getSlideSize().getSize().getHeight();
// 生成水印图片
WatermarkImage image = new WatermarkImage(pageWidth, pageHeight);
BufferedImage watermarkImg = image.createWatermarkImage(
this.angle, this.alpha, this.font, this.color, watermarkText);

        // 创建aspose.slides图片实例
        IPPImage imgx = pres.getImages().addImage(watermarkImg);
        // 插入水印图片到每页
        for (ISlide slide : pres.getSlides()) {
            slide.getShapes().addPictureFrame(ShapeType.Rectangle, 0, 0, pageWidth, pageHeight, imgx);
        }
        return pres;
    } catch (Exception e) {
        logger.error("添加PPT水印失败: " + e.getMessage());
    }
    return null;
}

其中createWatermarkImage已经在之前的测试代码中提供过


#14

我特地重新写了测试代码
代码在只给29.88M.pptx文件增加水印这件事上消耗了两个多小时依旧没有处理完成
这个pptx的第98页包含一张18M的图片
我不知道处理速度这么慢是否是因为在save方法时你们会对图片有什么特殊处理导致效率低下
这两个小时中测试代码一直占据cpu90%以上,内存一开始为3.5G占用,到后来变为1.5G
我的电脑配置为i7-6700CPU内存8G,系统为windows10 使用的aspose-slider 18.11
这个效率问题一直困扰着我还希望您能尽快处理或给出一个对该类存在大图片pptx的处理方案
同时如果将该文档再进行转换pdf效率就更低了
期待您的答复
谢谢PPT增加水印源码.zip (3.3 KB)

测试文件的下载链接:
https://box.lenovo.com/l/5HhcT2


#15

@wdacat,

我观察了你的意见。我们的问题跟踪系统中添加了ID SLIDESJAVA-37461的错误,以解决此问题。此线程已与故障单关联,以便我们可以在解决问题后与您共享通知


#16

ppt中包含大图片的问题不知道您那边解决进度如何
期待您的回复


#17

@wdacat,

我观察了你的意见。我想告知这个问题仍在调查中,我们很快就会与您分享好消息。


#18

好的十分感谢
美好的祝福


#19

又过去两周了
因为ppt不能高效转换成pdf的问题比较棘手
所以我还是想询问您是否有相关进展


#20

@wdacat,

我很遗憾地分享指出的问题尚未解决,因为最近在我们的问题跟踪系统中添加了问题。实际上,在Aspose.Slides中,选择问题以先到先得的方式进行调查。此外,还为付费企业和优先支持客户提供了调度和解决的首要任务。然后Aspose.Slides正常或免费支持客户问题按先到先得的原则安排和解决。一旦问题得到解决,我将与您分享进一步的信息。