Я начал со сканирования книги в формате PDF с двумя столбцами, а затем использовал методы gs описанные в этой теме, чтобы перевести PDF в одностраничный формат, который отлично работал. На экране ПК это выглядит хорошо, но когда я передаю PDF в Kindle (3-го поколения), опция « fit-to-screen отсекает около 10-20% от нижней части большинства страниц, тогда как actual size опция размера далеко до большой для экрана.

Есть ли этому решение? я должен использовать параметры, отличные от -g4210x5950 когда делаю оригинальное расщепление с помощью gs? или я могу просто изменить размер уже созданного PDF-файла (или его полей), чтобы он подходил для экрана Kindle? Если да, то какой размер мне нужен для экрана Kindle 3-го поколения.

Я хочу изменить масштаб одной страницы PDF, чтобы исправить размер kindle (возможно, с помощью gs), а не конвертировать. В качестве альтернативы добавьте поля / границы, чтобы растопить подгонку к экрану без обрезки концов.

(Должен сказать, что я пробовал бесплатный конвертер Amazon и т.д., Но в идеале я хотел бы сохранить формат PDF, а не конвертировать, поскольку документ технический и конверсия не кажется особенно надежной. Я бы предпочел просто изменить размер PDF/PDFmargins и сохранить существующее форматирование, если это возможно).

2 ответа2

3

У меня были хорошие результаты с K2pdfopt. С помощью параметров командной строки -w (ширина) и -h (высота) вы можете установить размер вывода так, чтобы он точно соответствовал размеру экрана вашего Kindle.

1

Я нашел команду

pdfinfo -box -f 1 -l 3 mypdf.pdf

особенно полезно при поиске информации о данном документе PDF. Для документа PDF, который был нарезан в нижней части, когда он был помещен в Kindle, информация показала:

Page    1 size: 421 x 595 pts (A5)
Page    1 MediaBox:     0.00     0.00   421.00   595.00
Page    1 CropBox:      0.00     0.00   421.00   595.00
Page    1 BleedBox:     0.00     0.00   421.00   595.00
Page    1 TrimBox:      0.00     0.00   421.00   595.00
Page    1 ArtBox:       0.00     0.00   421.00   595.00
.
.
.

в соответствии с тем, как я создал его с помощью команды (которая правильно обрезает страницы A5)

gs \
  -o left-sections.pdf \
  -sDEVICE=pdfwrite \
  -g4210x5950 \
  -c "<</PageOffset [0 0]>> setpagedevice" \
  -f double-page-input.pdf

Флаг -gWxH устанавливает размер в пикселях на 720dpi точек на дюйм .

Размер видимого экрана 3-го поколения Kindle составляет 560x735 (pixels) @ 167dpi (в соответствии с этим и вики), таким образом, при 72dpi (стандартный экран) размер видимого экрана Kindle преобразуется в (560/167)*72=241.43 (735/167)*72=316.88 , поэтому 241.43x316.88 @72dpi . Тем не менее, pdfwrite , используемый ниже, использует dpi 720dpi , при этом dpi для просмотра Kindle составляет 2414x3168 @720dpi . Очевидно, что 4210x5950@720dpi слишком велико.

В качестве альтернативы это можно увидеть по тому факту, что я создал PDF с 4210x5950 pixels @ 720dpi и 167 точек на 167dpi что будет 976.48x1380.07 , что явно больше, чем 560x735 видимой области Kindle.

Таким образом, мне нужно изменить масштаб до границ Kindle.

Можно установить размер устройства в точках напрямую с помощью -dDEVICEWIDTHPOINTS=w и -dDEVICEHEIGHTPOINTS=h . При 72dpi 1 point= 1 pixel (точка определяется как 1/72 дюйма), но при 167dpi 1 point ~ 2.31 pixels . Поэтому, если наш дисплей 560x735 pixels @ 167dpi то мы установим -dDEVICEWIDTHPOINTS=241 -dDEVICEHEIGHTPOINTS=316 чтобы соответствовать Kindle. Проблема в том, что это не изменяет значения MediaBox т.д., Которые , как показывает pdfinfo остаются при 421x595 @72 dpi поэтому используйте флаг -dPDFFitPage чтобы игнорировать их или, скорее, масштабировать их, чтобы соответствовать устройству.

gs -o out.pdf -sDEVICE=pdfwrite -dDEVICEWIDTHPOINTS=241 -dDEVICEHEIGHTPOINTS=317 -dPDFFitPage -f in.pdf

Похоже, теперь, когда out.pdf просматривается с использованием опции actual-size в Kindle, он хорошо помещается на экране.

Я до сих пор не совсем понимаю, почему Kindle вырезал края из PDF, который был слишком большим для его экрана, а не просто изменял масштаб (даже если это означало очень маленький текст) в режиме подгонки к экрану (я думаю, это то, что обычно делает?).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .