Выходные потоки – 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. Эти объекты представляют входные потоки, созданные в процессе рендеринга документа.

 1// Implement a memory-based stream provider for handling InputStreams during document rendering in Aspose.HTML for Java
 2
 3// For complete examples and data files, please go to https://github.com/aspose-html/Aspose.HTML-for-Java
 4
 5public class MemoryStreamProvider implements java.io.Closeable {
 6    // List of InputStream objects created during the document rendering
 7    public java.util.List<java.io.InputStream> lStream = new java.util.ArrayList<>();
 8
 9    @Override
10    public void close() throws java.io.IOException {
11        for (java.io.InputStream stream : lStream) {
12            stream.close();
13        }
14    }
15}

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// Convert HTML to JPEG in memory using Aspose.HTML for Java and save the result to a file
 2
 3// Create an instance of MemoryStreamProvider
 4MemoryOutputStreamProvider streamProvider = new MemoryOutputStreamProvider();
 5
 6// Initialize an HTMLDocument instance
 7HTMLDocument document = new HTMLDocument("<span>Hello, World!!</span>", ".");
 8
 9// Convert HTML to JPG using the MemoryStreamProvider
10Converter.convertHTML(document, new ImageSaveOptions(ImageFormat.Jpeg), streamProvider.lStream);
11
12// Get access to the memory stream that contains the result data
13java.io.InputStream memory = streamProvider.lStream.get(0);
14memory.reset();
15
16// Flush the result data to the output file
17Path outputFile = new File("output.jpg").toPath();
18Files.copy(memory, outputFile, StandardCopyOption.REPLACE_EXISTING);

Заключение

Класс 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.