如何(輕鬆)在包含的 PDF 文件的奇數/偶數頁上疊加不同的文字?

如何(輕鬆)在包含的 PDF 文件的奇數/偶數頁上疊加不同的文字?

我有一系列 pdf 文件,我正在嘗試合併它們。我可以毫無問題地做到這一點。

我還需要做的是在每個頁面的頂部“外”角添加少量文本,本質上標識每個頁面來自的原始文檔。到目前為止,我已經設法將文字放在每個頁面的左上角 - Stack Exchange 上還有其他問題可以解決這個問題。

然而,它們都沒有涉及將文字放在奇數頁和偶數頁上的不同位置,即偶數頁的左上角和奇數頁的右上角。如何才能實現這個目標?

\documentclass{article}

\usepackage[a4paper]{geometry}
\usepackage{pdfpages}
\usepackage{tikz}
\renewcommand{\contentsname}{My combined file}
\setlength\parindent{0pt}

\begin{document}

\includepdf[pages=-]{cover.pdf}
\includepdf[pages=2-4,pagecommand={\begin{tikzpicture}[remember picture, overlay]
    \node[right] at (-2, 2.5) {\LARGE{doc1}};
    \end{tikzpicture}}]{doc1.pdf}
% More files included here
\end{document}

為了額外加分,有沒有辦法(自動)使用所包含文件的檔案名稱作為插入的文字?

答案1

這使用everypage包來完成任務。語法是

\atxy{this page X}{alternate page X}{Y}{content}

如果在奇數頁上調用,「本頁 X」是奇數頁上內容的 x 位置,而「備用頁 X」是偶數頁上內容的 x 位置。如果在偶數頁上調用,則反之亦然。

一、用巨集更新內容\updateText{}

這是我的 MWE。如果需要的話,它已被編輯為允許在第 1 頁之後呼叫該進程(儘管 MWE 顯示它在第 1 頁上呼叫)。

\documentclass{article}
\usepackage{everypage}
\usepackage{lipsum}
% THESE ARE LaTeX DEFAULTS; CAN CHANGE IF NEEDED.
\def\PageTopMargin{1in}
\def\PageLeftMargin{1in}
\def\localX{0in}
\def\ThisX{0in}
\def\AltX{0in}
% SYNTAX \atxy{This page X}{Alt page X}{y}{content}
\newcommand\atxy[4]{%
  \def\XYtext{#4}
  \gdef\ThisX{#1}\gdef\AltX{#2}%
 \AddEverypageHook{\smash{\hspace*{\dimexpr-\PageLeftMargin-\hoffset+\localX\relax}%
  \raisebox{\dimexpr\PageTopMargin+\voffset-#3\relax}{\XYtext}}}}
\AddEverypageHook{\ifdim\localX=\ThisX\gdef\localX{\AltX}\else\gdef\localX{\ThisX}\fi}
\newcommand\updateText[1]{\gdef\XYtext{#1}}
\begin{document}
\atxy{7in}{0.2in}{0.5in}{\parbox[t]{1in}{\Huge This is my initial text}}
\lipsum[1-7]
\updateText{\parbox[t]{1in}{\Huge Follow Up text}}
\lipsum[8-35]
\end{document}

在此輸入影像描述

答案2

\documentclass{article}

\usepackage[a4paper]{geometry}
\usepackage{pdfpages}
\usepackage{ifoddpage}
\usepackage{background}

\newcommand{\mypdfinclude}[2][]{%
\backgroundsetup{%
    placement=top,
    angle=0,
    nodeanchor=north east,
    color=red,
    scale=1,
    contents={%
     \checkoddpage\ifoddpage%
      \begin{tikzpicture}[remember picture,overlay]
        \node[text width=2in,anchor=north east,align=right,font=\Large] at
          ([shift={(-1cm,-1cm)}]current page.north east) {#2};
      \end{tikzpicture}
      \else
       \begin{tikzpicture}[remember picture,overlay]
        \node[text width=2in,anchor=north west,font=\Large] at ([shift={(1cm,-1cm)}]current
         page.north west) {#2};
      \end{tikzpicture}
      \fi
     }
}
\includepdf[#1]{#2}
}
\begin{document}
  \mypdfinclude[pages=2-4]{pgfmanual.pdf}
\end{document}

在此輸入影像描述

答案3

這是另一個建議,使用該套件scrlayer為包含的 pdf 定義特殊的頁面樣式。

\documentclass[a4paper]{book}

\usepackage{pdfpages}
\usepackage{xcolor}

\usepackage{scrlayer}

\newcommand{\pdfpagestext}{}
\colorlet{pdfpagescolor}{purple}

% define new layers
\DeclareNewLayer[
  foreground,
  oddpage,
  voffset=1cm,% distance from top
  hoffset=1cm,% distance from left
  width=\dimexpr\paperwidth-2cm\relax,% width of the layer
  height=2cm,% height of the layer
  contents={\parbox{\layerwidth}{\raggedleft\textcolor{pdfpagescolor}{\pdfpagestext}}}
  ]{pdfpages.odd}
\DeclareNewLayer[
  clone=pdfpages.odd,
  evenpage,
  contents={\parbox{\layerwidth}{\raggedright\textcolor{pdfpagescolor}{\pdfpagestext}}}
  ]{pdfpages.even}

% define new pagestyle
\DeclareNewPageStyleByLayers{pdfpages}{pdfpages.odd,pdfpages.even}

\newcommand*\myincludepdf[2][]{%
  \renewcommand\pdfpagestext{#2}%
  \includepdf[pagecommand=\thispagestyle{pdfpages},#1]{#2}%
}

\begin{document}
  \myincludepdf[pages=1-3]{dummy.pdf}
\end{document}

在此輸入影像描述

如果您使用單側佈局,它也適用。然後文字會自動出現在每頁的右(=外)邊距處。

\documentclass[a4paper,oneside]{book}

在此輸入影像描述

相關內容