一千萬個為什麽

搜索

DJVU書中不同大小的頁面



我有一本djvu書,它有不同大小的頁面。 我如何通過將所有頁面設置為相同的大小來解決此問題。我熟悉Python編程,我準備嘗試它。任何意見表示贊賞。

1

轉載註明原文: DJVU書中不同大小的頁面

一共有 2 個回答:

由於所有頁面具有相同或非常相似的寬度和高度,因此這似乎是某些頁面分辨率錯誤的“簡單”問題。大多數頁面具有指定600 DPI其他僅96 DPI的元數據。當然,後來顯示得更大。

我的Linux發行版帶有 djvutoxml 和相應的 djvuxmlparser (來自package djuvlibre-bin ),可以提取元數據,合並元數據。這些也應該可用於Windows( http://djvu.sourceforge.net/,確保可執行文件位於PATH中)該元數據包含文件中的DPI信息。 XML的實際更改速度很快,但提取和合並需要很長時間(幾分鐘)。

確保你有一本書的副本,以防萬一合並破壞了某些東西,並在 program.py 上運行 python program.py book.djvu

import sys
import subprocess

book = sys.argv[1]
xml_in = 'in.xml'
xml_out = 'out.xml'

print('extracting XML')
subprocess.check_output(['djvutoxml', book, xml_in])

print('converting XML')
with open(xml_in) as inf:
    with open(xml_out, 'w') as outf:
        for line in inf:
            if line.startswith(''):
                line = line.replace('96', '600')
            outf.write(line)
print('merging XML')
subprocess.check_output(['djvuxmlparser', '-o', book, xml_out])

print('done')

一般來說,我反對在沒有真正的解析器的情況下解析XML,但是您不需要正則表達式或任何可輕易破解的東西來修復此信息。

中間XML(兩個文件)的尺寸與DjVu文件本身的尺寸相同,盡管XML沒有圖像信息,但效率不高。確保你有足夠的空間(並在快速/本地驅動器上運行該程序)

1201中有367個不正確的頁面,您可以通過在輸出XML中只包含不正確的頁面來加速該過程,但是您應該使用XML解析器。如果這是一次性轉換,我不會為這樣的優化而煩惱。

如果你想嘗試讓你所有的kindle閱讀器有其他簡單的方法。嘗試使用 K2pdfopt ,它將幫助您將所有頁面調整為特定的屏幕大小。