在 C# 中,将本地 PDF 文件转换为 Base64 字符串的核心步骤是:先读取 PDF 文件的字节数组,再通过 Convert.ToBase64String 方法将字节数组转换为 Base64 编码。以下是具体实现:
完整代码示例
using System;
using System.IO;
public class PdfToBase64Converter
{
/// <summary>
/// 将本地PDF文件转换为Base64字符串
/// </summary>
/// <param name="pdfFilePath">PDF文件的本地路径(如:@"C:\files\test.pdf")</param>
/// <returns>转换后的Base64字符串;若失败则返回null</returns>
public static string ConvertPdfToBase64(string pdfFilePath)
{
try
{
// 1. 验证文件是否存在
if (!File.Exists(pdfFilePath))
{
Console.WriteLine($"错误:文件不存在 - {pdfFilePath}");
return null;
}
// 2. 读取PDF文件的字节数组
byte[] pdfBytes = File.ReadAllBytes(pdfFilePath);
// 3. 将字节数组转换为Base64字符串
string base64String = Convert.ToBase64String(pdfBytes);
return base64String;
}
catch (Exception ex)
{
Console.WriteLine($"转换失败:{ex.Message}");
return null;
}
}
// 示例调用
public static void Main(string[] args)
{
// 替换为你的PDF文件路径
string pdfPath = @"C:\example\document.pdf";
// 转换
string base64Result = ConvertPdfToBase64(pdfPath);
if (!string.IsNullOrEmpty(base64Result))
{
Console.WriteLine("PDF转换为Base64成功!");
// 可在此处处理结果(如保存到文件、传输等)
// 示例:保存到文本文件
File.WriteAllText(@"C:\example\pdf_base64.txt", base64Result);
Console.WriteLine("Base64字符串已保存到 pdf_base64.txt");
}
}
}
代码说明
- 文件验证:通过
File.Exists检查 PDF 文件是否存在,避免因路径错误导致的异常。 - 读取字节数组:使用
File.ReadAllBytes一次性读取整个 PDF 文件的字节(适合中小型文件)。 - 转换为 Base64:
Convert.ToBase64String方法会将字节数组编码为符合 Base64 标准的字符串(包含A-Z、a-z、0-9、+、/等字符,末尾可能有=填充)。
注意事项
- 文件大小:Base64 编码会使数据体积增加约 33%(例如 1MB 的 PDF 会生成约 1.33MB 的 Base64 字符串)。对于大型 PDF(如 100MB 以上),建议分块读取转换(但 Base64 通常需要完整字节数组,分块场景较少)。
- 权限问题:确保程序对 PDF 文件路径有读取权限(例如 Windows 系统中,不要放于
C:\Program Files等受保护目录)。 - 异常处理:代码包含通用异常捕获,可根据实际需求细化(如
IOException处理文件读写错误)。
扩展:从 Base64 还原为 PDF
如果需要将 Base64 字符串还原为 PDF 文件,可使用以下代码:
/// <summary>
/// 将Base64字符串还原为PDF文件
/// </summary>
public static bool ConvertBase64ToPdf(string base64String, string outputFilePath)
{
try
{
byte[] pdfBytes = Convert.FromBase64String(base64String);
File.WriteAllBytes(outputFilePath, pdfBytes);
return true;
}
catch (Exception ex)
{
Console.WriteLine($"还原失败:{ex.Message}");
return false;
}
}
通过以上方法,可完成 PDF 与 Base64 之间的双向转换。
















