Seite 1 von 1

pageref auf letzte Seite eines inkludierten PDF's

Verfasst: Di 3. Mär 2015, 08:06
von godi
Hallo,

ich möchte eine pageref auf die letzte Seite eines inkludierten PDF's (\includepdf) erstellen. Diese Pageref soll in der Fußzeile stehen.

Mein Problem ist, dass ich die Seitenanzahl per Zähler zähle und daraus ein Label erstelle. Jedoch wenn ich einen pageref in der Fußzeile mache dann wird die aktuelle Seite und nicht die letzte Seite referenziert. Was ja irgendwie klar ist, da ja der Zähler gerade zählt.

Hier mein Bsp:
\documentclass[a4paper]{scrartcl}

\usepackage{pdfpages}
\usepackage{hyperref}


% Inkludiert ein Pdf
\newcounter{pdfPage}
\newcommand* \PDF[1]{	
	\cleardoublepage
	\phantomsection
	\newpage
	\setcounter{pdfPage}{0}			
    \includepdf[pages=-, pagecommand={\stepcounter{pdfPage} \label{#1.\thepdfPage}}]{#1}    
}


% Seitennummerierung in der Fußzeile mit pageref 
\renewcommand*{\pagemark}{{\usekomafont{pagenumber}{%
    Seite \thepage /\pageref{PDF1.\thepdfPage}}}}


\begin{document}
\hyperref[PDF1.1]{Link auf PDF erste Seite}\\

\newpage

% Pdf inkludieren
\PDF{PDF1}

\end{document}
Wie bekomme ich es hin, die letzte Seite eines inkludierten pdf's unbekannter Seitenanzahl zu referenzieren?


godi

PS: Im Anhang befindet sich noch ein Test-pdf zum inkludieren.

Verfasst: Di 3. Mär 2015, 08:24
von Noch so einer
Wenn dich die Meldungen wegen multiple defined labels nicht stören:
\documentclass[a4paper]{scrartcl}

\usepackage{pdfpages}
\usepackage{hyperref}


% Inkludiert ein Pdf
\newcounter{pdfPage}
\newcommand* \PDF[1]{  
   \cleardoublepage
   \phantomsection
   \newpage
   \setcounter{pdfPage}{0}        
    \includepdf[pages=-, pagecommand={\phantomsection\refstepcounter{pdfPage}\label{#1.\thepdfPage}\label{#1}}]{#1}    
}


% Seitennummerierung in der Fußzeile mit pageref
\renewcommand*{\pagemark}{{\usekomafont{pagenumber}{%
    Seite \thepage /\ref{PDF1}}}}


\begin{document}
\hyperref[PDF1.1]{Link zur ersten Seite des geladenen PDFs}
\PDF{PDF1}
\end{document}
Allerdings erscheint mit die Angabe n/m im Fuß etwas seltsam, wenn m gar nicht die Gesamseitenzahl des Dokumets, sondern die Gesamtseitenzahl des eingebundenen Dokuments ist. Im Beispiel wirkt das auf der letzten Seite mehr als eigentümlich.

Verfasst: Di 3. Mär 2015, 08:40
von godi
Noch so einer hat geschrieben: Allerdings erscheint mit die Angabe n/m im Fuß etwas seltsam, wenn m gar nicht die Gesamseitenzahl des Dokumets, sondern die Gesamtseitenzahl des eingebundenen Dokuments ist. Im Beispiel wirkt das auf der letzten Seite mehr als eigentümlich.
Ja, ich will eigentlich auch die gesamte Seitenanzahl des Dokuments dort stehen haben. :)

Verfasst: Di 3. Mär 2015, 09:12
von Noch so einer
Da das doch gleich. Das hat dann ja nicht mehr das geringste damit zu tun, ob Du ein PDF einbindest oder über weiße Elefanten schreibst. Das geht einfach mit lastpage?
\usepackage{lastpage}
\renewcommand*{\pagemark}{{\usekomafont{pagenumber}{%
    Seite \thepage /\pageref{LastPage}}}}

Verfasst: Di 3. Mär 2015, 09:54
von godi
Ja lastpage ist mir bekannt, jedoch funktioniert lastpage nicht mehr wenn ich den Seitenzähler neu setze.

Aber mit deiner Idee dem zweiten Label, dass beim pdf include gesetzt wird bin ich jetzt weiter gekommen.
Die Warnings bezüglich doppelten Label werde ich da ja nicht wegbekommen oder?

Hier mal ein größeres Bsp, das jetzt für meine Ansprüche funktioniert:
\documentclass[a4paper]{scrartcl}

\usepackage{pdfpages}
\usepackage{hyperref}


% Inkludiert ein Pdf
\newcounter{pdfPage}
\newcommand* \PDF[1]{  
   \cleardoublepage
   \phantomsection
   \newpage
   \setcounter{pdfPage}{0}        
   \includepdf[pages=-, pagecommand={\stepcounter{pdfPage}\phantomsection\label{#1.\thepdfPage}\label{#1}}]{#1}    
}

\newcommand*{\lastLabel}{}
\newcommand*{\setLastLabel}[1]{\renewcommand*{\lastLabel}{#1}}

% Seitennummerierung in der Fußzeile mit pageref
\renewcommand*{\pagemark}{{\usekomafont{pagenumber}{%
    Seite \thepage /\pageref{\lastLabel}}}}



\begin{document}
\setLastLabel{LastPage:Abschnitt1}
\hyperref[PDF1.1]{Link zur ersten Seite des geladenen PDFs}\\
\hyperref[PDF1]{Link zur letzten Seite des geladenen PDFs}\\
\hyperref[PDF2.1]{Link zur ersten Seite des zweiten geladenen PDFs}\\
\hyperref[PDF2]{Link zur letzten Seite des zweiten geladenen PDFs}\\
\hyperref[Abschnitt3]{Link zum Abschnitt 3}

\newpage
Hier noch eine Zweite Seite im Abschnitt 1.
\phantomsection\label{\lastLabel}

\newpage
\setcounter{page}{1}
\setLastLabel{PDF2}%Oder irgend ein anderer Name
Hier beginnt der Abschnitt mit den inkludierten Pdf
\PDF{PDF1}
\PDF{PDF2}


\newpage
\setcounter{page}{1}
\setLastLabel{LastPage:Abschnitt3}
\phantomsection\label{Abschnitt3}
Hier ist Abschnitt 3.
\newpage
Mit mehreren Seiten.
\phantomsection\label{\lastLabel}

\end{document}

Verfasst: Di 3. Mär 2015, 09:56
von u_fischer
Man soll die Dokumentation gelegentlich auch zur Kenntnis nehmen. pdfpages fügt bereits Anker ein:
\documentclass[a4paper]{scrartcl}

\usepackage{pdfpages}
\usepackage{hyperref}

\begin{document}
\hyperlink{test-input.pdf.1}{Link auf PDF erste Seite}

\newpage

\includepdf[pages=-,link]{test-input}

\end{document}

Verfasst: Di 3. Mär 2015, 10:45
von godi
Hallo,

ich habe die Dokumentation schon gelesen und mit den links rumprobiert.
Jedoch habe ich \hyperref verwendet was in diesem Fall nicht funktioniert.
Mit \hyperlink funktioniert es.

Was jetzt natürlich toll ist, da ich mir den Zähler sparen kann.

Aber wie viele Seiten inkludiert worden sind kann ich aus dem Paket nicht auslesen oder?

Verfasst: Di 3. Mär 2015, 11:09
von u_fischer

Verfasst: Di 3. Mär 2015, 12:35
von godi
Danke Ulrike, jedoch ist das Problem bei der Lösung, wenn nicht alle Seiten des pdf's eingebunden werden, dann stimmt es auch wieder nicht.

Ich habe jetzt eine Lösung mittels externen File gefunden.
Die Schönste ist diese bestimmt nicht, funktioniert jedoch:
\documentclass[a4paper]{scrartcl}

\usepackage{pdfpages}
\usepackage{hyperref}

\usepackage{newfile}


\newcommand* \lastPdfLabel{}
\newcommand* \setLastPdfLabel[1] {
	\renewcommand{\lastPdfLabel}{#1}
}

% Inkludiert ein Pdf
\newcounter{pdfPage}
\newcommand* \PDF[1]{  
   \cleardoublepage
   \phantomsection
   \newpage
   \setcounter{pdfPage}{0}        
   \includepdf[pages=-, link=true, linkname=#1,  pagecommand={\refstepcounter{pdfPage}\label{#1.\thepdfPage}}]{#1}
   \setLastPdfLabel{#1.\thepdfPage}   
}

\newcommand*{\lastLabel}{}
\newcommand*{\setLastLabel}[1]{\renewcommand*{\lastLabel}{#1}}

% Seitennummerierung in der Fußzeile mit pageref
\renewcommand*{\pagemark}{{\usekomafont{pagenumber}{%
    Seite \thepage /\pageref{\lastLabel}}}}


% Schreibe letztes Label in externes File
\newoutputstream{pageLabel}
\newcommand* \labelFile {\jobname.godi}
\newcommand* \outputPath {./build/}	
\newcommand* \labelFilePath {\outputPath \labelFile}

\newcommand \writeToLabelFile[1]{
	\openoutputfile{\labelFile}{pageLabel}
	\addtostream{pageLabel}{#1}  	
	\closeoutputstream{pageLabel}
}

\AtBeginDocument{
	\IfFileExists{\labelFilePath}{}{
			\writeToLabelFile{Label muss erst generiert werden}
	}
}

\AtEndDocument{
	\writeToLabelFile{\noexpand\setLastLabel{\lastPdfLabel}}	
}


\begin{document}
\setLastLabel{LastPage:Abschnitt1}
\hyperlink{PDF1.1}{Link zur ersten Seite des geladenen PDFs}\\
\hyperlink{PDF2.1}{Link zur ersten Seite des zweiten geladenen PDFs}\\
\hyperref[Abschnitt3]{Link zum Abschnitt 3}

\newpage
Hier noch eine Zweite Seite im Abschnitt 1.
\phantomsection\label{\lastLabel}

\newpage
\setcounter{page}{1}
  
% Laden des Labels der letzten pdf Seite	
\input{\labelFilePath}

Hier beginnt der Abschnitt mit den inkludierten Pdf
\PDF{PDF1}
\PDF{PDF2}


\newpage
\setcounter{page}{1}
\setLastLabel{LastPage:Abschnitt3}
\phantomsection\label{Abschnitt3}
Hier ist Abschnitt 3.
\newpage
Mit mehreren Seiten.
\phantomsection\label{\lastLabel}

\end{document}
[/code]

Verfasst: Di 3. Mär 2015, 13:44
von godi
Ich schließe jetzt den Thread,
jedoch wenn jemand noch eine Idee hat wie man dies besser lösen kann, dann ist diese herzlich willkommen! :)