![DjVu 隐藏文本→PDF?](https://linux22.com/image/1422290/DjVu%20%E9%9A%90%E8%97%8F%E6%96%87%E6%9C%AC%E2%86%92PDF%EF%BC%9F.png)
有没有办法将 DjVu 文件的隐藏文本层制作成 PDF?
我知道如何使用
djvused myfile.djvu -e 'output-txt' > myfile.dsed
输出包含每页每个单词的 x,y 坐标的 DjVu 脚本,但我如何将其转换为 PS 或 PDF?我相信有人有脚本。
dsed 文件以如下的 S 表达式开头(点击这里查看更多信息):
select; remove-txt
# -------------------------
select "myfile_0000.djvu"
set-txt
(page 108 107 1176 1725
(column 941 1694 1176 1725
(region 941 1694 1176 1725
(para 941 1694 1176 1725
(line 941 1694 1176 1725
(word 941 1694 999 1723 "another")
(word 1024 1696 1176 1725 "word")))))
(column 108 107 805 1519
(region 108 107 805 1519
(para 226 1491 701 1519
(line 226 1491 701 1519
(word 226 1491 701 1519 "example")))
(para 350 1370 534 1396
ETC…
谢谢
答案1
OP输入后更新:
为了将 DJVU 文件的 OCR 层排版为 PDF 文件,即在 DJVU 文件中出现的位置打印单词,一种选择是通过编程生成 Inkscape 或 Scribus 文件。我将概述该过程。用您选择的语言(Python、Ruby、Racket 等)编写脚本并不困难。
对于 DJVU 文件的每一页,将 OCR 层导出为 HTML 或 S 表达式。我将在下文中假设后者。
从中提取页面大小
(page x1 y1 x2 y2...
。页面宽度 =x2-x1
,页面高度 =y2-y1.
对于每个单词,计算包含该单词的文本框的宽度、高度和左下角坐标。即变成
(word x1 y1 x2 y2 "another")
一个左下角为(x1, Page height - y1)
、宽度x2 - x1
和高度 的文本框y2 - y1
。选择适合文本框的字体和字体大小。使用单词矩形的高度作为指导。确保文本不会拉伸以适合文本框。
将所有文本框添加到页面后,将文件导出为 PDF。请注意,页面大小比 letter 或 A4 大得多。如果您打算打印文档,请确保在打印对话框中缩放以适合您的纸张大小。为了保存树,请先打印为 PDF 文件。
原始答案:
根据man djvused
,该命令'output-txt'
将生成一个djvused
脚本,供 使 用djvused
。
为了您的目的,最好使用(根据手册页)
djvused myfile.djvu -e 'print-pure-txt' > myfile.txt
然后,您可以使用可以打印为 PDF 的程序来生成 PDF 文件。
根据您的操作系统和版本,您可能需要安装 PDF 打印机。您也可以在最新版本的 Chrome 或 Firefox 中打开它并打印为 PDF。
答案2
最简单的方法是将 DjVu 转换为 PDF(确保 PDF 中保留 OCR 层)。然后运行:
gs -q -o - -dFILTERIMAGE -sDEVICE=pdfwrite -f "${input_pdf}" | pdftk - output - uncompress | sed "s/^3 Tr$/0 Tr/g" | pdftk - output "${output_pdf}" compress
用户指定并${input_pdf}
删除()所有图像,并使PDF 将隐藏的 OCR 文本呈现为可见(通过将 PDF 的或“隐藏文本呈现”命令更改为或“默认文本呈现”)。最后一个命令不是绝对必要的,但第一个命令是,否则将无法更改 PDF命令。${output_pdf}
gs
-dFILTERIMAGE
sed
3 Tr
0 Tr
pdftk
sed
Tr