すべてのドキュメントのインタラクティブ性を無効にする(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 に文書の変更日、タイトル、トラップされたキーが含まれなくなります。影響: インタラクティビティに関するエラーはありませんが、hypersetupメタデータを含める必要があるため、文書は依然として PDF/X-1a:2001 に準拠していません。

作業を継続しながら、ドキュメント内のすべてのインタラクティブ機能を完全に無効にするにはどうすればよいでしょうかhypersetup?

理論的には、すべての「インタラクティブ」hyperrefコマンドと、インタラクティブ機能を使用するすべてのカスタム コマンドを再定義/上書きできます (プリアンブルの最後で、以前の定義がすべて上書きされるようにします)。


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

しかし:

  • \pageref文書内のページ番号を失うことなくインタラクティブ性を無効にする方法がわかりません
  • このアプローチは、インタラクティブ性がどこに追加されたか、どのコマンドによって追加されたかを正確に確認する必要があるため、ドキュメントに非常に特化しています。
  • これは私がテストしたいくつかのドキュメントでは機能しますが、上記の MWE では機能しません。

ドキュメント全体でインタラクティブ性をグローバルに無効にする、より直接的/一般的な方法はありますか?

答え1

NoHyper環境探している機能を実行する可能性があります。そのスコープ内では、リンクを生成するために使用されるhyperref内部マクロを再定義してhyperref、何も実行しないようにすることで、ほとんどの機能が無効になります。ただし、draftパッケージ オプションとは異なり、ブックマークの作成、ドキュメント情報の組み込みなどは無効になりません。

通常、リンクを無効にしたい文書の部分を

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

この場合、文書全体にわたるリンクを避けたいので、単に置き換える方が簡単かもしれません。

\usepackage{hyperref}

あなたの例では

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

リンクとブックマークをグローバルに無効にしながら、PDF ファイルにメタデータを含めることができます。ブックマークが存在すると、質問に示されているのと同じ検証エラーが発生するため、ブックマークを無効にすることは必須です。

関連情報