输出流 – 将 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 并将图像保存到文件中。
- 创建一个新的
MemoryStreamProvider类实例。它将用作渲染过程的输出流。 - 使用 HTMLDocument 类初始化 HTML 文档。HTML 内容作为参数传递给 HTMLDocument() 构造函数。
- 调用
convertHTML(document, options, provider)方法,使用保存选项和MemoryStreamProvider将 HTMLDocument 对象转换为图像。 - 使用
streamProvider.lStream.get(0)方法从streamProvider对象的lStream列表中获取第一个 InputStream 对象,并将其赋值给memory变量,以便进一步操作。这样,您就可以访问包含结果数据的内存流。 - 使用
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 下载完整的示例和数据文件。