Как сгенерировать PDF-документ в байтах данных (или двоичных данных) в памяти без создания (или сохранения) файла?

Я новичок в PDF Clown и, взглянув на примеры, включенные в его дистрибутив, я заметил, что они используют file = new org.pdfclown.files.File(path) чтобы создать новые файлы PDF, затем file.Save(anotherPath) чтобы сохранить их в файловой системе, но я не смог найти ни одного примера, который позволил бы мне генерировать PDF-документы и сохранять их в байтовом массиве для хранения в оперативной памяти.

По сути, мы передаем входные данные наших клиентов в PDF-документ, генерируем их в памяти, затем прикрепляем к электронным письмам или сохраняем в базу данных без необходимости в промежуточном дисковом хранилище.

1 ответ

Решение

Это правильный способ сохранить файл в поток памяти (C#):

org.pdfclown.files.file = . . .;
. . .
var targetStream = new System.IO.MemoryStream();
file.Save(new org.pdfclown.bytes.Stream(targetStream), SerializationModeEnum.Standard);

В ближайшие несколько дней я добавлю в репозиторий проекта (версия 0.1.2.1 или новее) упрощенную перегрузку, так что вы можете просто сделать это:

var targetStream = new System.IO.MemoryStream();
file.Save(targetStream, SerializationModeEnum.Standard);

Почему мы использовали org.pdfclown.bytes.Stream фантик в первом Save метод? Поскольку PDF Clown реализован на нескольких платформах (Java, .NET), ему необходим абстрактный общий интерфейс для согласованной работы с вводом-выводом и упрощения разработки и обслуживания кода на этих платформах.

PS: Если вас интересуют последние новости о PDF Clown, не пропустите подписку на твиттер!

Другие вопросы по тегам