Выходные потоки – 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.

Close
Loading

Analyzing your prompt, please hold on...

An error occurred while retrieving the results. Please refresh the page and try again.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.