C# 如何将PDF Base64转换为PDF,然后将PDF转换为C语言中的图像#
以下是添加的代码: 图像对象位于C# 如何将PDF Base64转换为PDF,然后将PDF转换为C语言中的图像#,c#,pdf,file-conversion,C#,Pdf,File Conversion,以下是添加的代码: 图像对象位于库中。图像处理 "using System.Drawing;" "using System.Drawing.Imaging;" { byte[] b = Convert.FromBase64String("R0lGODlhAQABAIAAA"); Image image; using (MemoryStream memstr = new MemoryStream(b)) { image = Image.FromStream(memstr);
库中。图像处理
"using System.Drawing;"
"using System.Drawing.Imaging;"
{
byte[] b = Convert.FromBase64String("R0lGODlhAQABAIAAA");
Image image;
using (MemoryStream memstr = new MemoryStream(b))
{
image = Image.FromStream(memstr);
}
}
以下是我正在编写的新代码:
{
string base64BinaryStr = " ";
byte[] PDFDecoded = Convert.FromBase64String(base64BinaryStr);
string FileName = (@"C:\Users\Downloads\PDF " + DateTime.Now.ToString("dd-MM-yyyy-hh-mm"));
BinaryWriter writer = new BinaryWriter(File.Create(FileName + ".pdf"));
writer.Write(PDFDecoded);
string s = Encoding.UTF8.GetString(PDFDecoded);
}
这是您当前的代码:
byte[] PDFDecoded = Convert.FromBase64String(base64BinaryStr);
string FileName = (@"C:\Users\Downloads\PDF " + DateTime.Now.ToString("dd-MM-yyyy-hh-mm"));
BinaryWriter writer = new BinaryWriter(File.Create(FileName + ".pdf"));
writer.Write(PDFDecoded);
实际上,您不需要使用BinaryWriter
<代码>文件。创建
已经为您提供了一个文件流
:
FileStream writer = File.Create(FileName + ".pdf");
writer.Write(PDFDecoded, 0, PDFDecoded.Length);
但这仍然会有您遇到的问题,因为您没有将数据刷新到它。我们还需要关闭该文件。谢天谢地,我们可以使用
将其包装在中,这对我们都有好处:
using (FileStream writer = File.Create(FileName + ".pdf"))
{
writer.Write(PDFDecoded, 0, PDFDecoded.Length);
}
但更简单的方法是:
File.WriteAllBytes(FileName + ".pdf", PDFDecoded);
至于PDF->Image,您可能需要看看是否有一个库可用于此(搜索“PDF to Image NuGet”)来帮助您,因为我认为没有任何内置功能。只是一个想法,您不需要创建物理PDF文件,您可以将其保存在内存中并从内存中将其转换为图像
现在的问题是,您不能使用System.Drawing.Imaging
中的Image
,因为它不支持读取PDF文件
相反,您需要搜索一些可以这样做的库。
例如,请尝试,您可以这样使用它:
string base64String = "...";
byte[] pdfBytes = Convert.FromBase64String(base64String);
using (PdfDocument pdfDocument = PdfDocument.Load(new MemoryStream(pdfBytes)))
{
ImageSaveOptions imageOptions = new ImageSaveOptions(ImageSaveFormat.Png);
string imageName = DateTime.Now.ToString("dd-MM-yyyy-hh-mm") + ".png";
pdfDocument.Save(@"C:\Users\Downloads\" + imageName, imageOptions);
}
我已经使用了本例中提供的代码。将问题分解。这两件事是你试图实现的,其中一件几乎肯定与你所坚持的目标无关。这个问题和你的日期转换标签有什么关系?是的,在第一步BAse64转换为pdf,然后再将相同的pdf转换为ImageOK,你坚持使用哪一部分?MemoryStream,在内存中,它永远不会保存到文件中。撇开这一点不谈,将pdf转换成图像需要使用图书馆。谢谢你,它现在正在工作@John@Zoraiz如果我解决了你的问题,你能接受我的回答吗?我还需要Pdf文件@hertzogth