pageref auf letzte Seite eines inkludierten PDF's

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


godi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 75
Registriert: Mi 11. Feb 2015, 13:49

pageref auf letzte Seite eines inkludierten PDF's

Beitrag 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.
Dateianhänge
PDF1.pdf
(12.02 KiB) 381-mal heruntergeladen

Noch so einer

Beitrag 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.

godi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 75
Registriert: Mi 11. Feb 2015, 13:49

Beitrag 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. :)

Noch so einer

Beitrag 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}}}}

godi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 75
Registriert: Mi 11. Feb 2015, 13:49

Beitrag 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}

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4297
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag 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}

godi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 75
Registriert: Mi 11. Feb 2015, 13:49

Beitrag 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?

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4297
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »


godi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 75
Registriert: Mi 11. Feb 2015, 13:49

Beitrag 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]

godi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 75
Registriert: Mi 11. Feb 2015, 13:49

Beitrag 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! :)

Antworten