C# Chuyển đổi mảng byte tệp PDF

Mảng byte hữu ích cho việc lưu trữ hoặc truyền dữ liệu. Tương tự như vậy, định dạng tệp PDF phổ biến vì các tính năng và khả năng tương thích của nó. Bạn có thể chuyển đổi Tệp PDF thành Mảng Byte cũng như Mảng Byte thành Tệp PDF bằng ngôn ngữ C#. Điều này có thể giúp bạn lưu trữ và lưu trữ các tệp PDF trong cơ sở dữ liệu hiệu quả hơn. Bạn cũng có thể tuần tự hóa dữ liệu bằng cách làm việc với Byte Array. Hãy để chúng tôi khám phá khả năng chuyển đổi lẫn nhau của các định dạng này.

Chuyển đổi tệp PDF thành mảng byte và chuyển đổi mảng byte thành tệp PDF – Cài đặt API

Aspose.PDF for .NET API cung cấp rất nhiều tính năng để làm việc với các tài liệu PDF. Bạn có thể tạo, chỉnh sửa, thao tác hoặc chuyển đổi tệp PDF bằng lệnh gọi API đơn giản và dễ dàng. Để chuyển đổi tệp PDF thành Byte Array hoặc ngược lại, bạn cần cài đặt API bằng cách tải xuống từ trang web chính thức hoặc từ thư viện NuGet bằng cách sử dụng lệnh cài đặt bên dưới trong Visual Studio IDE.

PM> Install-Package Aspose.Pdf

Chuyển đổi tệp PDF thành mảng byte bằng C#

Bạn có thể chuyển đổi PDF sang Byte Array để truyền hoặc lưu trữ nó để xử lý thêm. Chẳng hạn, bạn có thể cần tuần tự hóa một tài liệu PDF, sau đó chuyển đổi nó thành một mảng byte có thể hữu ích. Bạn cần làm theo các bước bên dưới để chuyển đổi PDF thành một mảng byte:

  1. Tải tệp PDF đầu vào
  2. Khởi tạo một mảng Byte
  3. Khởi tạo đối tượng FileStream
  4. Tải nội dung tệp trong mảng byte

Sau khi làm theo tất cả các bước này, bây giờ bạn có thể xử lý tệp PDF ở dạng mảng byte. Ví dụ: bạn có thể chuyển nó sang một chức năng khác như ví dụ bên dưới.

Đoạn mã sau cho biết cách chuyển đổi Tệp PDF thành Mảng Byte bằng C# trong đó ByteArray kết quả được chuyển sang phương thức chuyển đổi tệp đầu vào thành hình ảnh:

dataDir = @"D:\Test\";

// Tải tệp PDF đầu vào
string inputFile = dataDir + @"testpdf.pdf";

// Khởi tạo một mảng byte
byte[] buff = null;

// Khởi tạo đối tượng FileStream
FileStream fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(inputFile).Length;

// Tải nội dung tệp trong mảng byte
buff = br.ReadBytes((int) numBytes);
fs.Close();

// Làm việc với tệp PDF trong mảng byte
ConvertPDFToJPEG(buff, 300, dataDir);


public static void ConvertPDFToJPEG(Byte[] PDFBlob, int resolution, string dataDir)
{
    // mở tài liệu
    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))
            {
                // Tạo thiết bị JPEG với các thuộc tính được chỉ định
                // Chiều rộng, Chiều cao, Độ phân giải, Chất lượng
                // Chất lượng [0-100], 100 là Tối đa
                // Tạo đối tượng Độ phân giải

                Aspose.Pdf.Devices.Resolution res = new Aspose.Pdf.Devices.Resolution(resolution);
                // JpegDevice jpegDevice = JpegDevice mới(500, 700, độ phân giải, 100);

                // đã thêm phần sau để xác định xem có phong cảnh hay không
                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 mới(Aspose.Pdf.PageSize.A4, res, 100);
                new Aspose.Pdf.Devices.JpegDevice(width, height, res, 100);
                // Chuyển đổi một trang cụ thể và lưu hình ảnh vào luồng

                //Aspose.Pdf.PageSize.A4.IsLandscape = true;
                jpegDevice.Process(pdfDocument.Pages[pageCount], imageStream);
                // Đóng luồng
                imageStream.Close();
            }
        }
    }
}

Chuyển đổi mảng Byte thành tệp PDF bằng C#

Hãy để chúng tôi tiến thêm một bước nữa, Mảng Byte có thể được chuyển đổi thành Tệp PDF. Chúng ta hãy tìm hiểu điều này bằng ví dụ chuyển đổi hình ảnh dưới dạng Mảng Byte thành tệp PDF. Bạn cần làm theo các bước sau để chuyển đổi Mảng Byte thành tệp PDF.

  1. Tải tập tin đầu vào
  2. Khởi tạo mảng byte
  3. Tải hình ảnh đầu vào vào Byte Array
  4. Khởi tạo một thể hiện của lớp Document
  5. Thêm hình ảnh trên trang PDF
  6. Lưu tệp PDF đầu ra

Đoạn mã sau giải thích cách chuyển đổi Mảng Byte thành Tệp PDF theo chương trình bằng C#:

// Tải tập tin đầu vào
string inputFile = dataDir + @"Test.PNG";

// Khởi tạo mảng byte
byte[] buff = null;
FileStream fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(inputFile).Length;

// Tải hình ảnh đầu vào vào Byte Array
buff = br.ReadBytes((int)numBytes);


Document doc = new Document();
// Thêm một trang vào bộ sưu tập các trang của tài liệu
Page page = doc.Pages.Add();
// Tải tệp hình ảnh nguồn vào đối tượng Stream
MemoryStream outstream = new MemoryStream();
MemoryStream mystream = new MemoryStream(buff);
// Khởi tạo đối tượng BitMap với luồng hình ảnh được tải
Bitmap b = new Bitmap(mystream);

// Đặt lề để hình ảnh phù hợp, v.v.
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);
// Tạo một đối tượng hình ảnh
Aspose.Pdf.Image image1 = new Aspose.Pdf.Image();
// Thêm hình ảnh vào bộ sưu tập đoạn văn của phần
page.Paragraphs.Add(image1);
// Đặt luồng tệp hình ảnh
image1.ImageStream = mystream;

// Lưu tệp PDF kết quả
doc.Save(outstream, SaveFormat.Pdf);
//doc.Save(dataDir + "outstream.pdf", SaveFormat.Pdf);

// Đóng đối tượng memoryStream
mystream.Close();

Sự kết luận

Trong bài viết này, chúng ta đã khám phá cách chuyển đổi Tệp PDF thành Mảng Byte cũng như Mảng Byte thành Tệp PDF bằng ngôn ngữ lập trình C#. Nếu bạn muốn làm việc thêm với tệp PDF, vui lòng chia sẻ yêu cầu của bạn với chúng tôi qua Diễn đàn hỗ trợ miễn phí. Ngoài ra, bạn cũng có thể khám phá Tài liệu APITham khảo API để phân tích chuyên sâu về các tính năng do API cung cấp. Chúng tôi mong được liên lạc với bạn!

Xem thêm