Warum packst du es nicht als BLOBs in eine
DB?
Code:
Documents:
ID
Name
Contents:
ID
Sequence -> Numerierung pro Dokument
Document -> FK auf's Document
Data -> BLOB mit dem Inhalt der Seite
So kann sich der User immer noch ein PDF generieren lassen.
Er kann sogar auswählen welche Seiten des Dokuments er will da du nun im Gegensatz zur vorherigen Lösung nicht alles in ein Ding quetschst. (Somit keine Seiten-Informationen wegwirfst

).