Выходные потоки – 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 и сохранения изображения в файл.
- Создайте новый экземпляр класса
MemoryStreamProvider
. Он будет использоваться в качестве выходного потока для процесса рендеринга. - Инициализируйте HTML-документ, используя класс HTMLDocument. Содержимое HTML передается в качестве параметра конструктору HTMLDocument().
- Вызовите метод
convertHTML(document, options, provider)
, чтобы преобразовать объект HTMLDocument в изображение, используя параметры сохранения иMemoryStreamProvider
. - Используйте метод
streamProvider.lStream.get(0)
, чтобы получить первый объектInputStream
из спискаlStream
объектаstreamProvider
и назначить его переменнойmemory
для дальнейших манипуляций. Таким образом, вы получаете доступ к потоку памяти, содержащему данные результата. - Используйте метод
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.