
Byte Array полезен для хранения или передачи данных. Точно так же формат файла PDF популярен благодаря своим функциям и совместимости. Вы можете преобразовать файл PDF в массив байтов, а также массив байтов в файл PDF с помощью языка C#. Это может помочь вам более эффективно хранить и архивировать PDF-файлы в базе данных. Вы также можете сериализовать данные, работая с байтовым массивом. Давайте исследуем взаимопреобразуемость этих форматов.
- Преобразование PDF-файла в байтовый массив и байтового массива в PDF-файл — установка API
- Преобразование файла PDF в массив байтов с помощью С#
- Преобразование массива байтов в файл PDF с помощью С#
Преобразование PDF-файла в байтовый массив и байтового массива в PDF-файл — установка API
Aspose.PDF for .NET API предлагает множество функций для работы с PDF-документами. Вы можете создавать, редактировать, манипулировать или преобразовывать PDF-файлы с помощью простых и простых вызовов API. Для преобразования PDF-файлов в байтовый массив или наоборот вам необходимо установить API, либо загрузив его с официального веб-сайта, либо из галереи NuGet с помощью приведенной ниже команды установки в Visual Studio IDE.
PM> Install-Package Aspose.Pdf
Преобразование файла PDF в массив байтов с помощью С#
Вы можете преобразовать PDF в массив байтов, чтобы передать или сохранить его для дальнейшей обработки. Например, вам может понадобиться сериализовать документ PDF, а затем может помочь преобразование его в массив байтов. Вам необходимо выполнить следующие шаги для преобразования PDF в массив байтов:
- Загрузить исходный PDF-файл
- Инициализировать массив байтов
- Инициализировать объект FileStream
- Загрузить содержимое файла в массив байтов
После выполнения всех этих шагов теперь вы можете обрабатывать файл PDF в виде массива байтов. Например, вы можете передать его другой функции, как в примере ниже.
В следующем коде показано, как преобразовать файл PDF в массив байтов с помощью C#, где результирующий массив байтов передается методу преобразования входного файла в изображения:
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 = новый 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, разрешение, 100);
new Aspose.Pdf.Devices.JpegDevice(width, height, res, 100);
// Преобразование определенной страницы и сохранение изображения в поток
//Aspose.Pdf.PageSize.A4.IsLandscape = true;
jpegDevice.Process(pdfDocument.Pages[pageCount], imageStream);
// Закрыть поток
imageStream.Close();
}
}
}
}
Преобразование массива байтов в файл PDF с помощью С#
Давайте сделаем еще один шаг, массив байтов можно преобразовать в файл PDF. Давайте узнаем это на примере преобразования изображения в виде массива байтов в файл PDF. Вам необходимо выполнить следующие шаги для преобразования массива байтов в файл PDF.
- Загрузить входной файл
- Инициализировать массив байтов
- Загрузить входное изображение в байтовый массив
- Инициализировать экземпляр класса Document
- Добавить изображение на страницу PDF
- Сохранить выходной PDF-файл
В следующем коде объясняется, как программно преобразовать массив байтов в файл PDF с помощью C#:
// Загрузить входной файл
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();
Вывод
В этой статье мы рассмотрели, как преобразовать файл PDF в массив байтов, а также массив байтов в файл PDF с помощью языка программирования C#. Если вы заинтересованы в дальнейшей работе с файлом PDF, сообщите нам о своих требованиях через Форум бесплатной поддержки. Кроме того, вы также можете ознакомиться с Документацией по API и Справочниками по API для углубленного анализа функций, предлагаемых API. Мы с нетерпением ждем возможности связаться с вами!