PDF erstellen?

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

  • PDF erstellen?

    Hallo Zusammen,

    ich bin auf der Suche nach einer einfachen Möglichkeit PDF's aus einer Applikation heraus zu erstellen. Die Seiten sollen frei zu gestallten sein, mit Header, Footer und auch Grafiken. Daneben soll das Layout auch stabil sein, also nicht generisch an alles mögliche angepasst werden. Wie macht man das am besten in Swift? Quartz habe ich bereits gefunden, doch das gibt es da leider nicht für iOS.

    Schon mal vielen Dank
    Wolf
  • Schau Dir mal den Drawing and Printing Guide for iOS und darin Generating PDF Content an.

    Dies beschreibt natürlich nur die reine Erstellung eines PDFs. Für die Funktionalität der freien Gestaltung der Seiten mit Header, Footer und Grafiken musst Du Dir dann noch etwas einfallen lassen. ;)

    Alternativ kannst Du ja erst mal mit einem festen Layout anfangen und dann nach und nach die einzelnen Elemente frei positionierbar machen.
  • Mercy McDan, sehe ich mir bei Gelegenheit mal an.
    @macmoonshine, danke für den Tipp, dooch fehlt hier om QuartzCore die PDF Funktionalität, auf welche es mir ankäme. Muss halt ein Formular gestalten, dann dieses mit werten füllen und anschließend drucken. Rein über AirPrint geht es nicht, da auch ein preview nötig ist wie ein speichern, der Weg über HTML zerklopft einen zumeist das ganze Layout, daher bleibt eigentlich nur PDF mit der option dieses noch auf den Drucker auszugeben.

    Sollte es noch etwas einfacheres und flexibles geben um ein PDF zu erstellen bin ich immer offen :)

    Schöne Grüße
    Wolf
  • Wie gesagt, es handelt sich um ein paar Tabellen, mit Einrahmungen, ein paar Grafiken.. das war es eigentlich. Auf deutsch eine typisch kommerzielle Anwendung mit entsprechender Druckausgabe. Was ich hier nicht gebrauchen kann, ist, wenn die Ausgabe selbstständig meint die Ausgabe entsprechend anpassen zu müssen. Daher scheitet auch der Weg via HTML aus.

    Schöne Grüße
    Wolf
  • Baue Dir Deine Tabellen z. B. aus SubViews zusammen, in denen Du Text über Label ausgibst. Je nach Komplexität ist das ein ziemliches Gebastle, vielleicht kennt jemand einen besseren Weg...

    Ich habe das einmal für einen Stundenplan gemacht und fand den Aufwand überschaubar. Am Ende hast Du dann eine Methode, die sauber in einen Kontext zeichnet und Du kannst sie für PDFs, Images, AirPrint etc. nutzen.

    Mattes

    P.S.: Habe gerade noch einmal nachgeschaut, da täuschte mich meine Erinnerung: Ich hatte seinerzeit zwar SubViews erwogen, es dann aber komplett mit CoreGraphics realisiert und alle Positionierungen etc. selber berechnet: Mehr Code, aber vollkommen flexibel und komplett unter meiner Kontrolle. Aber es mag elegantere Wege geben... :)
    Diese Seite bleibt aus technischen Gründen unbedruckt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von MyMattes () aus folgendem Grund: Korrektur, falsch erinnert.

  • Ich muste das auch mal durchcoden (mit mehreren spalten, verschiedenen modulen, alles dynamisch und kundenanpassbar).
    War im Endeffekt dann doch nicht so viel Aufwand wie ich zuerst dachte.
    Das einzig wirklich aufwändige ist die Paginierung. Da musst du aber auch definieren wie du das machen willst. Also kommt eine mehrzeilige table-row immer komplett auf die neue seite oder nur die zeilen die auf der alten nicht platz hatten etc.
    Die Tabelle drum rum zu zeichnen (sind ja nur linien) ist ein Kinderspiel (die kennst zu dem Zeitpunkt ja schon die ganzen positionen, höhen, breiten etc. (einfach zuerst den text, dann die tabelle zeichnen).
  • Mercy, dann ist also CoreText das mittel zur Wahl. Die Printouts werden immer eine Seite umfassen, das heist überlaufende Tabellen werde ich schon bei der Erfassung der Daten vermeiden. Damit habe ich dann halt immer ein Blatt für einen Datensatz. Nur das Blatt muss halt was hermachen, da es sich dann um ein offizielles Dokument handelt.

    Nur welche Klasse aus CoreText könnte ein PDF erzeugen? Auf dem ersten Blick finde ich hierzu nichts...

    Schöne Grüsse
    Wolf
  • Wolf schrieb:

    Mercy, dann ist also CoreText das mittel zur Wahl. Die Printouts werden immer eine Seite umfassen, das heist überlaufende Tabellen werde ich schon bei der Erfassung der Daten vermeiden. Damit habe ich dann halt immer ein Blatt für einen Datensatz. Nur das Blatt muss halt was hermachen, da es sich dann um ein offizielles Dokument handelt.

    Nur welche Klasse aus CoreText könnte ein PDF erzeugen? Auf dem ersten Blick finde ich hierzu nichts...

    Schöne Grüsse
    Wolf

    Aha, normalerweise kennt man den Inhalt ja nicht und kann daher nicht sagen wieviel auf eine Seite passt.
    Wenn du den aber kennst bzw ca den umfang kennst und den rest über schriftgrößen anpassen kannst, ist es noch viel weniger problem.

    Die CoreText funktionen zeichnen alle in einen context. Da kannst du einfach einen PDF-Context angeben.
    Goole einfach mal nach CoreText PDF dann findest du jede menge info dazu (auch examples von apple).