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); }
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); }
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}")); }