开发人员经常需要以基于文本的格式分享或存储 PDF 内容,例如 JSONXML,或 HTML 属性。Base64 编码也用于通过 API 传输文件或安全地将它们保存到数据库中。它提供了一种可靠的方式将二进制 PDF 数据表示为纯文本,同时保留每个字节以便后期准确重建。在本指南中,您将学习如何在 C# 中将 PDF 转换为 Base64 并解码回 PDF 文件。

Aspose.PDF for .NET — 一款强大的 PDF 转 Base64 的 C# 转换器

在这篇文章中,我们使用 Aspose.PDF for .NET,这是一个强大的库,用于在 C# 中创建、阅读、编辑和转换 PDF 文件。它提供了对 PDF 内容和结构的完全控制,无需 Adobe Acrobat 或任何外部工具。使用 Aspose.PDF,您可以轻松加载现有的 PDF 文档,修改它们,应用安全设置,并将它们导出为各种格式,包括 Base64 编码的文本。

请从 releases 下载 Aspose.PDF for .NET。您也可以使用以下命令从 NuGet 安装它:

PM> Install-Package Aspose.PDF

将 PDF 转换为 Base64 的 C# 代码

您可以在需要处理文件之前直接从内存将 PDF 文件转换为 Base64。此方法让您可以使用 Aspose.Pdf.Document 类打开 PDF,进行任何更改,然后将其保存到 MemoryStream。最后,您可以将流转换为可以通过 API 轻松传输或存储在数据库中的 Base64 字符串。

按照以下步骤将 PDF 文件转换为 C# 中的 base64 字符串:

  1. 使用 Document 类加载 PDF。
  2. 将文档保存到 MemoryStream
  3. 将字节数组转换为 Base64 字符串,使用 Convert.ToBase64String() 方法。
  4. 使用或返回 Base64 字符串。

以下代码示例演示如何将 PDF 转换为 Base64 字符串。

using Aspose.Pdf;
using Aspose.Pdf.Text;

// 1. 加载 PDF
using var doc = new Document("sample_pdf.pdf");

// Optionally perform edits here, e.g., optimize, redact, secure, etc.

// 2. 保存到内存
using var ms = new MemoryStream();
doc.Save(ms);
var bytes = ms.ToArray();

// 3. 转换为 Base64
var base64 = Convert.ToBase64String(bytes);

Console.WriteLine(base64.Substring(0, Math.Min(base64.Length, 120)) + "...");

在 C# 中将 PDF 的特定页面转换为 Base64

您可以仅将 PDF 文档的部分转换为 Base64,当您需要发送文档的较小部分时,例如单个页面或几个选定的页面。该方法有助于在通过 API 或其他基于文本的通道传输数据时减小有效负载大小。

按照以下步骤将 PDF 的特定页面转换为 Base64 字符串:

  1. 使用 Document 类加载 PDF 文件。
  2. 创建一个新的 Document 类对象来保存提取的页面。
  3. 将所需的页面复制到新文档中。
  4. 保存到 MemoryStream 并编码为 Base64。
using System;
using System.IO;
using Aspose.Pdf;

// 打开来自文件路径的源 PDF
using var src = new Document("sample_pdf.pdf");

// 创建一个新的空PDF,只包含选定的页面。
using var sub = new Document();

// 将请求的页面复制到新文档中
sub.Pages.Add(src.Pages[1]);

// 将一页PDF保存到内存而不是磁盘
using var ms = new MemoryStream();
sub.Save(ms);

// 将内存中的 PDF 字节转换为 Base64 字符串
var base64 = Convert.ToBase64String(ms.ToArray());

// 打印 Base64 文本的简短预览到控制台
Console.WriteLine(base64.Substring(0, Math.Min(base64.Length, 120)) + "...");

创建新 PDF 文档并转换为 Base64

您可以在内存中构建一个新的 PDF 并将其转换为 Base64,而无需接触磁盘。这在您动态生成文档并需要通过 API 发送它们、嵌入到 JSON 或 HTML 中或将其存储在数据库中时很有用。在此方法中,您创建一个 Aspose.Pdf.Document,添加内容,将其保存到 MemoryStream 中,然后将字节转换为 Base64 字符串。

按照下面的步骤创建一个新的 PDF 文档并将其转换为 Base64:

  1. 创建一个空的 Document
  2. 添加一个页面并使用 TextFragment 放置一些文本。
  3. 将文档保存到 MemoryStream
  4. 将流字节转换为 Base64 字符串。
using System;
using System.IO;
using Aspose.Pdf;

// 1. 在内存中创建一个新的 PDF 文档
var pdf = new Document();

// 2. 添加一个页面和一些示例内容
var page = pdf.Pages.Add();
var header = new TextFragment("Hello from Aspose.PDF");
header.TextState.FontSize = 18;
header.TextState.FontStyle = FontStyles.Bold;
page.Paragraphs.Add(header);

var body = new TextFragment("This PDF was generated in memory and then converted to Base64.");
body.TextState.FontSize = 12;
page.Paragraphs.Add(body);

// 3. 保存到 MemoryStream
using var ms = new MemoryStream();
pdf.Save(ms);
byte[] bytes = ms.ToArray();

// 4.转换为 Base64 字符串
string base64 = Convert.ToBase64String(bytes);

// 5. 可选地为浏览器准备数据 URI 或嵌入 JSON
string dataUri = $"data:application/pdf;base64,{base64}";

