PDF Erzeugung

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • PDF Erzeugung

    Morgen zusammen,

    hatte vor etwas längerer Zeit mal eine Frage zum Thema PDF Erzeugung gestellt und
    nutze für ein App jetzt die folgende Methode
    Einlesen eines Template PDF Files (sozusagen die Vorlage für jede Seite mit Logo, Bankdaten, Wasserzeichen etc.)

    Die Seite wird in einen PDF Kontext gezeichnet und danach alle veränderlichen Daten.
    Das funktioniert ganz gut, mir sind aber 2 Dinge aufgefallen die ich gern für Punkt 1 optimieren
    und für Punkt 2 lösen würde.

    1. Das Template das ja auf jeder Seite die Basis darstellt, vergrößert das Dokument natürlich
    und ich konnte keinen Schalter finden um die Seite als Hintergrund für jede Seite zu nutzen.

    2. Beim Zeichnen der Seiten weiß ich noch nicht wieviele Seiten es tatsächlich werden, so
    dass ich keine Fußzeile Seite x von y schreiben kann.
    Wenn man das fertige Dokument wieder neu öffnet und dann alle Seite durchgeht kann
    man natürlich die Fußzeile einfügen.
    Allerdings scheint mir das sehr umständlich. Meine Versuche die Seiten nochmal anzusprechen
    bevor der Kontext geschlossen wird sind gescheitert.

    Bedanke mich schon mal vorab für jede Meinungsäußerung/Verbesserungsvorschlag.
  • Jaja, Formulardruck ist eine komplexe Sache...

    Ich musste das auch mal umsetzen. Mit Zeichnen-Code stelle ich mir das für ein kaufmännisches Formular ziemlich komplex vor.

    Ich hatte das damals so gelöst:
    Für die verschiedenen Elemente eines Formulars erstellte ich eigene Views, grafisch im IB, inkl. der "Felder" für die Daten des Formulars (!). Damit ist dieser Teil der Arbeit schon mal grafisch relativ einfach wenn auch umfangreich erledigt.
    Im Druckvorgang werden Kopien dieser Views (geht einfach via Archivierung) "mit Daten gefüllt" (bzw. deren "Felder") und in das Formular eingesetzt. Gleichzeitig wird die benötigte Höhe mitgerechnet, um Seitenumbruch usw. festzustellen oder, wie in Deinem Fall, zu berechnen, ob eine Angebotsposition auf diese oder die nächste Seite paßt. Eleganterweise programmiert man das im Stil einer Datasource.
    Um das Befüllen der Views (NSTextFields) mit Daten zu vereinfachen, kannst Du z. B. in den NSTextfields Strings als Keypaths im Nib eintragen, um immer die gleiche Methode zum Befüllen der Formularfelder zu verwenden.

    Fehlt noch der Schritt, aus diesem "klassischen" View auf iOS ein PDF zu machen (unter OSX druckt man ja einfach auf PDF):
    Du stellst den Kontext auf PDF-Erzeugung, rufst drawRect jedes Subviews auf (jaja, ich weiss...). So wird Dein View auf PDF gemalt ohne via Code "malen" zu müssen.

    No.