Запретить Adobe Reader переключаться в режим "Подогнать страницу" при нажатии на закладку
Если я открываю документ PDF в Adobe Reader, он обычно открывается с масштабированием страницы по ширине по умолчанию.
Но если я нажму на закладку, масштаб изменится на Fit Page.
Как я могу предотвратить это, и Adobe Reader поддерживает масштабирование по умолчанию?
9 ответов
В Foxit Reader есть настройка предпочтений... (Файл -> Настройки)..
Adobe Reader может иметь аналогичную функциональность.. ИЛИ использовать Foxit Reader... который является отличным средством просмотра PDF
Выберите: Отображение страницы в левой панели.
Затем "Проверить" запрещает изменение текущего коэффициента масштабирования.
Это сохранит текущий масштаб при перемещении с помощью BookMarks.
Надеюсь это поможет..
Если вы не можете изменить это поведение, переключаясь с настройками Edit/Preference/Page Display/Zoom, то у вас вполне может быть случай, когда закладка привязана к "Action".
К сожалению, вы не можете изменить это с помощью Acrobat Reader - вам потребуется доступ к Adobe Acrobat или к Acrobat Professional (или, возможно, к другому инструменту с аналогичными возможностями в этом отношении).
Вот несколько скриншотов, которые иллюстрируют то, что я имею в виду:
Щелкните правой кнопкой мыши на закладке и наведите указатель мыши на "Свойства..." в нижней части контекстного меню...
... и появляется диалоговое окно для редактирования / добавления / удаления "Действия"
Заранее извините, если нарушу здесь какие-то правила. У меня недостаточно очков репутации, чтобы дать этому ответу стрелку вверх, но я думаю, что люди заслуживают знать, что это сработало для меня - как амулет!
Сверху:
«Способ сделать это — отредактировать сами поврежденные PDF-файлы. Откройте каждый неисправный файл в шестнадцатеричном редакторе (я рекомендую «HxD», потому что он бесплатный; найдите его) и выполните глобальную замену:
/Fit
->/XYZ
, затем сохраните файл под новым именем.
Вуаля, проблема будет решена; документ сохранит любые настройки масштабирования, установленные вами в настройках Adobe Reader, независимо от того, сколько закладок вы нажмете».
В какой рациональной вселенной я должен иметь «очки репутации», чтобы поделиться своим успехом с другими и помочь им решить этот вопрос, который явно пугает многих?
Чтобы отключить инструмент "Рука", следуя пути к статье, перейдите в меню "Правка" и выберите "Настройки". В категории "Общие" снимите флажок "Make Hand tool read article".
К вашему сведению, это может произойти, даже если ссылка "Закладка" не имеет действия "Уровень масштабирования". В моем случае (Acrobat Pro 9.5.5) это произошло потому, что каждая закладка ссылается на пункт назначения, а сами пункты назначения, по-видимому, имеют уровень масштабирования Fit Width.
Я подтвердил это, дважды щелкнув по пункту назначения (на навигационной панели "Пункты назначения"), чтобы открыть его, изменив настройки масштабирования на "По размеру страницы", затем щелкнув правой кнопкой мыши по пункту назначения и выбрав "Установить пункт назначения". Впоследствии эта конкретная закладка привела к Fit Page, в то время как другие все еще привели к Fit Width.
Я решил это с помощью отличного плагина PubHelper, который больше не поддерживается, но работает для меня: http://pubhelper.blogspot.com/. Я выбрал все закладки, затем PubHelper->Bookmarks->To Inherit Zoom.
Кстати, я не думаю, что эта проблема относится к выбору "Fit Width". Я думаю, что это общая проблема, когда закладки могут переопределять текущие настройки масштабирования пользователя.
Несколько лет назад я создал приложение с открытым исходным кодом (на основе Java), которое позволяет вам применять
- Фактический размер
- Подходящая страница
- Подходит видимый
- Подходит ширина
- Наследовать зум
ко всем закладкам в документе PDF или целым каталогам PDF (включая вложенные подкаталоги) без выбора каждого элемента вручную:
https://bitbucket.org/beatngu13/pdfbookmarkwizard/
В настоящее время я работаю над улучшенной версией, которую вы можете скачать здесь:
Re «[Как я могу] запретить Adobe Reader переключаться на масштабирование «По размеру страницы» при нажатии на закладку [?]»: Да, есть способ сделать это, но не из настроек Adobe Reader. (Насколько мне известно, Adobe Reader никогда не имел такой функции и никогда не будет.) Способ сделать это — отредактировать сами поврежденные PDF-файлы. Откройте каждый неисправный файл в шестнадцатеричном редакторе (я рекомендую «HxD», потому что он бесплатный; погуглите) и выполните глобальную замену: «/Fit» -> «/XYZ», затем сохраните файл под новым именем. Вуаля, проблема будет решена; документ сохранит любые настройки масштабирования, установленные в настройках Adobe Reader, независимо от того, сколько закладок вы нажмете.
Кажется, это все еще проблема в 2020 году, и я не хотел устанавливать Java для вышеуказанного решения.
Итак, для следующего человека, который столкнется с этим, вы можете избавить закладку от сохраненного масштаба, установив для каждого коэффициента масштабирования закладки значение 0 или какое-либо другое плавающее значение, чтобы применить какой-либо другой коэффициент масштабирования.
Я написал скрипт на Python, который, похоже, выполняет свою работу в тех нескольких PDF-файлах, которые я тестировал. Для этого требуется pikepdf из pip.
import pikepdf,sys,os,argparse
class data:
_names = None
def update_dest(zoom_factor,current):
dest = pikepdf.Array()
dest.append(current[0])
dest.append(pikepdf.Name("/XYZ"))
dest.append(0)
dest.append(0)
dest.append(zoom_factor)
dest_type = current[1]
if dest_type == "/XYZ":
dest[2] = current[2]
dest[3] = current[3]
elif dest_type in ("/FitH","FitBH"):
dest[3] = current[2]
elif dest_type in ("/FitV","FitBV"):
dest[2] = current[2]
elif dest_type == "/FitR":
dest[2] = current[2]
dest[3] = current[4]
#("/Fit","/FitB"):
return dest
def collect_all_names(root):
if not hasattr(root,"Names"):
return {}
names = {}
def _apply_collect_all_names(parent):
if hasattr(parent,"Kids"):
for item in parent.Kids:
_apply_collect_all_names(item)
elif hasattr(parent,"Names"):
for index in range(0,len(parent.Names),2):
names[parent.Names[index]] = (index+1,parent.Names)
_apply_collect_all_names(root.Names.Dests)
return names
def get_names(root):
if not data._names:
data._names = collect_all_names(root)
return data._names
def set_zoom_factor(root,depth,outline_item,zoom_factor,only_bookmarks):
skipped = False
if outline_item.action:
outline_item.action.D = update_dest(zoom_factor,outline_item.action.D)
elif outline_item.destination != None:
if only_bookmarks:
names = get_names(root)
if outline_item.destination in names:
index = names[outline_item.destination][0]
array = names[outline_item.destination][1]
array[index] = update_dest(zoom_factor,array[index])
else:
raise RuntimeError("Name %s Not Found" % outline_item.destination)
else:
skipped = True
print(("skipped" if skipped else "updated") + " >> %s %s" % (" "*depth,outline_item.title))
def set_all_bookmark_zooms(in_file,out_file=None,zoom_factor=None,only_bookmarks=False):
def _apply_set_all_bookmark_zoom(names,depth,children):
for child in children:
set_zoom_factor(names,depth,child,zoom_factor,only_bookmarks)
_apply_set_all_bookmark_zoom(names,depth+1,child.children)
pdf = pikepdf.open(in_file)
if not only_bookmarks:
names = get_names(pdf.root)
for key,values in names.items():
index,array = values
array[index] = update_dest(zoom_factor,array[index])
with pdf.open_outline() as outline:
_apply_set_all_bookmark_zoom(pdf.root,0,outline.root)
save_name = out_file if out_file else in_file.split(".")[0] + "-zoomed.pdf"
print("saving %s ..." % save_name)
pdf.save(save_name)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Remove PDF bookmark zooms')
parser.add_argument('-z','--zoom', type=float,default=None,
help='set the zoom factor of the bookmarks/links. 0 will inherit the current zoom (default:0)')
parser.add_argument('-ob','--only_bookmarks',default=False,action="store_true",
help='only process bookmark links, other clickables in the document are left untouched (default:False)')
parser.add_argument('file_name',help='PDF filename to process')
parser.add_argument('-o','--out_file',default=None,help='Output filename')
args = parser.parse_args()
set_all_bookmark_zooms(args.file_name,args.out_file,args.zoom,args.only_bookmarks)
Решение для Adobe Acrobat Reader 2021
Запустите следующую команду sed для файла PDF (т. е. вам нужно сделать это для каждого файла PDF, в котором вы хотите это изменить, в бесплатной программе Acrobat Reader нет настроек, позволяющих это исправить). Команда заменяет экземпляры в коде закладки с/Fit
к/XYZ
. В Windows вы можете запустить его на Cygwin (в настройке Cygwin установитеsed
упаковка)
sed -b 's#/Fit#/XYZ#g' original.pdf > modified.pdf