PDFsharp — открыть PDF из System.Переменная Byte[]

#.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. Этого было достаточно, чтобы завершить мой поиск. Отредактировал вопрос с решением.