#.net #pdf #byte #filestream #pdfsharp
#.net #PDF #байт #поток файлов #pdfsharp
Вопрос:
Я работаю с PDFsharp и пытаюсь открыть PDF-файл, который представлен в виде переменной Byte[]. Вот упрощенный пример:
public Byte[] myFunc(Byte[] PDF)
{
PdfDocument document = PdfReader.Open(PDF_Path); // <-- My problem is here
// do some modification on the document
return document;
}
Я могу прочитать PDF-файл по его пути, но я предпочел бы работать с PDF как с массивом байтов.
Является ли лучшим вариантом сохранить массив байтов в формате PDF, а затем прочитать его, а затем удалить созданный мной файл? Этот подход мне не кажется правильным.
Ответ №1:
Вы можете записать массив байтов в MemoryStream
или создать MemoryStream
для этого массива байтов, а затем использовать PDFsharp для открытия PDF из этого потока.
Не нужно возиться с временными файлами.
Обновление: решение, найденное OP (тем временем удалено из вопроса):
public Byte[] myFunc(Byte[] bytePDF)
{
MemoryStream stream = new MemoryStream(bytePDF);
PdfDocument document = PdfReader.Open(stream, PdfDocumentOpenMode.Import); //You might not need PdfDocumentOpenMode.Import
// do some modification on the document
document.Save(stream, false);
return stream.ToArray();
}
Комментарии:
1. Спасибо за советы, я не смог найти тип memorystream. Этого было достаточно, чтобы завершить мой поиск. Отредактировал вопрос с решением.