Das folgende Dokument hat das Problem, dass vor dem Ausgeben des Textes durch den \AtEndDocument-Befehl ein unerwünschter Seitenumbruch eingefügt wird.
Das Problem wird offensichtlich vom Paket lastpage verursacht. Wenn ich lastpage erst nach dem \AtEndDocument-Befehl lade, funktioniert zwar alles wie gewünscht, doch ist dies in der Praxis nicht möglich, da meine Realsituation komplexer ist: Der Seitenfuß wird von einer eigenen Klasse gesetzt, der Code in \AtEndDocument erst im konkreten Dokument selber (genauer gesagt in einer weiteren Klasse, die auf der ersten aufsetzt, was hier aber irrelevant sein dürfte). Das sieht dann etwa so aus:
Das ist ein altbekanntes Problem mit Paketen, die via \AtEndDocument explizit ein \clearpage ausführen. Sowohl scrlfile als auch atveryend bieten dafür seit vielen Jahren Alternativlösungen, nämlich die Ausführung von Code nach dem letzten \clearpage innerhalb von \AtEndDocument. Leider gibt es noch immer Pakete wie lastpage, die davon keinen Gebrauch machen, obwohl sie es gut gebrauchen konnten. Eventuell würde es helfen, wenn möglichst viele Anwender, das Problem dem jeweiligen Paketautoren melden.
Jedenfalls ist die Lösung einfach: Verzicht auf lastpage und Implementierung der benötigten Funktionalität mit Hilfe von einem der beiden genannten Pakete. Da scrlfile auch \protected@write innerhalb von \AtEndDocument durch eine \immediate-Version ersetzt, ist es damit recht einfach: