7

Carbone/dyn. Drucken_01 Grundlage

Ninox hat Carbone integriert und bietet auch die Möglichkeit an, ohne spezielle Kenntnisse über die Erstellung eines JSON-Body, vereinfacht Drucktemplates für die PDF-Erzeugung zu erstellen.
Mit Vereinfacht meine ich, daß die Feldnamen von Ninox in dem Template als Variablenname genutzt werden.
Bsp. Wenn der Inhalt des Ninox-Textfeldes 'Name' gedruckt werden soll, muss beim vereinfachten Druck, im Template die entsprechende Variable wie folgt aussehen: {d.Name}.
Sofern der Feldname Leerzeichen enthält, ist dieses Leerzeichen im Drucktemplate mit einem Unterstrich zu ersetzen.
Bsp. Ninox Feldname 'Datum vom' wird im Drucktemplate zu Variablenname {d.Datum_vom}

Man kann in dieser Form schon einfache Ausdrucke hinbekommen.

Ich habe mal eine Beispiel-DB angehängt, die dies exemplarisch zeigt.
Darin sind mit Microsoft Word und LibreOffice erstellte Drucktemplates enthalten.
Diese können aus Ninox heruntergeladen werden, um sie zu erweitern falls auch die Tabelle erweitert wird mit zusätzlichen Feldern.
Ich persönlich nutze hauptsächlich LibreOffice, da Carbone selbst einige Funktionalitäten bisher nur für Templates anbietet, die mit LibreOffice erstellt wurden.

Was ich darüber hinaus festgestellt habe: Bei mit MS-Word erstellten Templates werden manchmal Leerzeichen zwischen 2 Variablen ignoriert.
Bsp. im Ausdruck wird 'UweG' statt 'Uwe G' angezeigt.
 

Ich werde unregelmäßig weitere Tipps zum dyn. Druck incl. Beispiel veröffentlichen, um das Drucken mit dem neuen dyn. Druckeditor näher zu bringen.

Der nächste Tipp wird sich dem Ausdruck des Rich-Text Feld (html-Druck) widmen und den damit verbundenen möglichen Schwierigkeiten.

36 Antworten

