Im [tugboat-Artikel](https://www.tug.org/TUGboat/tb32-3/tb102veytsman-ebooks.pdf) ist die Berechnung der benötigen Höhe ziemlich getrickst. Das funktioniert bei `article` mit `letterpaper` eher zufällig. Schon wenn man `scrartcl` mit `a4paper` verwendet, funktioniert es nicht mehr.
Die korrekte Berechnung wäre:
> `\pdfpageheight` = *Texthöhe* - (`\pagetotal-\pagegoal`) + *kompletter oberer Rand* + *kompletter unterer Rand*.
Dabei ist:
> *kompletter obere Rand* = `1in` + `\topmargin` + `\headheight` + `\headsep`
und
> *kompletter untere Rand* = `\paperheight` - `1in` - `\topmargin` - `\headheight` - `\headsep` - `\textheight`.
Eine mögliche, korrekte Berechnung wäre also:
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[english, ngerman, danish]{babel}
\pagestyle{empty}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,paperheight=575cm]{geometry}
\usepackage{everyshi,lipsum}
\newlength\totalfootheight
\EveryShipout{%
\totalfootheight=\dimexpr \paperheight
-1in-\topmargin
-\headheight
-\headsep
-\textheight\relax
\pdfpageheight=\dimexpr \pagetotal-\pagegoal
+1in+\topmargin
+\headheight
+\headsep
+\textheight
+\totalfootheight\relax
}
\begin{document}
\lipsum[1-20]
\end{document}
Dabei wurde ein wenig umsortiert, um keinen `arithmetic overflow` zu provozieren. Man kann die Berechnung natürlich auch noch weiter vereinfachen und landet dann bei einem wenig überraschenden:
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[english, ngerman, danish]{babel}
\pagestyle{empty}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,paperheight=575cm]{geometry}
\usepackage{everyshi,lipsum}
\EveryShipout{%
\pdfpageheight=\dimexpr \pagetotal-\pagegoal
+\paperheight\relax
}
\begin{document}
\lipsum[1-20]
\clearpage
\lipsum[1-10]
\end{document}
oder schlicht bei
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[english, ngerman, danish]{babel}
\pagestyle{empty}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,paperheight=575cm]{geometry}
\usepackage{everyshi,lipsum}
\EveryShipout{%
\advance\pdfpageheight by -\dimexpr \pagegoal-\pagetotal\relax
}
\begin{document}
\lipsum[1-20]
\clearpage
\lipsum[1-10]
\clearpage
\lipsum[1-20]
\end{document}
Ja, auf letzteres hätte man eigentlich auch gleich kommen können.
Zu Deinem `arara`-Problem, das eigentlich eine eigene Frage darstellt, kann ich nichts sagen, weil ich `arara` nicht verwende. Mit
`pdftoppm -png -r 100 test.pdf test`
erhalte ich jedenfalls für das letzte Beispiel `test-1.png`, `test-2.png` und `test-3.png` wie gewünscht. Hier einmal die mittlere Seite aus dem Beispiel, die auf diese Weise aber in verringerter Auflösung (`-r 30`) erzeugt wurde:
![die mittlere Seite des letzten Beispiels][1]
Übrigens: Zwar ist das Paket `everyshi` nicht wirklich veraltet, allerdings wird es kaum noch verwendet. Heiko Oberdiek hat nämlich das Paket [`atbegshi`](http://www.ctan.org/pkg/atbegshi) mit deutlich erweiterter Funktionalität erstellt und verwendet dieses auch in seinen anderen Paketen, beispielsweise in `hyperref`, `atenddvi`, `luacolor`, `pagegrid`, `pdflscape`, `zref-abspage` und `zref-thepage`. Diese Paket werden wiederum in diversen anderer seiner Pakete verwendet. Außerdem verwenden auch diverse andere Pakete `atbegshi` oder Pakete, die ihrerseits Pakete verwenden, die `atbegshi` verwenden. Ich habe allein in `texmf-dist` 36 Dateien gezählt, die `atbegshi` direkt verwenden. Darunter prominente Pakete wie `hyperref` und `geometry`. Am Ende kommt man nur schwer um `atbegshi` herum, so dass man es auch gleich an Stelle von `everyshi` verwenden kann. Ich würde also letztlich zu
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[english, ngerman, danish]{babel}
\pagestyle{empty}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm,paperheight=575cm]{geometry}
\usepackage{atbegshi,lipsum}
\AtBeginShipout{%
\advance\pdfpageheight by -\dimexpr \pagegoal-\pagetotal\relax
}
\begin{document}
\lipsum[1-20]
\clearpage
\lipsum[1-10]
\clearpage
\lipsum[1-20]
\end{document}
raten.
---
Es sei noch darauf hingewiesen, dass die Verwendung der `standalone`-Klasse hier nicht funktioniert, da diese selbst ebenfalls den Bereich beschneidet. Die beiden Vorgehen kommen sich dann in die Quere. Allerdings braucht man das bei Verwendung von `standalone` auch nicht wirklich. wirklich, wie @BraBra bereits gezeigt hat. Dort gibt man einfach nur den gewünschten Rand an:
\documentclass[varwidth, margin=2cm, png]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[english, ngerman, danish]{babel}
\pagestyle{empty}
\usepackage{lipsum}
\begin{document}
\lipsum[1-20]
\end{document}
Durch Verwendung von Option `png` wird dabei auch gleich ein PNG erzeugt. Vorraussetzung ist, dass der `pdflatex`-Aufruf mit Option `-shell-escape` erfolgt und `ImageMagick` installiert ist. Man kann jedoch auch auf die Verwendung von `ghostscript` umschalten. Siehe dazu die Anleitung von `standalone`.
Allerdings funktioniert das dann immer nur für eine Seite, während man wie oben gezeigt mit anderen Klassen auch mehrere, unterschiedlich große Seiten erzeugen kann.
[1]: http://texwelt.de/wissen/upfiles/test-2.png