Выходные потоки – Output Streams – Java MemoryStream

Выходные потоки – Output Streams

При выполнении операций конвертации HTML результаты обычно сохраняются в файл. Однако в некоторых сценариях требуется хранить результаты в памяти или отправлять их в удаленное хранилище. Вы можете легко сделать это, реализовав специализированный класс MemoryStreamProvider. Этот класс представляет механизм обратного вызова, необходимый для создания и управления потоками вывода, например, во время рендеринга.

Примечание. Его можно вызывать несколько раз, если требуется несколько потоков вывода. Сценарий, когда этот случай возможен, – это рендеринг HTML в набор файлов изображений.

Класс MemoryStreamProvider

Библиотека Aspose.HTML for Java позволяет реализовать класс MemoryStreamProvider как пользовательскую реализацию интерфейса java.io.Closeable. Это позволит вызывать метод close() в экземплярах этого класса для освобождения любых ресурсов, хранящихся в объекте MemoryStreamProvider. Класс MemoryStreamProvider имеет общедоступное поле lStream, которое представляет собой список java.util.List объектов java.io.InputStream. Эти объекты представляют входные потоки, созданные в процессе рендеринга документа.

 1public class MemoryStreamProvider implements java.io.Closeable {
 2    // List of InputStream objects created during the document rendering
 3    public java.util.List<java.io.InputStream> lStream = new java.util.ArrayList<>();
 4
 5    @Override
 6    public void close() throws java.io.IOException {
 7        for (java.io.InputStream stream : lStream) {
 8            stream.close();
 9        }
10    }
11}

MemoryStream to file

Следующий код Java демонстрирует, как использовать класс MemoryStreamProvider и библиотеку Aspose.HTML for Java для преобразования HTML в JPG и сохранения изображения в файл.

  1. Создайте новый экземпляр класса MemoryStreamProvider. Он будет использоваться в качестве выходного потока для процесса рендеринга.
  2. Инициализируйте HTML-документ, используя класс HTMLDocument. Содержимое HTML передается в качестве параметра конструктору HTMLDocument().
  3. Вызовите метод convertHTML(document, options, provider), чтобы преобразовать объект HTMLDocument в изображение, используя параметры сохранения и MemoryStreamProvider.
  4. Используйте метод streamProvider.lStream.get(0), чтобы получить первый объект InputStream из списка lStream объекта streamProvider и назначить его переменной memory для дальнейших манипуляций. Таким образом, вы получаете доступ к потоку памяти, содержащему данные результата.
  5. Используйте метод reset(), чтобы сбросить позицию потока обратно в начало.
 1// Create an instance of MemoryStreamProvider
 2MemoryOutputStreamProvider streamProvider = new MemoryOutputStreamProvider();
 3
 4// Initialize anHTMLDocument instance
 5HTMLDocument document = new HTMLDocument("<span>Hello World!!</span>");
 6
 7// Convert HTML to JPG using the MemoryStreamProvider
 8Converter.convertHTML(document, new ImageSaveOptions(ImageFormat.Jpeg), streamProvider.lStream);
 9
10// Get access to the memory stream that contains the result data
11java.io.InputStream memory = streamProvider.lStream.get(0);
12memory.reset();
13
14// Flush the result data to the output file
15java.nio.file.Files.copy(memory, new java.io.File("output.jpg").toPath());

Заключение

Класс MemoryStreamProvider – это универсальный и важный компонент при обработке операций рендеринга в памяти с помощью Aspose.HTML for Java. Реализуя интерфейс java.io.Closeable, MemoryStreamProvider обеспечивает эффективное управление ресурсами, позволяя явно закрывать потоки после использования. Его основная функция – служить механизмом обратного вызова для создания выходных потоков и управления ими, например, во время процессов рендеринга.

Список lStream, который содержит несколько объектов InputStream, делает MemoryStreamProvider особенно полезным для сценариев, требующих нескольких выходных потоков, таких как рендеринг многостраничных HTML-документов в отдельные изображения. Этот класс не только упрощает процесс управления выводом рендеринга, но также обеспечивает гибкость для сохранения результатов в памяти перед их сохранением в постоянном хранилище или потоковой передачей в удаленные системы.

Вы можете загрузить полные примеры и файлы данных по адресу GitHub.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.