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