在 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");
        }
    }
}

代码说明

  1. 文件验证:通过 File.Exists 检查 PDF 文件是否存在,避免因路径错误导致的异常。
  2. 读取字节数组:使用 File.ReadAllBytes 一次性读取整个 PDF 文件的字节(适合中小型文件)。
  3. 转换为 Base64Convert.ToBase64String 方法会将字节数组编码为符合 Base64 标准的字符串(包含 A-Za-z0-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 之间的双向转换。