如何将 XML 转换为 Byte 到 File/PDF

How to convert XML to Byte to File/PDF

我已经成功地完成了创建 xml 的“查找和替换”。现在我想将新创建的 xml 文件转换为 pdf,它将作为文件附加并通过邮件发送。

Base64String的结果是在base64 pdf文件转换器上测试的,pdf打不开。收到此错误:出现错误无法打开文件

我如何才能完成这项工作?

        public async Task<string> CreateDocument(string PolicyNumber)
        {
            var policy = await _context.Policy.SingleOrDefaultAsync(p => p.PolicyNumber == PolicyNumber);

            ArgumentNullException.ThrowIfNull(policy, "Policy Not Available");
            //CreatePolicyDocument

            //create policy document
            var files = @"C:\Users\PATHTODOCUMENT\holderTest.docx";

            using (WordprocessingDocument wordDoc =  WordprocessingDocument.Open(files, true))
            {

                string docText;
                using (StreamReader sr = new StreamReader(wordDoc.MainDocumentPart.GetStream()))
                {
                    docText = sr.ReadToEnd();
                }
                Regex regexText = new Regex("XCONCLUSION_DATEX");
                var newWordText = regexText.Replace(docText, "Hi Everyone!");

                using (StreamWriter sw = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
                {
                    sw.Write(newWordText);


                    Encoding encoding = Encoding.UTF8;
                    byte[] docAsBytes = encoding.GetBytes(newWordText);
                    File.WriteAllBytes("hello.pdf", docAsBytes);
                    var file = Convert.ToBase64String(docAsBytes);
                 
                }


            }

            //send message
            //
            return "";
        }

PDF文件有自己的结构,所以不能直接用xml文件的contentstring生成pdf文件。

如果您真的想将 xml contentstring 转换为 PDF,您可以尝试 iTextSharp。

我尝试了一个简单的演示,这是代码:

[HttpPost]
        public IActionResult XMLtoPDF([FromForm] Try T1)
        {            
            var streamContent = new StreamContent(T1.file.OpenReadStream());
            var filestring = streamContent.ReadAsStringAsync().Result;
            MemoryStream outputStream = new MemoryStream();
            Document doc = new Document();
            PdfWriter writer = PdfWriter.GetInstance(doc, outputStream);
            //PDF settings
            PdfDestination pdfDest = new PdfDestination(PdfDestination.XYZ, 0, doc.PageSize.Height, 1f);            
            doc.Open();            
            var paragraph = new Paragraph(filestring);
            doc.Add(paragraph);
            doc.Close();
            outputStream.Close();
            var pdfArray = outputStream.ToArray();          
            return File(pdfArray, "application/pdf");
        }

结果: