创建带有大量注释的大型 pdf 文档的方法

问题描述 投票:0回答:1

我需要创建带有大量注释的大型 pdf 文档。   它将文本与上下文索引中的关键字结合起来:全文中的每个重要单词都链接到上下文索引中的相应单词,然后再返回。

在 32Gb 的 Linux 桌面上,使用 perl PDF::API2 我可以成功创建一个 1000 页的文档,每页有 750 个注释。   超过这个值会导致进程挂起,可能是在耗尽 RAM 后。

我尝试使用 GotoR 注释将文档分解为单独的 pdf 文件,但这显然仅适用于 Acrobat Reader,而且 Acrobat Reader 也存在安全风险。
还有其他 perl 或 python 库能够更好地处理这个问题吗?

perl pdf acrobat
1个回答
0
投票

我无法用 Perl 或 Python 给你答案,而且你也没有提供示例代码。然而,在 Ruby 中,可以使用 HexaPDF 和以下脚本来衡量执行时间和内存使用情况:

require 'hexapdf'

HexaPDF::Composer.create('stack.pdf', skip_page_creation: true) do |c|
  c.page_style(:default, page_size: :A4) do |canvas, style|
    style.frame = style.create_frame(canvas.context, 36)
  end
  link = {link: "https://example.com", fill_color: 'hp-blue', text: "Ex"}
  1000.times do |i|
    puts "Creating page #{i + 1}"
    c.new_page
    c.formatted_text(Array.new(750) { [' text ', link.dup] }.flatten)
  end
  puts "Writing PDF"
end

该脚本每页创建 750 个链接注释,总共 1000 个页面。

将 Ruby 3.3 与 YJIT 结合使用,需要不到 2 分钟的时间,并使用 1,838,884k 内存(通过

/usr/bin/time
测量)。生成的文件大小约为 24MB(对象流约为 18MB,即注释;内容流约为 5.5MB),包含 755,762 个 PDF 对象。

© www.soinside.com 2019 - 2024. All rights reserved.