// Output for demo purposes
Console.WriteLine("Base64 length: " + base64.Length);
Console.WriteLine("Data URI sample (truncated): " + dataUri.Substring(0, Math.Min(dataUri.Length, 80)) + "...");

在 C# 中将 Base64 转换为 PDF

您可以在应用程序接收到来自客户端或 API 的编码数据时将 Base64 字符串转换回 PDF 文件。这在您需要恢复原始文档、将其保存到磁盘或加载到 Aspose.Pdf.Document 类中以进行进一步处理(例如编辑、保护或提取内容)时很有帮助。

按照以下步骤将 Base64 字符串转换为 PDF 文档:

  1. 加载编码的字符串(例如,从文件或 API)。
  2. 将字符串转换为原始 PDF 字节。
  3. 使用 Document 类对象和解码后的字节创建 PDF 文档。
  4. 保存PDF文档。

以下代码示例显示了如何使用 C# 将 Base64 字符串转换回 PDF 文档:

// 从文件中读取 Base64 文本并修剪额外的空格或换行符
using System;
using System.IO;
using Aspose.Pdf;

// 读取文本文件
string base64 = File.ReadAllText("sample-base64.txt").Trim();

// 可选:处理数据 URI 输入,如 "data:application/pdf;base64,AAAA..."
// 检测并去除前缀,以便仅保留原始的 Base64 内容
const string prefix = "data:application/pdf;base64,";
if (base64.StartsWith(prefix, StringComparison.OrdinalIgnoreCase))
    base64 = base64.Substring(prefix.Length);

// 将 Base64 字符串解码为字节数组
byte[] pdfBytes = Convert.FromBase64String(base64);

// 通过将字节加载到 Aspose.PDF 来验证;如果字节不是有效的 PDF,则会抛出异常。
using var doc = new Document(new MemoryStream(pdfBytes));

// 将恢复的 PDF 保存到磁盘
doc.Save("output.pdf");

获得免费许可证

您可以申请免费的临时许可证,毫无限制地探索 Aspose.PDF for .NET 的所有功能。访问 临时许可证页面 获取您的许可证,体验 API 的全部功能。

免费在线将 PDF 转换为 Base64

如果您需要立即将PDF文件转换为Base64,而无需编写任何代码,请尝试这个 free online PDF to Base64 converter。这个基于浏览器的工具让您可以上传PDF并在几秒钟内获得其Base64编码的文本。无需安装、注册或额外的库。所有操作都在您的网页浏览器中安全运行。

Image

PDF 文件到 Base64 字符串:附加资源

欲了解有关使用 Aspose.PDF for .NET 处理 PDF 文件和 Base64 编码的更多信息,请查阅以下有用的指南和工具:

  • 了解支持的文件格式、高级 PDF 操作功能以及使用 Aspose.PDF for .NET Documentation 的详细 API 使用示例。
  • 审查完整的类库、方法和属性,以便开发人员在使用 Aspose.PDF API Reference 进行 PDF 创建、转换和编码时使用。
  • 尝试使用 Aspose PDF Apps 的基于浏览器的 PDF 转换器、合并器、压缩器和查看器。
  • 探索实用示例、操作指南和深入的编程指南,访问 Aspose.PDF Blog

PDF 转 Base64:常见问题解答

  1. 什么是 Base64 编码,它为什么与 PDF 文件一起使用?

Base64 编码将二进制数据,例如 PDF 文件,转换为纯文本。它通常用于通过基于文本的系统(如 JSON、XML 或 API)传输文件,而不会导致数据损坏。

  1. 我可以只将 PDF 的特定页面转换为 Base64 吗?

是的。Aspose.PDF for .NET 允许您提取任何页面或页面范围,并仅将该部分转换为 Base64,以减少文件大小和传输时间。

  1. 我该如何在C#中将Base64字符串解码回PDF文件?

你可以使用 Convert.FromBase64String() 方法来获取字节数组,然后将其加载到 Aspose.Pdf.Document 类中,或者直接保存为 .pdf 文件到磁盘。

  1. 将大型 PDF 转换为 Base64 时是否有大小限制?

从 Aspose.PDF 没有固定的限制,但大文件需要足够的内存。使用流而不是将整个文件加载到内存中可以帮助提高性能。

  1. 我可以使用这种方法通过 API 或 Web 服务发送 PDF 吗?

是的。Base64 字符串非常适合在通过 API 或 Web 应用程序传输文件时,将 PDF 数据嵌入到 JSON 或 XML 负载中。

  1. Base64 编码会影响 PDF 的质量或内容吗?

不。Base64 编码仅改变数据的表示方式。解码后的文件与原始 PDF 完全相同,没有质量或信息的损失。

  1. 如何一次性将多个 PDF 文件转换为 Base64?

您可以遍历每个文件,使用 Aspose.Pdf.Document 加载它,并将每个文件单独转换为 Base64。这对于批处理非常有效。

  1. 我可以生成一个新的 PDF 并直接将其转换为 Base64,而不将其保存到磁盘吗?

是的。您可以在内存中创建一个新的 Document,添加内容,将其保存到 MemoryStream,然后编码为 Base64,无需创建物理文件。

结论

在本文中,您学习了如何使用 Aspose.PDF for .NET 将 PDF 文件转换为 Base64 字符串,并将其解码回 PDF。该库提供了一个可靠且功能丰富的 API,便于处理 PDF 文档,使得在任何 .NET 应用程序中实现 Base64 编码和解码变得简单。

如果您有任何问题或需要帮助,请访问我们的 free support forum,我们的团队随时乐意提供帮助。

另请参阅