使用.net或任何其他语言在内存中进行ghostscript转换

本文关键字:ghostscript 转换 内存 net 任何 其他 语言 使用 | 更新日期: 2023-09-27 18:12:35

我可以使用ghostscript API将PDF转换为其他格式,而无需从磁盘读取数据或将结果写入磁盘?它的开销很大!

我需要这样的东西:

public static byte[][] ConvertPDF(byte[] pdfData)
{
 //// Returns an array of byte-array of pages data
}

使用.net或任何其他语言在内存中进行ghostscript转换

使用Ghostscript API,您可以从任何地方发送输入。根据您选择的输出设备,您可以将输出发送到标准输出,或者在内存中检索位图。

如果你想要TIFF输出,那么你必须有一个输出文件(标记图像文件格式,线索是在名称…)

同样,你不能用PDF文件作为输入,这些文件必须作为文件可用,因为PDF是一种随机访问格式。

是什么使您认为这是性能问题?

既然这么多年过去了,这里仍然没有一个正确的答案,我将提供一个。

ghostscript在磁盘上执行操作。它不使用输入&输出路径仅用于将文件加载到内存中,执行操作并将其写回。它实际上在运行过程中(使用多个线程)读取和写入文件的部分内容到磁盘。虽然这是较慢的,它也使用更少的内存(记住,这些文件可能相当大)。

因为操作是在磁盘上执行的,所以(在这个问题出现的时候)没有任何方法可以传入或检索字节数组/内存流,因为这样做是"不诚实的"——这可能意味着这是一个"快捷方式"。来阻止磁盘IO,而实际上它不会。后来,增加了对接受&返回内存流,但重要的是要注意,这种支持只是接受内存流,将其写入临时文件,执行操作,然后将其读回新的内存流。

如果这仍然满足您的需求(例如,如果您希望不可避免的IO由库而不是您的业务逻辑处理),这里有几个链接演示如何实现它(您的确切需求确实会改变机制)。

图像到pdf(内存流到内存流通过光栅化)

图像到pdf(文件到内存流通过处理器)

Pdf到图像(内存流到内存流通过光栅化)

希望这些将共同提供足够的信息来解决这个问题,为其他人,像我& &;OP,大多数人都说这是不可能的,我甚至不应该尝试。