Wie kann man Textfelder in PDF-Formularen nach oben oder unten verschieben?

Wie kann man Textfelder in PDF-Formularen nach oben oder unten verschieben?

Ich habe ein Problem mit der Ausrichtung zwischen den mit generierten Textfeldern hyperrefund den entsprechenden geraden Linien darunter. Das angehängte Bild veranschaulicht das Problem.

Textfelder sind nicht mit den Zeilen darunter ausgerichtet

Das Ziel ist klar. Ich möchte die Textfelder so absenken, dass jedes Textfeld direkt über der entsprechenden Geraden liegt. Mein Code sieht folgendermaßen aus:

\documentclass{article}

\usepackage{hyperref}

\begin{document}

\begin{flushleft}
    \begin{Form}
\renewcommand{\baselinestretch}{1.0}
\fontsize{12}{24}\selectfont
\hspace*{2cm} \TextField[name=First and Last Name, width=8cm, borderwidth=1]{}\\
\hspace*{2cm} \rule[-2.5ex]{11.4cm}{0.5pt} \\
\hspace*{2cm} advisor, \hspace{2cm} Date\\
\hspace*{2cm} \TextField[name=First and Last Name, width=8cm, borderwidth=1]{}\\
\hspace*{2cm} \rule[-2.5ex]{11.4cm}{0.5pt} \\
\hspace*{2cm} memberA \\
\hspace*{2cm} \TextField[name=First and Last Name, width=8cm, borderwidth=1]{}\\
\hspace*{2cm} \rule[-2.5ex]{11.4cm}{0.5pt} \\
\hspace*{2cm} memberB \\
\hspace*{2cm} \TextField[name=First and Last Name, width=8cm, borderwidth=1]{}\\
\hspace*{2cm} \rule[-2.5ex]{11.4cm}{0.5pt} \\
\hspace*{2cm} memberC \\
\hspace*{2cm} \TextField[name=First and Last Name, width=8cm, borderwidth=1]{}\\
\hspace*{2cm} \rule[-2.5ex]{11.4cm}{0.5pt} \\
\hspace*{2cm} memberD \\
    \end{Form}
\end{flushleft}


\end{document}

Es besteht immer die Möglichkeit, die Zeilen anzuheben, aber ich muss dann auch die Signaturtitel (z. B. advisor, memberA) anheben. Ich würde die Textfelder nach Möglichkeit lieber absenken, da ich sie bei Bedarf immer noch manuell mit Acrobat erstellen kann.

Jede Hilfe wird geschätzt.

Antwort1

Ich würde a tabularzusammen mit verwenden booktabs:

\documentclass[12pt]{article}
\usepackage{booktabs}
\usepackage{hyperref}

\begin{document}
\begin{Form}
\begin{tabular}{@{}p{11.5cm}@{}}
\TextField[name=First and Last Name, width=8cm, borderwidth=1]{}\\\midrule[0.5pt]
advisor, \hspace{2cm} Date\\[2.5ex]
\TextField[name=First and Last Name, width=8cm, borderwidth=1]{}\\\midrule[0.5pt]
memberA\\[2.5ex]
\TextField[name=First and Last Name, width=8cm, borderwidth=1]{}\\\midrule[0.5pt]
 memberB\\[2.5ex]
\TextField[name=First and Last Name, width=8cm, borderwidth=1]{}\\\midrule[0.5pt]
memberC\\[2.5ex]
\TextField[name=First and Last Name, width=8cm, borderwidth=1]{}\\\midrule[0.5pt]
memberD
\end{tabular}
    \end{Form}


\end{document}

Bildbeschreibung hier eingeben

Antwort2

Die obige Antwort ist korrekt. Der Vollständigkeit halber möchte ich hier noch die Ergebnisse meines eigenen fehlgeschlagenen Versuchs anführen, um verschiedene Aspekte des Problems zu veranschaulichen.

Wenn ich verwende raisebox, sieht mein Code folgendermaßen aus:

\documentclass{article}

\usepackage{hyperref}

\begin{document}

\begin{flushleft}
    \begin{Form}
\renewcommand{\baselinestretch}{1.0}
\fontsize{12}{24}\selectfont
\raisebox{-1.0 cm}[2cm]{\TextField[name=First and Last Name, width=8cm, borderwidth=1, charsize=0pt]{} \TextField[name=Date, width=3.7cm, borderwidth=1, charsize=0pt]{}}\\
\rule[-2.5ex]{11.4cm}{0.5pt} \\
advisor, \hspace{7.3cm} Date\\
\hspace*{2cm} \raisebox{-1.0 cm}[2cm]{\TextField[name=First and Last Name, width=8cm, borderwidth=1]{}}\\
\hspace*{2cm} \rule[-2.5ex]{11.4cm}{0.5pt} \\
\hspace*{2cm} memberA \\
\hspace*{2cm} \raisebox{-3.0 cm}{\TextField[name=First and Last Name, width=8cm, borderwidth=1]{}}\\
\hspace*{2cm} \rule[-2.5ex]{11.4cm}{0.5pt} \\
\hspace*{2cm} memberB \\
\hspace*{2cm} \raisebox{-1.0 cm}{\TextField[name=First and Last Name, width=8cm, borderwidth=1]{}}\\
\hspace*{2cm} \rule[-2.5ex]{11.4cm}{0.5pt} \\
\hspace*{2cm} memberC \\
\hspace*{2cm} \raisebox{-1.0 cm}{\TextField[name=First and Last Name, width=8cm, borderwidth=1]{}}\\
\hspace*{2cm} \rule[-2.5ex]{11.4cm}{0.5pt} \\
\hspace*{2cm} memberD \\
    \end{Form}
\end{flushleft}


\end{document}

und die Ergebnisse sind im Bild zu sehen. Wie Sie sehen, ist der Versuch, das Textfeld abzusenken raisebox, bis zu einem kritischen Punkt erfolgreich. Nach diesem kritischen Punkt wird nicht nur das Textfeld abgesenkt, sondern die gesamte „Gruppe“ (bestehend aus Textfeld, Zeile und Signaturtitel).

<code>Raisebox</code> funktioniert bis zu einem gewissen Punkt

Meine zweite Beobachtung betrifft die oben erwähnte Lösung mit , booktabsdie tatsächlich funktioniert. Wenn ich den Code leicht ändere, werden Sie sehen, dass das Problem im Wesentlichen durch den ruleBefehl verursacht wird.

    \documentclass[12pt]{article}
\usepackage{booktabs}
\usepackage{hyperref}

\begin{document}
\begin{Form}
\begin{tabular}{@{}p{11.5cm}@{}}
\TextField[name=First and Last Name, width=8cm, borderwidth=1]{}\\\rule[-2.5ex]{11.4cm}{0.5pt} 
advisor, \hspace{2cm} Date\\[2.5ex]
\TextField[name=First and Last Name, width=8cm, borderwidth=1]{}\\\midrule[0.5pt]
memberA\\[2.5ex]
\TextField[name=First and Last Name, width=8cm, borderwidth=1]{}\\\midrule[0.5pt]
memberB\\[2.5ex]
\TextField[name=First and Last Name, width=8cm, borderwidth=1]{}\\\midrule[0.5pt]
memberC\\[2.5ex]
\TextField[name=First and Last Name, width=8cm, borderwidth=1]{}\\\midrule[0.5pt]
memberD
\end{tabular}
\end{Form}


\end{document}

Demonstration des durch <code>rule</code> verursachten Problems

verwandte Informationen