输出流 – 将 HTML 转换为 PDF、DOCX 和图像

输出流

执行 HTML 转换操作时,通常会将结果保存到文件中。但在某些情况下,需要将结果保存在内存中或发送到远程存储器。您可以通过实现专门的 MemoryStreamProvider类来轻松实现这一点。该类代表一种回调机制,用于处理创建和管理输出流(例如在渲染过程中)。

注: 需要多个输出流时,可能会调用几次。可能出现这种情况的场景是向一组图像文件渲染 HTML。

MemoryStreamProvider 类

Aspose.HTML for Java 库允许将 MemoryStreamProvider类作为 java.io.Closeable 接口的自定义实现来实现。这样就可以在该类的实例上调用 close()方法来释放 MemoryStreamProvider 对象所持有的任何资源。MemoryStreamProvider 类有一个公共字段 lStream,它是一个 java.io.InputStream 对象的列表 java.util.List。这些对象表示在文档呈现过程中创建的输入流。

 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}

将内存流转换为文件

以下 Java 代码演示了如何使用 MemoryStreamProvider类和 Aspose.HTML for Java 库将 HTML 转换为 JPG 并将图像保存到文件中。

  1. 创建一个新的 MemoryStreamProvider 类实例。它将用作渲染过程的输出流。
  2. 使用 HTMLDocument 类初始化 HTML 文档。HTML 内容作为参数传递给 HTMLDocument() 构造函数。
  3. 调用 convertHTML(document, options, provider) 方法,使用保存选项和 MemoryStreamProvider 将 HTMLDocument 对象转换为图像。
  4. 使用 streamProvider.lStream.get(0) 方法从 streamProvider 对象的 lStream 列表中获取第一个 InputStream 对象,并将其赋值给 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);

结论

在使用 Aspose.HTML for Java 处理内存渲染操作时,MemoryStreamProvider类是一个多功能的重要组件。通过实现java.io.Closeable接口,MemoryStreamProvider 允许在使用后显式关闭流,从而提供高效的资源管理。它的主要功能是作为创建和管理输出流(例如在渲染过程中)的回调机制。

lStream 列表包含多个 InputStream 对象,这使得 MemoryStreamProvider特别适用于需要多个输出流的场景,例如将多页 HTML 文档渲染为单个图像。该类不仅简化了管理渲染输出的过程,还提供了在内存中持久化结果的灵活性,然后再将其存储到持久存储中或流式传输到远程系统。

您可以从 GitHub 下载完整的示例和数据文件。

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.