微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 PDF 文档解析为图像数组直接到 RAM 缓冲区

如何解决如何将 PDF 文档解析为图像数组直接到 RAM 缓冲区

我正在尝试将一个巨大的 PDF 文档解析为图像列表(每个图像都有一个 bmp 格式)。我使用 ghostscript 和 python 将 PDF 解析为 numpy 数组列表,但使用了非常无用的方法

def get_imgs_gs(path_to_pdf):
        cpu_number = os.cpu_count() # get number of cores
    
        folderName = "bmp_imgs" # name of temporary folder to save images
        Path(folderName).mkdir(parents=True,exist_ok=True) # create the folder 
        absPath = os.path.abspath(folderName) # get absolute path to the folder
    
        args = [
            'gs','-sDEVICE=bmpgray',f'-g{WIDTH}x{HEIGHT}',# f'-dNumRenderingThreads={cpu_number}','-r247x247','-dnopAUSE','-dBATCH',f'-sOutputFile="{absPath}/%04d.bmp"',path_to_pdf
        ]
        ghostscript.Ghostscript(*args) # run ghostscript
    
        content = os.listdir(absPath) # get the folder's content (list of images name)
        content.sort() # sort names to iterate by true order
    
        imgs = [None]*len(content) # read images
        for i in range(len(content)):
            imgs[i] = plt.imread(absPath + '/' + content[i])
        shutil.rmtree(absPath) # remove images
    
        return imgs

正如您从上面的代码中看到的,我保存了这些图像,然后将其删除

那么,我怎样才能避免这一步。我尝试使用 gs 的 ANSI-c API,但没有找到解决方案。唯一从 std 中获取图像位图的机会。

有人可以帮我吗?顺便说一句,我想提高速度(-dNumRenderingThreads={cpu_number}),但对我没有帮助。也许有人可以帮助我。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?