Отключение всех интерактивных возможностей документа (для соответствия PDF/X)

Отключение всех интерактивных возможностей документа (для соответствия PDF/X)

Я работаю над тем, чтобы мой скомпилированный в XeLaTeX PDF-файл соответствовал стандарту PDF/X-1a:2001.

Когда я используюэтот ответс TeXLive 2015 документ проходит полную проверку (в Acrobat Pro DC). Однако, когда я тестирую то же самое решение на моем реальном документе, который включает главы, оглавление и другую интерактивность, я получаю ошибки.

Я скомпилировал код ниже с помощью xelatex -output-driver="xdvipdfmx -V 3" pdfx.tex:

\documentclass{book}
\usepackage{atbegshi}
\AtBeginShipout{
    \special{pdf: put @thispage
      <<
        /TrimBox [0 0 210.990 162.086]
      >>
    }
}
\special{pdf: put @thispage
  <<
    /TrimBox [0 0 210.990 162.086]
  >>
}
\special{pdf:docinfo
  <<
    /GTS_PDFXVersion (PDF/X-1:2001)
    /GTS_PDFXConformance (PDF/X-1a:2001)
  >>
}

\special{pdf:put @catalog
<<
  /PageMode /UseNone
  /OutputIntents [
    <<
      /Info (none)
      /Type /OutputIntent
      /S /GTS_PDFX
      /OutputConditionIdentifier (Custom)
      /RegistryName (http://www.color.org/)
    >>
  ]
>>
}%

\usepackage{datetime}
\usepackage{hyperref}
\hypersetup{% 
    pdftitle={Title},
    pdfinfo={
        ModDate={D:\pdfdate},
        Trapped={False},      
   },
}


\begin{document}
\chapter{Some chapter}
\chapter{Some chapter}
\chapter{Some chapter}
\chapter{Some chapter}
\end{document}

и в результате проверки PDF выводится ошибка «Документ содержит действия» в Acrobat:

Ошибка «действий» PDF

Некоторые документы, которые я тестировал, также выдают следующую ошибку: «Аннотация внутри области страницы», которая указывает на оглавление, сгенерированное с помощью \tableofcontentsкоманды, и внутренние ссылки, сгенерированные с помощью \hyperlinkкоманды. (Гиперссылки находятся в документе, поскольку для генерации интерактивного документа и печатной версии по сути используется один и тот же источник.)

Итак, проблема в интерактивности документа.

Я попытался отключить его, изменив

\usepackage{hyperref}

к

\usepackage[draft]{hyperref}

но это не только отключает интерактивность, добавленную hyperref, но и пропускает hypersetup, что приводит к тому, что дата изменения документа, заголовок и перехваченный ключ не включаются в скомпилированный PDF. Эффект: нет ошибки относительно интерактивности, но документ по-прежнему не соответствует PDF/X-1a:2001, поскольку он требует hypersetupвключения метаданных.

Как можно полностью отключить всю интерактивность в документе, не прекращая при этом hypersetupработу?

Теоретически я мог бы переопределить/перезаписать все «интерактивные» hyperrefкоманды, а также все мои пользовательские команды, использующие интерактивность (в самом конце преамбулы, чтобы все более ранние определения были перезаписаны):


\def \hyperlink#1#2{#2}
\def \href#1#2{#2}
\def \url#1{#1}
\begin{document}

но:

  • Я не уверен, как отключить интерактивность, \pagerefне теряя при этом номера страниц в документе.
  • Этот подход очень специфичен для документа, так как требует проверки того, где именно была добавлена ​​интерактивность и какими командами.
  • Хотя это работает для некоторых документов, с которыми я его тестировал, для MWE, указанного выше, это не срабатывает.

Есть ли более простой/универсальный способ отключить интерактивность глобально во всем документе?

решение1

TheNoHyperсредаможет делать то, что вы ищете: в его области действия большинство hyperrefфункций отключены путем переопределения внутренних макросов, hyperrefиспользуемых для создания ссылок, так что они ничего не делают. Однако, в отличие от draftопции пакета, он не отключает создание закладок, включение информации о документе и т. д.

Обычно вы заключаете части документа, в которых хотите отключить ссылки, в

\begin{NoHyper}
    ...
\end{NoHyper}

В этом случае, поскольку вы хотите избежать ссылок по всему документу, может быть проще просто заменить

\usepackage{hyperref}

в вашем примере

\usepackage[bookmarks=false]{hyperref}
\NoHyper

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

Связанный контент