Запретить 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/

В настоящее время я работаю над улучшенной версией, которую вы можете скачать здесь:

https://github.com/beatngu13/pdf-zoom-wizard/

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
Другие вопросы по тегам