启动PDF视图如下:
\usepackage{hyperref}
\hypersetup{pdfstartview={XYZ null null 1.0}}
\hypersetup{pdfremotestartview={XYZ null null 1.0}}
\hypersetup{pdfview={XYZ null null 1.0}}
我使用以下行链接一些外部页面:
\includepdf[pages=-,scale=.95,link=true,linkname=name_of_link,pagecommand=
{\refstepcounter{includepdfpage}\label{testing.\theincludepdfpage}}]{filename.pdf}
并使用以下行创建到该页面的链接:
\hyperlink{testing_17.1}{some_text_to_display}
链接正确反映在输出 pdf 文件中,即,当我单击文本时,它会将我带到页面link-name = testing_17.1
(第 1 页testing_17
),但 PDF 视图从 100% 更改为 71%。
有什么解决方案可以让视图保持设置状态,即此处的 100%?
答案1
默认情况下,pdfpages 使用 /Fit 作为其创建的目标。您可以使用选项更改此设置linkfit
。除了记录的值 Fit、FitH 等之外,它还知道值XZY <number>
(是 XZY,而不是 XYZ)。使用<number>
= 1000,您可以获得 1 的缩放比例。
另一种可能性是重新定义 pdfpages 命令以使用 hyperref pdfview 选项。
\documentclass[a4paper]{book}
\usepackage{hyperref}
\newcounter{includepdfpage}
\hypersetup{pdfstartview={XYZ null null 1}}
\hypersetup{pdfremotestartview={XYZ null null 1}}
\hypersetup{pdfview={XYZ null null 1}}
\usepackage{lipsum}
\usepackage{pdfpages}
\pdfcompresslevel0
\makeatletter
% Alternative: patch pdfpages:
%\def\AM@dest@special{\AM@destination name {\AM@linkname.\AM@page} \@pdfview}
\makeatletter
\begin{document}
\lipsum
\hyperlink{xxx.1}{some text to display}
\includepdf[pages=-,scale=.95,link,
linkname=xxx,linkfit=XZY 1000]{example-image-a4.pdf}
\end{document}
最后一个选择是不使用 pdfpages 创建的链接,但是无论如何都要设置 \labels 来引用这些标签:
\documentclass[a4paper]{book}
\usepackage{hyperref}
\newcounter{includepdfpage}
\hypersetup{pdfstartview={XYZ null null 1}}
\hypersetup{pdfremotestartview={XYZ null null 1}}
\hypersetup{pdfview={XYZ null null 1}}
\usepackage{lipsum}
\usepackage{pdfpages}
\begin{document}
\lipsum
\hyperref[xxx.1]{some text to display}
\includepdf[pages=-,scale=.95,
pagecommand={\refstepcounter{includepdfpage}\label{xxx.\number\value{includepdfpage}}}]{example-image-a4.pdf}
\lipsum
\end{document}