Ejemplo n.º 1
0
        public IPandocCommandGenerator BuildGenerator(PandocParameters parameters)
        {
            Log.Information($"Building generator with parameters : {parameters}");
            var validationResult = new PandocParametersValidator().Validate(parameters);

            if (!validationResult.IsValid)
            {
                Log.Error("Invalid Parameters !");
                throw new ArgumentException("Invalid parameters");
            }

            IPandocCommandGenerator generator = new PandocCommandGenerator();

            if (parameters.HighlightTheme)
            {
                generator = new HighlightPandocCommandOptionsGenerator(generator, parameters.HighlightThemeSource);
            }

            if (parameters.NumberedHeader)
            {
                generator = new NumberedHeaderPandocCommandOptionsGenerator(generator);
            }

            if (parameters.CustomFont)
            {
                generator = new FontPandocCommandGenerator(generator, parameters.CustomFontName);
            }

            generator = new GeometryPandocCommandGenerator(generator, "a4paper");

            if (parameters.CustomMargin)
            {
                generator = new MarginPandocCommandGenerator(generator, parameters.CustomMarginValue);
            }

            if (parameters.CustomPdfEngine)
            {
                generator = new PdfEnginePandocCommandGenerator(generator, parameters.CustomPdfEngineValue);
            }

            if (parameters.TableOfContents)
            {
                generator = new ContentTablePandocCommandGenerator(generator);
            }

            if (parameters.LogToFile)
            {
                generator = new LogsFileCommandGenerator(generator, parameters.LogFilePath);
            }

            return(generator);
        }
Ejemplo n.º 2
0
        public async Task ExportPdfAsync(PandocParameters parameters)
        {
            var generator = BuildGenerator(parameters);

            int result = await ExecuteAsync(
                parameters.SourcePath,
                GetExecutionCommand(generator, parameters.SourcePath, parameters.TargetPath)
                );

            Log.Information($"Pandoc CLI return code : {result}");
            if (result != 0)
            {
                var error = (PandocErrorCode)result;
                Log.Error($"Pandoc Error : {error}");
                throw new InvalidOperationException($"{error.ToString()}");
            }
        }
Ejemplo n.º 3
0
        public string GetCommand(PandocParameters parameters)
        {
            var generator = BuildGenerator(parameters);

            return(GetExecutionCommand(generator, parameters.SourcePath, parameters.TargetPath));
        }