public async Task <byte[]> Render(PrintFormModel printFormModel, TemplateFile template, bool isNeedConvertToPdf = false)
        {
            await using (var stream = new MemoryStream(template.File.Content))
            {
                var wordDocument = new WordDocument(stream, FormatType.Docx);

                foreach (var(key, value) in printFormModel.Schema)
                {
                    wordDocument.ReplaceSingleLine(key, value, false, false);
                }

                await using (var outputStream = new MemoryStream())
                {
                    if (isNeedConvertToPdf)
                    {
                        var render = new DocIORenderer();
                        render.Settings.ChartRenderingOptions.ImageFormat = ExportImageFormat.Jpeg;
                        var pdfDocument = render.ConvertToPDF(wordDocument);
                        pdfDocument.Save(outputStream);
                        printFormModel.Template.FullName = FileHelper.ChangeFileExtension(printFormModel.Template.FullName);
                    }
                    else
                    {
                        wordDocument.Save(outputStream, FormatType.Docx);
                    }

                    return(outputStream.ToArray());
                }
            }
        }
        public async Task <File> Convert(PrintFormModel printFormModel)
        {
            var template = await _dbRepository
                           .Get <TemplateFile>()
                           .Include(x => x.File)
                           .FirstOrDefaultAsync(x => x.Link == printFormModel.Template.Link)
                           ?? await _templateService.Create(printFormModel.Template);

            var renderedFile = await _renderService.Render(printFormModel, template);

            var targetFileName = printFormModel.Template.FullName;
            var file           = new File
            {
                Type     = FileType.Converted,
                FullName = targetFileName,
                Content  = renderedFile
            };

            if (file.Content == null)
            {
                //log
                return(null);
            }

            await _dbRepository.Add(file);

            await _dbRepository.SaveChanges();

            return(file);
        }
Example #3
0
        public async Task <byte[]> Render(PrintFormModel printFormModel, TemplateFile templateFile,
                                          bool isNeedConvertToPdf = false)
        {
            if (!Directory.Exists("temp"))
            {
                Directory.CreateDirectory("temp");
            }

            var tempPath = $"temp/{templateFile.Fullname}";

            await using (var fs = new FileStream(tempPath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                await fs.WriteAsync(templateFile.File.Content);
            }

            using (var wordDocument = WordprocessingDocument.Open(tempPath, true))
            {
                var document = wordDocument.MainDocumentPart.Document;

                foreach (OpenXmlElement childElement in document.ChildElements)
                {
                    if (childElement.InnerText != "")
                    {
                    }
                }

                foreach (var(key, value) in printFormModel.Schema)
                {
                    foreach (var text in document.Body.Descendants <Text>())
                    {
                        if (text.Text.Contains(key))
                        {
                            text.Text = text.Text.Replace(key, value);
                        }
                    }
                }

                wordDocument.SaveAs(@"C:\projects\FormatConverter\src\FormatConverter.Api\dasd.docx");
                wordDocument.Close();
            }

            byte[] result;

            await using (var outputMs = new MemoryStream())
            {
                await using (var outputFs =
                                 new FileStream(tempPath, FileMode.Open, FileAccess.Read))
                {
                    await outputFs.CopyToAsync(outputMs);

                    result = outputMs.ToArray();
                }
            }

            FileHelper.DeleteFilesFromDirectory("temp");
            return(result);
        }
Example #4
0
        public async Task <IActionResult> DocToPdf(PrintFormModel printFormModel)
        {
            if (printFormModel == null)
            {
                return(BadRequest("PrintFormModel was null"));
            }

            var result = await _docPdfConverter.Convert(printFormModel);

            return(File(result.Content, "application/octet-stream", $"{result.FullName}"));
        }