C# 转换 PDF 文件字节数组

字节数组 有助于存储或传输数据。同样,PDF 文件格式因其功能和兼容性而广受欢迎。您可以使用 C# 语言将 PDF 文件转换为字节数组以及将字节数组转换为 PDF 文件。这可以帮助您更有效地在数据库中存储和归档 PDF 文件。您还可以通过使用字节数组来序列化数据。让我们探索这些格式的相互转换。

PDF文件到字节数组和字节数组到PDF文件的转换——API安装

Aspose.PDF for .NET API 提供了许多处理 PDF 文档的功能。您可以通过简单易用的 API 调用来创建、编辑、操作或转换 PDF 文件。要将 PDF 文件转换为字节数组或反之亦然,您需要通过从 官方网站NuGet 库下载 API 来安装 API,使用 Visual Studio IDE 中的以下安装命令。

PM> Install-Package Aspose.Pdf

使用 C# 将 PDF 文件转换为字节数组

您可以将 PDF 转换为字节数组,以便传输或存储它以供进一步处理。例如,您可能需要序列化 PDF 文档,然后将其转换为字节数组会有所帮助。您需要按照以下步骤将 PDF 转换为字节数组:

  1. 加载输入 PDF 文件
  2. 初始化字节数组
  3. 初始化 FileStream 对象
  4. 加载字节数组中的文件内容

完成所有这些步骤后,现在您可以以字节数组的形式处理 PDF 文件。例如,您可以将其传递给另一个函数,如下例所示。

以下代码显示了如何使用 C# 将 PDF 文件转换为字节数组,其中生成的 ByteArray 被传递给用于将输入文件转换为图像的方法:

dataDir = @"D:\Test\";

// 加载输入 PDF 文件
string inputFile = dataDir + @"testpdf.pdf";

// 初始化一个字节数组
byte[] buff = null;

// 初始化 FileStream 对象
FileStream fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(inputFile).Length;

// 加载字节数组中的文件内容
buff = br.ReadBytes((int) numBytes);
fs.Close();

// 使用字节数组中的 PDF 文件
ConvertPDFToJPEG(buff, 300, dataDir);


public static void ConvertPDFToJPEG(Byte[] PDFBlob, int resolution, string dataDir)
{
    // 打开文档
    using (MemoryStream InputStream = new MemoryStream(PDFBlob))
    {
        Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(InputStream);

       for (int pageCount = 1; pageCount <= pdfDocument.Pages.Count; pageCount++)
        {

            using (FileStream imageStream = new FileStream(dataDir + "image" + pageCount + "_out" + ".jpg", FileMode.Create))
            {
                // 创建具有指定属性的 JPEG 设备
                // 宽度、高度、分辨率、质量
                // 质量 [0-100],100 为最大值
                // 创建分辨率对象

                Aspose.Pdf.Devices.Resolution res = new Aspose.Pdf.Devices.Resolution(resolution);
                // JpegDevice jpegDevice = new JpegDevice(500, 700, 分辨率, 100);

                // 添加以下内容以确定是否为横向
                Int32 height, width = 0;

                PdfFileInfo info = new PdfFileInfo(pdfDocument);
                width = Convert.ToInt32(info.GetPageWidth(pdfDocument.Pages[pageCount].Number));
                height = Convert.ToInt32(info.GetPageHeight(pdfDocument.Pages[pageCount].Number));


                Aspose.Pdf.Devices.JpegDevice jpegDevice =
                //新 Aspose.Pdf.Devices.JpegDevice(Aspose.Pdf.PageSize.A4, res, 100);
                new Aspose.Pdf.Devices.JpegDevice(width, height, res, 100);
                // 转换特定页面并将图像保存到流

                //Aspose.Pdf.PageSize.A4.IsLandscape = true;
                jpegDevice.Process(pdfDocument.Pages[pageCount], imageStream);
                // 关闭流
                imageStream.Close();
            }
        }
    }
}

使用 C# 将字节数组转换为 PDF 文件

让我们更进一步,可以将字节数组转换为 PDF 文件。让我们通过将图像作为字节数组转换为 PDF 文件的示例来了解这一点。您需要按照以下步骤将字节数组转换为 PDF 文件。

  1. 加载输入文件
  2. 初始化字节数组
  3. 将输入图像加载到字节数组中
  4. 初始化 Document 类的一个实例
  5. 在 PDF 页面上添加图像
  6. 保存输出 PDF 文件

以下代码说明了如何使用 C# 以编程方式将字节数组转换为 PDF 文件:

// 加载输入文件
string inputFile = dataDir + @"Test.PNG";

// 初始化字节数组
byte[] buff = null;
FileStream fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(inputFile).Length;

// 将输入图像加载到字节数组中
buff = br.ReadBytes((int)numBytes);


Document doc = new Document();
// 将页面添加到文档的页面集合
Page page = doc.Pages.Add();
// 将源图像文件加载到 Stream 对象
MemoryStream outstream = new MemoryStream();
MemoryStream mystream = new MemoryStream(buff);
// 使用加载的图像流实例化 BitMap 对象
Bitmap b = new Bitmap(mystream);

// 设置边距,以便图像适合等。
page.PageInfo.Margin.Bottom = 0;
page.PageInfo.Margin.Top = 0;
page.PageInfo.Margin.Left = 0;
page.PageInfo.Margin.Right = 0;

page.CropBox = new Aspose.Pdf.Rectangle(0, 0, b.Width, b.Height);
// 创建图像对象
Aspose.Pdf.Image image1 = new Aspose.Pdf.Image();
// 将图像添加到该部分的段落集合中
page.Paragraphs.Add(image1);
// 设置图片文件流
image1.ImageStream = mystream;

// 保存生成的 PDF 文件
doc.Save(outstream, SaveFormat.Pdf);
//doc.Save(dataDir + "outstream.pdf", SaveFormat.Pdf);

// 关闭 memoryStream 对象
mystream.Close();

结论

在本文中,我们探讨了如何使用 C# 编程语言将 PDF 文件转换为字节数组以及字节数组到 PDF 文件。如果您有兴趣进一步处理 PDF 文件,请通过 免费支持论坛 与我们分享您的要求。此外,您还可以浏览 API 文档API 参考 以深入分析 API 提供的功能。我们期待与您取得联系!

也可以看看