null
    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Guten Morgen Uwe,

    vielen Dank, dass Du dich dem Thema widmest, denn ich bin gerade dabei, mich mit dem dynamischen Drucklayout 'auseinanderzusetzen' und einige Deiner Beiträge dazu, haben mir schon sehr weitergeholfen.

    Im Moment geht es bei mir (noch) um einfache Anschreiben, daher habe ich das soweit hinbekommen. Ich würde jedoch demnächst RG usw umstellen. Mal sehen, wie weit ich da komme. :-)

    Eine Frage habe ich dennoch, vielleicht hast Du einen Tip oder Rat dazu.

    Ich habe in Word ein Logo (jpeg, aber auch mit pdf und png ausprobiert) in die Kopfzeile eingefügt. Im dynamischen Drucklayout ist es jedoch total verpixelt, so dass ich es so nicht nutzen kann.

    Weißt Du, wie es sich mit Bildern verhält? Gibt es bestimmte Formate und/oder Einstellungen in Word oder LO, die ich beachten muss?

    Ein Danke vorab.

    Gruß Kruna

      • UweG
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna Ich kenne mich mit MS-Word nicht aus. Aber wenn man in einem Template ein Bild direkt einfügt, sollte es auch 1:1 im Ausdruck dargestellt werden.
      Bei von mir erstellten Templates habe ich dieses Problem noch nicht gesehen.
      Schau mal in der Suchfunktion von Google ob bei MS-Word irgendeine Einstellung zur Auflösung bei Bildern existiert.

      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      UweG ich bin auch schon etwas raus in Bezug aus MS und google mich da durch. Ich habe sogar LO herutergeladen und ausprobiert, um mögliche 'Fehlerquellen auszuschließen', dennoch bleibt es gleich. Ich muss vielleicht dazu erwähnen, dass ich auf einem Mac arbeite.

      Mit einem jpeg Bild geht es gerade noch, obwohl Logo und Schrift vektorisiert und hochauflösend sind. 

      Ich schaue mal, ob ich da noch etwas optimieren kann.

      • UweG
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna Hast du die Möglichkeit das Bild mal hoch zu laden?

      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      UweG das ist ein screenshot vom hochgeladenen template in ninox

      • UweG
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna Ich dachte es geht um ein verpixeltes Logo auf dem Ausdruck?

      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      UweG ja, ging es auch. Ich wollte gerade einen Screenshot vom verpixeltem Logo auf dem Ausdruck machen und nun sieht es anders aus.

      Ich muss dazu sagen, dass ich heute den ganzen Tag versucht habe, dass zu lösen bzw viele Möglichkeiten ausprobiert habe, so dass ich nicht mehr weiß, woran es genau gelegen hat bzw. welche Einstellung zu dem verpixelten Logo geführt hat.

      Hier nochmal ein Screenshot vom 'Ausdruck' auf der VorschauApp - vorher (Samstag) - nachher (gerade eben).

      Der Ausdruck sah dann auch so aus, wie auf beiden Screenshots.

      Sorry, da habe ich viel Staub aufgewirbelt für nichts!

       

      Viele Dank nochmals.

      ICh hätte da noch eine andere Frage bitte. Gibt es irgendwo Angebots/Rechnungstemaplates oder Anleitung dazu?

       

      Gruß Kruna

      • UweG
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna Ich kenne keine Mustertemplates für diese Fälle.
      Im Grunde ist der Aufbau eigentlich immer gleich.
      Man hat einen Ninox-Record, in dem sich einige Grunddaten befinden.
      Darin ist meist eine Untertabelle eingebettet, welche einzelne Auflistungen enthält, die Datenbankspezifisch sind.

      Das Template besteht dann meist aus den Grunddaten und einer Tabelle, welche die Daten der Untertabelle aufnimmt.
      Die Tabelle besteht aus meist aus 3 Zeilen und einer entsprechenden Anzahl von Spalten.
      In der ersten Zeile befinden sich die Überschriften.

      Die Variablenschreibweise für einzelne Zellen der 2. Zeile der Tabelle sieht meist so aus:
      {d.UNTERTABELLE[i].FELDNAME1} usw. für die nachfolgenden Zellen.
      In der 3. Zeile lautet der Variablenschreibweise für die erste Zelle:
      {d.UNTERTABELLE[i+1]}
      Die nachfolgenden Zellen können frei bleiben.
      Damit erhält man eine vollständig ausgefüllte Tabelle im Pdf.

      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      UweG Guten Morgen,

      vieeln Dank für Deine Hilfe, das sieht ja zunächst sehr einfach aus. Leider klappt es bei mir nicht. Ich werde gleich mal dazu einen Post in der Rubrik 'Hilfe erhalten' erstellen.

      Ich habe ein wenig herumgestöbert und hier

      https://docs.ninox.com/en/print/print-customization/create-and-render-a-template/example-invoice-pdf

      Rechnungstemplates auf engl und dt gefunden.

       

      Gruß Kruna

    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Moin Kruna ,

    ich habe mein Template auch mit Word erstellt (Rechnung.docx) und das Logo sieht bei mir im PDF so aus wie im Template.

    Verstehe ich richtig, dass es bei dir schon direkt nach dem Hochladen in Ninox im Drucklayouteditor so aussieht?

    VG Ronald

      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Moin DIGITOOL , wie eben bei Uwe geschrieben, ist es meiner Meinung nach nicht so, wie es in Word aussieht. Wenn ich in Word ein pdf erstelle, dann ist es nicht so pixelig. Auch wenn ich das Template in ninos hochlade, ist es nicht ganz sauber, beim Erstellen der pdf wird es dann etwas besser.

      Entschuldigung, wenn ich danach frage, aber wäre es eventuell möglich, in Dein Template Rechnung.docx reinzuschauen? Oder gibt es irgednwo 'RechnungsTemplates' in Word? Vielleicht sehe ich in den Einstellungen eine mögliche Fehlerquelle bei mir.

       

      Gruß Kruna

    • Pro BoutiquenFonds GmbH
    • Eichelfr
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Kruna , ich habe auch bereits erste Templates mit dem neuen dynamischen Druckeditor erstellt (als .docx). Ich nutze ebenfalls einen Mac und hatte hinsichtlich der Auflösung für die Logos bisher auch keine Probleme. Das sollte eigentlich funktionieren.

    Frank

      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Eichelfr vielen Dank für die Info. Wahrscheinlich liegt es an mir bzw an irgendeiner Einstellung, die ich vornehmen muss....probieren geht über studieren... ;-)

    • Stefan_Munsch.1
    • vor 1 Jahr
    • Gemeldet - anzeigen

    UweG  Hallo Uwe, danke für deine Arbeit und das Teilen deiner Erfahrungen.

    Folgendes Problem tritt bei mir auf: Ich habe eine "globale" Tabelle für zentral abgelegte Daten (Kontaktdaten der Firma, Bankverbindung usw.) und an diveresen Stellen verwendete Symbole / Bilder. An den gewünschten Orten rufe ich dann record(Einstellungen,1).Bild_X auf, so beispielsweise Ampelsymbole in Reports. Das funktioniert in der DB super, aber in den dynamischen Drucklayouts werden die Ampeln nicht angezeigt. Auch über Freigabelinks der Symbole hatte ich keinen Erfolg. In der Ninox-Druckengine war es möglich 🤔

    Kennst du eine Lösung?

      • UweG
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Stefan Munsch Ich habe  mal eine Bsp DB angehängt.
      Das Template ist mit LibreOffice erstellt, sollte aber auch mit MS-Word funktionieren.
      Eine Beschreibung zum Bilddruck findest du hier:
      https://carbone.io/documentation.html#pictures

      Im Drucktemplate muss für das zu druckende Bild eine Bildvariable hinterlegt sein.
      Der Inhalt des Bildes kann entweder als Share oder neuerdings als Base64URL übertragen werden. In der BSP-DB verwende ich Base64.

      Ich habe das Template in der vereinfachten Form aufgebaut: VariablenNamen = FeldNamen.
      Persönlich würde ich aber den eigenen Aufbau als JSON-Objekt bevorzugen, da man auf die ganzen Hilfsfelder im Formular verzichten kann und auch mehr Möglichkeiten der Gestaltung des Ausdrucks hat.

    • Stefan_Munsch.1
    • vor 1 Jahr
    • Gemeldet - anzeigen

    UweG Super vielen Dank! Base-64 funktioniert perfekt. 👍

    • Michi.1
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Ich bin zu blöd für diese Sache, egal was ich mache es wird nie gedruckt. Einfachstes Konstrukt Name +  Vorname

    Was mache ich da falsch???

     

      • + Maßanzug statt Massenware +
      • RonaldP
      • vor 1 Jahr
      • Gemeldet - anzeigen

       

      in der Annahme, dass diese Felder im entsprechenden Datensatz auch so gefüllt sind, sehen
      die Screenshots erstmal richtig aus.
      Bedeutet "es wird nie gedruckt" das kein PDF generiert und dann im Browser geöffnet wird?

      In welcher Ninox App bist du denn (MACAPP, PublicCloud...)?
      Und was machst du denn um zu drucken?

      Vg Ronald

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

       ich kann im Editor das PDF nicht erstellen lassen. Es passiert einfach gesagt nichts. 

      Die felder sind im gleichen Datensatz, also das einfachste zum testen. 500 pdf sind auch noch zur Verfügung. Wenn ich die bsp. DB von Uwe einspielen geht klappt es. 

      • Kruna
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Hi Michi, könntest Du eventuell eine Beispiel-Datenbank hier hochladen?

      Gruß Kruna

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Wenn ich eine neue DB erstelle, funktioniert es. Wenn ich mit derselben Vorlage, das Ganze in der betreffenden DB machen möchte, passiert gar nichts. In einer weiteren Test-DB kommt das erzeugte PDF, wenn ich den editer Modus verlassen habe, erst an.

      Textfeld "Name" ist immer im betreffenden Datensatz.... daran kann es nicht liegen.

      In der Test-DB funktioniert es:

       

      In der bestehenden funktioniert es nicht, keine Reaktion beim Aufruf:

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Nachtrag :

      jetzt werden ab und zu neue leere Tabs aufgemacht. Wenn diese geschlossen werden ist in Ninox diese meldung da:

      Oder es kommen ab und zu neue Tabs mit dem angefordertem pdf. Es sind aber locker 15 min seit dem Aufruf.  

      Internet geschwindigkeit ist super.... daran liegt es auch nicht. Bin jetzt fleisig am Tab schließen 😡😡😡

      • Kruna
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Michi  das klingt ja dann eher nach einem Bug oder einem Konflikt.

      Eine Frage - "Name: " + Name - steht das im Trigger? Vllt liegt da ja ein Konflikt vor?

      Welches Programm benutzt Du?

      Ich hatte anfangs mit dynamischen Printlayouts 'herumexperimentiert'. Leider bin ich nicht sehr weit gekommen, denn ein 'knock-out' Kriterium war letztendlich, dass unsere CI-Schrift nicht unterstützt wird.

      Was ich aber festgestellt habe (zumindest war es so bei mir) - in MS word, Pages (umgewandelt in Word) und .ott (OpenOffice), sahen die Ausdrucke jeweils anders aus, zwar nicht gravierend schlimm und nur minimal, dennoch scheint es, je nach Software, in der Umwandlung anders zu 'reagieren'.

      Das war mir dann auch zu instabil und da ich meistens nur eine Seite drucke, bin ich dann doch beim klassischen PrintEngine geblieben.

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

       

       said:
      Eine Frage - "Name: " + Name - steht das im Trigger? Vllt liegt da ja ein Konflikt vor?

       Ist nur zur Verdeutlichung (von einem "normalen Drucklayout"), dass das Textfeld auch so im Datensatz vorhanden ist.

      Es geht ja jetzt.... nur verwenden kann man das gar nicht! Da brauche ich noch nicht mal weiter zu experimentieren. Druck erzeugen 15 Min. später ist dieses dann in einem neuen Tab im Browser vorhanden. (Firefox - Mac)

      2 Probleme hab ich aber eben. Ich benötige mehr als 100 pdf im Monat ... Heißt kostenpflichtig.

      100 Taler für Make werden schon gezahlt, dann noch 312 für Carbone ? Wo soll das denn enden? Daher der neue Beitrag im Forum https://forum.ninox.de/t/x2h9ly7/alternative-zu-carbon-io ist zwar auch kostenpflichtig, aber eben nach Verbrauchsabrechnung.

      Immer weiter, mit der internen Print Engine zu arbeiten ist auch keine Lösung, sorry sieht einfach scheiße bei Variablen Texten aus (Thema Seitenumbruch und Darstellung) da kann man mit Zeichen anzahlen welche Platzhalter auslösen arbeiten wie du willst, man Schaft es nicht alles abzubilden.

      Schlussendlich kommt eine Rechnung dabei raus, die in manchen Fällen einfach zum  ..... aussieht.

      Nur ein Platzhalter, welcher versucht den Zeilenumbruch zu regeln:

      let myPos := this;
      let textbaustein := text('Einfügen');
      let be := cnt(select Einzelpositionen where number(Rechnung) = myPos);
      let line := 40 - cnt(select Einzelpositionen where number(Rechnung) = myPos);
      let lineBreak := "
      ";
      let a := replacex(Rechnungshinweise, "\n", "*");
      let b := length(replacex(a, "[^*]", ""));
      let c := b + 1;
      let totalLineBreak := if be > 10 or c > 6 then
              for i in range(0, line) do
                  lineBreak
              end
          end;
      if be > 7 and c > 6 or be > 10 and be < 16 then
          textbaustein + totalLineBreak
      end
      
      • Kruna
      • vor 1 Jahr
      • Gemeldet - anzeigen

      das tut mir wirklich leid. Es ist ja ein ewiges Thema bzgl der Druckengine und manchmal ist es sehr frustrierend, wenn man gefühlt bei jedem Druck, herumfrickeln muss.

      Make & Co. - davon habe ich gar leider keine Ahnung. Ich 'schnalle' es einfach nicht, wie das funktionieren soll. Das liegt wahrscheinlich auch daran, dass ich mit Ninox (so wie es gerade ist) noch relativ gut zurecht komme, weil unser workflow relativ einfach gehalten ist.

      Und ganz ehrlich 480€ nur für Ninox ist schon sehr happig für unsere kleine Firma, da bleibt nicht mehr viel 'Raum' übrig für andere Dinge, aber gut...das ist jetzt hier nicht das Thema.

      Ich kann Deinen Missmut sehr gut verstehen, da sich die Kosten ganz schon summieren, da muss man echt abwägen.

      Ich lese mal bei Deinem Beitrag bzgl der Alternative 'docugenerate' mit, klingt interessant :-)

      Wenn ich mir gerade Dein 'Platzhalter'-Script anschaue, verstehe ich nur Bahnhof🤣

      Wäre es möglich, dass du eine test-db dazu hochladest? Vllt könnte ich so etwas auch bei mir adaptieren. Natürlich nur, wenn es keine Umstände macht und es ok für Dich ist.

       

      Gruß Kruna