문제

I am using these jar files to convert excel and power point files to PDF
aspose.slides-6.7.0.jar
aspose.slides-6.7.0-jdk14.jar
aspose-cells-7.3.4.jar
Aspose is converting ppt and xls files perdectly but it throws exception on xlsx and pptx files.
Right now I am using trial version.
Is this due to trial version or I am using old version of Aspose?
This is the exception

SEVERE: com.aspose.slides.UnsupportedFormatException: The file is ZIP archive. It can be Microsoft PowerPoint 2007 PPTX presentation.
    at com.aspose.slides.eQ.break(Unknown Source)
    at com.aspose.slides.eQ.<init>(Unknown Source)
    at com.aspose.slides.eS.byte(Unknown Source)
    at com.aspose.slides.eS.new(Unknown Source)
    at com.aspose.slides.eS.<init>(Unknown Source)
    at com.aspose.slides.uj.do(Unknown Source)
    at com.aspose.slides.uj.<init>(Unknown Source)
    at com.aspose.slides.Presentation.do(Unknown Source)
    at com.aspose.slides.Presentation.<init>(Unknown Source)
    at com.aspose.slides.Presentation.<init>(Unknown Source)
    at com.delta.MiDAS.commonlibs.Utility.convertPPT(Utility.java:58)
    at com.delta.MiDAS.controllers.DocumentInsertController.loadDocForPreview(DocumentInsertController.java:485)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.sun.el.parser.AstValue.invoke(AstValue.java:254)
    at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:302)
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    at javax.faces.component.UIData.broadcast(UIData.java:1093)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
    at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:77)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    at java.lang.Thread.run(Thread.java:722)

And here is my conversion code

public void convertPPT(String Path) throws Exception{
            Presentation pres = new Presentation(Path);
            Integer index=Path.lastIndexOf(".");
            String destPath=Path.substring(0, index)+".pdf";
            pres.saveToPdf(destPath);
            System.out.println("PPT file converted to PDF");

        }

        public void convertExcel(String Path) throws Exception{

            Workbook workbook = new Workbook(Path);

            //Save the document in PDF format
            Integer index=Path.lastIndexOf(".");
            String destPath=Path.substring(0, index)+".pdf";

            workbook.save(destPath, FileFormatType.PDF);

            System.out.println("excel converted to doc");

        }

Any suggestions?

도움이 되었습니까?

해결책

No, the exception is not because of using trial version or old version of Aspose(although the recommended version to be used is always the latest one, you should use Aspose.Cells for Java 7.4.2 and Aspose.Slides for Java 7.2.0)

For handling xlsx and pptx files, you will have to modify your conversion methods as follows:

public void convertPPTToPDF(String Path) throws Exception
{
    String extension = "";
    Integer index = Path.lastIndexOf(".");
    if (index > 0) {
        extension = Path.substring(index+1);
    }

    if (extension.equals("ppt"))
    {
        Presentation pres = new Presentation(Path);
        String destPath=Path.substring(0, index)+".pdf";
        pres.saveToPdf(destPath);
    }
    else if (extension.equals("pptx"))
    {
        //Instantiate a PresentationEx object that represents a PPTX file
        PresentationEx pres = new PresentationEx(Path);
        String destPath=Path.substring(0, index)+".pdf";

        //Saving the PPTX presentation to PDF document
        pres.save(destPath, com.aspose.slides.SaveFormat.Pdf);
    }
    System.out.println("Powerpoint file converted to PDF successfully");
}

public void convertExcelToPDF(String Path) throws Exception
{
    String extension = "";
    Integer index = Path.lastIndexOf(".");
    if (index > 0) {
        extension = Path.substring(index+1);
    }

    if (extension.equals("xls"))
    {
        Workbook workbook = new Workbook(Path);

        //Save the document in PDF format
        String destPath=Path.substring(0, index)+".pdf";
        workbook.save(destPath, FileFormatType.PDF);
    }
    else if (extension.equals("xlsx"))
    {
        //Createing and XLSX LoadOptions object
        LoadOptions loadOptions = new LoadOptions(FileFormatType.XLSX);

        //Creating an Workbook object with 2007 xlsx file path and the loadOptions object
        Workbook workbook = new Workbook(Path, loadOptions);
        String destPath=Path.substring(0, index)+".pdf";
        workbook.save(destPath, FileFormatType.PDF);
    }

    System.out.println("Excel file converted to PDF successfully");
}

I have checked that the updated methods are working fine for ppt, pptx, xls and xlsx files with latest version of Aspose.Cells and Aspose.Slides for Java.

I am a developer evangelist at Aspose.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top