EvolutionJobs / b2xtranslator

.NET Core library to convert Microsoft Office binary files (doc, xls and ppt) to Open XML (docx, xlsx and pptx).
BSD 3-Clause "New" or "Revised" License
82 stars 31 forks source link

convert ppt to pptx throw a System.ObjectDisposedException:“Cannot access a closed stream” #8

Open 298029lkk opened 1 year ago

298029lkk commented 1 year ago
using b2xtranslator.OpenXmlLib.PresentationML;
using b2xtranslator.PptFileFormat;
using b2xtranslator.PresentationMLMapping;
using b2xtranslator.Shell;
using b2xtranslator.StructuredStorage.Reader;
using System;
using System.Globalization;

namespace PPTAnalysis
{
    internal class Program
    {
        public static string ChoosenOutputFile;
        static void Main(string[] args)
        {
            var InputFile = @"D:\myppt.ppt";         
            var procFile = new ProcessingFile(InputFile);
            if (ChoosenOutputFile == null)
            {
                if (InputFile.Contains("."))
                {
                    ChoosenOutputFile = InputFile.Remove(InputFile.LastIndexOf(".")) + ".pptx";
                }
                else
                {
                    ChoosenOutputFile = InputFile + ".pptx";
                }
            }          
            using (var reader = new StructuredStorageReader(procFile.File.FullName))
            {
                var ppt = new PowerpointDocument(reader);               
                var outType = Converter.DetectOutputType(ppt);
                string conformOutputFile = Converter.GetConformFilename(ChoosenOutputFile, outType);              
                var pptx = PresentationDocument.Create(conformOutputFile, outType);               
                var start = DateTime.Now;
                Console.WriteLine("Converting file {0} into {1}", InputFile, conformOutputFile);             
                Converter.Convert(ppt, pptx);            
                var end = DateTime.Now;
                var diff = end.Subtract(start);
                Console.WriteLine("Conversion of file {0} finished in {1} seconds", InputFile, diff.TotalSeconds.ToString(CultureInfo.InvariantCulture));
                reader.Dispose();
            }
            Console.WriteLine("OK");
            Console.ReadKey();
        }
    }
}

When executed [var ppt = new PowerpointDocument(reader)], throw the exception. image My project framework is. net core3.1 I encountered the same error running on. net framework 4.6.1

DagothMor commented 9 months ago

Did you solved this problem?