Esempio n. 1
0
        static void Main(string[] arguments)
        {
            ICommandLineParser commandLineParser = new PosixParser();
            CommandLine        commandLine       = commandLineParser.Parse(Options, arguments);

            int port = SocketOpenOfficeConnection.DefaultPort;

            if (commandLine.HasOption(OptionPort.Opt))
            {
                port = Convert.ToInt32(commandLine.GetOptionValue(OptionPort.Opt));
            }

            String outputFormat = null;

            if (commandLine.HasOption(OptionOutputFormat.Opt))
            {
                outputFormat = commandLine.GetOptionValue(OptionOutputFormat.Opt);
            }

            bool verbose = commandLine.HasOption(OptionVerbose.Opt);

            IDocumentFormatRegistry registry = new DefaultDocumentFormatRegistry();

            String[] fileNames = commandLine.Args;
            if ((outputFormat == null && fileNames.Length != 2) || fileNames.Length < 1)
            {
                String        syntax        = "Convert [options] input-file output-file; or\n" + "[options] -f output-format input-file [input-file...]";
                HelpFormatter helpFormatter = new HelpFormatter();
                helpFormatter.PrintHelp(syntax, Options);
                Environment.Exit(ExitCodeTooFewArgs);
            }

            IOpenOfficeConnection connection = new SocketOpenOfficeConnection(port);
            OfficeInfo            oo         = EnvUtils.Get();

            if (oo.Kind == OfficeKind.Unknown)
            {
                Console.Out.WriteLine("please setup OpenOffice or LibreOffice!");
                return;
            }
            try
            {
                if (verbose)
                {
                    Console.Out.WriteLine("-- connecting to OpenOffice.org on port " + port);
                }
                connection.Connect();
            }
            catch (Exception)
            {
                string CmdArguments = string.Format("-headless -accept=\"socket,host={0},port={1};urp;\" -nofirststartwizard", SocketOpenOfficeConnection.DefaultHost, SocketOpenOfficeConnection.DefaultPort);
                if (!EnvUtils.RunCmd(oo.OfficeUnoPath, "soffice", CmdArguments))
                {
                    Console.Error.WriteLine("ERROR: connection failed. Please make sure OpenOffice.org is running and listening on port " + port + ".");
                    Environment.Exit(ExitCodeConnectionFailed);
                }
            }
            try
            {
                IDocumentConverter converter = new OpenOfficeDocumentConverter(connection, registry);
                if (outputFormat == null)
                {
                    FileInfo inputFile  = new FileInfo(fileNames[0]);
                    FileInfo outputFile = new FileInfo(fileNames[1]);
                    ConvertOne(converter, inputFile, outputFile, verbose);
                }
                else
                {
                    foreach (var t in fileNames)
                    {
                        var inputFile  = new FileInfo(t);
                        var outputFile = new FileInfo(inputFile.FullName.Remove(inputFile.FullName.LastIndexOf(".", StringComparison.Ordinal)) + "." + outputFormat);
                        ConvertOne(converter, inputFile, outputFile, verbose);
                    }
                }
            }
            finally
            {
                if (verbose)
                {
                    Console.Out.WriteLine("-- disconnecting");
                }
                connection.Disconnect();
            }
        }