如何解决C# .net 核心项目中没有从 MemoryStream 正确生成 PDF 文件
我有以下代码来创建一个 pdf 文件
阅读我使用的内容
String path = System.IO.Directory.GetCurrentDirectory()
+Path.DirectorySeparatorChar.ToString() + "Templates"
+ Path.DirectorySeparatorChar.ToString() +
"CoverLetter.docx";
string content = System.IO.File.ReadAllText(path);
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
writer.WriteLine(content);
writer.Flush();
stream.Position = 0;
然后写我用过的内容
using (FileStream file = new FileStream(@"C:\Users\nithinpaul\Documents\Testing\test.pdf",FileMode.CreateNew,FileAccess.Write))
{
byte[] content1 = stream.ToArray();
file.Write(content1,(int)content1.Length);
//byte[] bytes = new byte[stream.Length];
//stream.Read(bytes,(int)stream.Length);
//file.Write(bytes,bytes.Length);
stream.Close();
}
Pdf 是在我的本地磁盘中生成的,但是当我尝试打开它时,它显示好像出了点问题。当我尝试使用记事本打开它时,内容如下所示。有什么想法吗?
在我的 .docx 中,我有一些这样的文本
Application Number – {{AppNumber}}
First Name: {{FirstName}}
Contact Number: {{ContactNumber}}
Email Id: {{EmailId}}
解决方法
根据我们在评论中的讨论,我相信您正在努力实现以下目标。
- 打开 Word 文档
- 替换word文档中的一些值
- 将文档另存为 PDF 文件。
为此,我们将使用一个名为 FreeSpire.Doc 的 Nuget 包,请注意有许多替代包可以做同样的事情,我建议你做一些研究,看看哪个最适合你的要求,免费版本有限制。您可能还想避免依赖 Microsoft Office。
无论如何,此代码将通过 FreeSpire.Doc 实现您想要的
//Open the template document
var doc = new Document("PathToTemplate.docx");
//Replace the values
doc.Replace("{{AppNumber}}","AppNumberValue",true,true);
doc.Replace("{{FirstName}}","FirstNameValue",true);
doc.Replace("{{ContactNumber}}","ContactNumberValue",true);
doc.Replace("{{EmailId}}","EmailIdValue",true);
//Save the document as a PDF file.
doc.SaveToFile("templateConverted.pdf",FileFormat.PDF);
不要忘记 Nuget 包的 using 语句。
using Spire.Doc;
您还可以使用 SaveToStream 方法将文档保存到 Stream 而不是 File。 Document 还支持接受 Steam 的构造函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。