Guten Morgen allerseits, im Zuge eins Projektes muss ich verschiedene spezielle Reports mit Perl als PDF erzeugen. Der Report hat mehr den Charakter eines "Belegs", das heisst es ist nicht die klassische Tabelle, sondern ein paar Kopfdaten, Fußzeile, dazwischen verschiedene Textblöcke mit längerem Freitext, hier aber auch tabellenförmige Überschriften. Die Daten selbst zu ermitteln und entsprechend zu formatieren ist kein Problem. Ich mach das auch bereits erfolgreich als HTML-Output, aber auch als Excel-Auswertung (wobei Excel mit "Freitexten" immer gewisse Probleme hat). Nun soll ich das aber als PDF erzeugen. Neben dem lästigen Problem der Seitenumbrüche (manchmal gehen die Freitext-Bereiche über mehrere Seiten, manchmal passen zwei oder mehrere davon auf eine Seite) bin ich mir momentan total unklar, über welchen Weg ich ein "schönes" PDF (mit Logo und so) erzeugen soll. Erzeugt muss der Report im Batch (ohne User-interface), dafür aber nur auf einer maschine, nämlich dem (Windows 2012-) Server. und, wie in der Überschrift ersichtlich, möglichst in Perl oder zumindest aus Perl ansteuerbar (die restliche Infrastruktur ist Perl-basierend). Open-Source-Lösungen wären bevorzugt. Der Klassiker "Crystal Reports" scheidet aus, ist ein Monster mit dem wir nur schlechte Erfahrungen haben. Ich suche eigentlich nicht mal einen "Report Generator", den komplexten Teil (Layout, Daten sammeln und umwandlen etc) habe ich eh schon perfekt im griff (wie gesagt, den Report als HTML zu erzeugen funktioniert bereits wunderbar) ich suche mehr ein "Zwischenformat" welches ich mit Perl einfach erzeugen kann (wie HTML), aus dem ich dann aber einfach ein schönes PDF erzeugen kann, mit sauberen Seitenumbrüchen. LaTeX oder ein Abkömmling wäre sicher eine Möglichkeit, aber das beherrsche ich leider überhaupt nicht... Ich bin für alle Vorschläge dankbar! Michi PS: ein Beispiel wie so ein Report aussehen soll, kann ich gerne mal vorbereiten, dafür müsste ich einen bestehenden aber erst "schwärzen"
:
Bearbeitet durch User
Jan Hansen schrieb: > Apache FOP? Danke für den Hinweis, kannte ich nicht... leider unmöglich (hab ich vergessen zu erwähnen): Java ist aufgrund einer IT-Richtline des Kunden nicht erlaubt (und ich kann und will nicht über den Sinn der Richtlinie diskutieren, ich kann sie nicht beeinflussen)
Wenn du schon HTML hast, wandle das doch als PDF um. entweder mit den Linux Tools "html2ps" und "ps2pdf" oder du googlest mal nach "html2pdf" Wobei du mit LaTeX wohl die besten Ergebnisse erzielen wirst, was Ausrichtung und Seitenumbrüche betrifft. Gruß Roland
Servus, wie schaut's aus das ganze als Late*x script zu erstellen und dann per Batch zu übersetzen? Das beherrscht sehr umfangreiche Tricks in Sachen automatische Formatierung, bzw. "angelernte" Formatierung. Gruß Jochen Edit: Roland war schneller hat aber wohl eine ähnliche Meinung.....
:
Bearbeitet durch User
Ich benutze JagPDF um aus C bzw C++ PDFs zu erstellen. http://www.jagpdf.org/ Im Prizip wird eine Basis-Bibliothek zur Verfügung gestellt, um einfache PDFs zu erzeugen. Text und Graphikfunktionen sind vorhanden. Ich habe das für ein Projekt und Windows verwendet, und aktuell benutze ich das unter Linux. Wie das mit einer Perl-Einbindung aussieht, kann ich nicht sagen. Perl ist eine Sprache, die ich mehr meide.
Hallo, bei CPAN gibt es doch ein PDF::API2 http://search.cpan.org/~ssimms/PDF-API2-2.022/lib/PDF/API2.pm Ob das für deine Ansprüche genügt kann ich nicht sagen. Ich kenne das nur für sehr einfache PDF Dokumente. Und für Perl ist CPAN immer die erste Adresse. Grüße aus Berlin
Wie schon oben erwähnt sind die Programme aus der TeX Umgebung wohl nicht verkehrt. Es gibt auch noch "troff" welches anders funktioniert und meines Wissens nach einfacher ist ich aber noch nicht probiert habe.
Für Perl kenne ich nichts dergleichen. Für Python gibt es Reportlab, das ich schon erfolgreich angewandt habe. Python-Programme kann man auch in Perl einbinden. Reportlab kann u.a. die von dir gewünschten Textformatierungen (Zeilen- und Seitennumbrüche, Kopf- und Fußzeilen, Seitunnummerieung u.ä.), darüberhinaus aber auch Diagramme und andere Grafiken. http://www.reportlab.com/ Für deine Zwecke reicht die Open-Source-Gratisversion.
Ich würde auch zu einem Typesetter greifen. TeX ist ein bisschen dick, würde aber sicher gehen. groff (GNU nroff, troff) wäre weiter vorne auf der Liste. Auch FOP (aber wenn der Kunde sich ins Hemd scheißt... [1]). Einen der erwähnten Typesetter, weil die relativ einfach zu bedienen sind und man aus einer Quelle diverse Ausgangsformate (HTML, PDF, etc.) erzeugen kann und nicht für jedes Format bei Null anfangen muss. -- [1] Eine "Kein Java" IT-Richtlinie (aber dafür Perl ...[2]), lässt darauf schließen, dass bei deinem Kunden eher begrenzt intelligente Leute die Entscheidungen treffen. Eventuell auf der Basis der Aussagen selbsternannter Überhacker in der IT-Abteilung. Solche Kunden sind gefährlich. Ich würde mit denen keine Details diskutieren, sondern machen. [2] Perl, die write-once, read-never Sprache, mit der jeder ohne besondere Absicht absolut unwartbaren Code schreiben kann. "There is more than one way to do it!" Oh ja, und jeder Weg muss mal ausprobiert werden.
Vielen Dank für eure Hinweise! Da hab ich ja mal einiges zu lesen... Über PDF::Api2 hab ich schon mal drübergelesen, das setzt aber wohl tiefe Kenntnisse der PDF-Struktur voraus (die ich nciht habe) und damit bindet man sich auch stark an PDF (wäre aber nciht so schlimm) TeX würde mich schon interessieren... ich hab das vor Jahren mal "indirekt" eingesetzt (automatische Doku-Generation aus Source-Code) bin dabei aber kaum mit der Sprache in Berührung gekommen, war aber vom Ergebnis mehr als begeistert... Auch wenns etwas "dick" ist, denke ich wäre ich damit "auf der sicheren Seite" im Sinne von "dann gibt es nix was ich damit nicht hinbekomme". ich hab zwar aktuell diese Anforderung, aber wir bräuchten sowas öfter, behelfen uns bisher mit Excel, aber das Anstarten von Excel und PDF speichern ist der blanke Horror ("Fehler: Default-Drucker konnte nicht gefunden werden"). Abgesehen von anderen Limitierungen von Excel... Zurück zu TeX: wäre jemand bereit (natürlich gegen Bezahlung), mir einen solchen Beispiel-Report (den ich als PDF, aber auch als RTF und HTML vorliegen habe, der kommt original aus einer Access-Anwendung) exemplarisch in irgendein sinnvolles TeX-Derivat zu wandeln, und mir bei der Auswahl der Toolchain (gibts dvips noch?) behilflich zu sein?
Mark 99 schrieb: > Eine "Kein Java" IT-Richtlinie lässt > darauf schließen, dass bei deinem Kunden eher begrenzt intelligente > Leute die Entscheidungen treffen. Eventuell auf der Basis der Aussagen > selbsternannter Überhacker in der IT-Abteilung. Starke Worte :-) Du kannst aber davon ausgehen dass die Leute schon wissen was sie tun. Ich selbst hab zwar nix gegen Java (liebe es aber auch nicht), kann aber die Abwehr der IT sehr gut nachvollziehen: sobald du verschiedene Software hast, von denen jede genau eine spezielle Java-Version (bis auf die letzte Dezimalstelle des patchlevels hinunter) braucht, in Komination mit den wöchentlich x Sicherheits-Updates, macht Java nicht gerade sehr beliebt... Mark 99 schrieb: > Perl, die write-once, read-never Sprache Die Perl-Diskussion führe ich gerne, aber nicht hier in diesem Thread, bitte.
Michael Reinelt schrieb: > Zurück zu TeX: wäre jemand bereit (natürlich gegen Bezahlung), mir einen > solchen Beispiel-Report (den ich als PDF, aber auch als RTF und HTML > vorliegen habe, der kommt original aus einer Access-Anwendung) > exemplarisch in irgendein sinnvolles TeX-Derivat zu wandeln, und mir bei > der Auswahl der Toolchain (gibts dvips noch?) behilflich zu sein? Kannst du den Beispiel-Report weit genug anonymisieren und dann hier öffentlich machen? Dann können wir dir alle helfen. dvips macht man eher nicht mehr. Heutzutage wirft man "pdflatex" an, welches dann gleich PDF rauswirft.
Jörg Wunsch schrieb: > Kannst du den Beispiel-Report weit genug anonymisieren und dann hier > öffentlich machen? Dann können wir dir alle helfen. Gerne! Alles was orange ist, da kommt (variabler) Text hin. größere orange bereiche enthalten mehrzeiligen text. Auf seite 2 (eigentlich 3/5) sieht man schon eine "Lästigkeit": hier kommen mehrere Blöcke mit jeweils einem eigenen Kopfbereich, und unterschiedlich langen Freitexten. Umbruch wird hier sicher lästig... Jörg Wunsch schrieb: > dvips macht man eher nicht mehr. Heutzutage wirft man "pdflatex" an, > welches dann gleich PDF rauswirft. Ah ja, ist halt doch schon gute 20 jahre her :-)
:
Bearbeitet durch User
Ich würde auch den Weg über LaTex empfehlen. Machen wir für unsere Test-Reports auch so. Python testet alles automatisiert und schmeißt die Ergebnisse in tex Files. Danach wird pdflatex angeworfen und das PDF ist fertig. Durch die Hierarchie-Ebenen und ImportIfFileExist kann man unvollständige Tests usw. da super handhaben.
Christian R. schrieb: > Ich würde auch den Weg über LaTex empfehlen. Gut ihr habts mich überzeugt (und ich hab mich nicht mal richtig gewehrt :-) jetzt brauch ich nur noch jemanden der mir hilft...
Michael Reinelt schrieb: > Alles was orange ist, da kommt (variabler) Text hin. größere orange > bereiche enthalten mehrzeiligen text. Sieht aus, als könnte man das als Tabellen aufbauen. Wie man die diversen Rahmen zimmert, müsste ich nachsehen, sowas ist in einem Textdokument sonst eher nicht üblich. > Auf seite 2 (eigentlich 3/5) sieht man schon eine "Lästigkeit": hier > kommen mehrere Blöcke mit jeweils einem eigenen Kopfbereich, und > unterschiedlich langen Freitexten. Naja, das ist für LaTeX nun weniger ein Thema, Textsatz ist ja eine übliche Aufgabe. ;-)
Jörg Wunsch schrieb: > Wie man die diversen Rahmen zimmert, müsste ich nachsehen, sowas ist > in einem Textdokument sonst eher nicht üblich. Bei dem Kunden ist viel "nicht üblich" :-) Wer verächtlich von "Raketentechnik" redet, liegt gar nicht weit daneben :-) Mir fiele ein großer Stein vom Herzen, wenn wir da eine passable Lösung fänden, ich schiebe diese Aufgabe jetzt schon monatelang vor mir her...
Jörg Wunsch schrieb: > Sieht aus, als könnte man das als Tabellen aufbauen. wenn ich "Tabellen" im Zusammenhang mit "LaTex" höre, kräuselt sich bei mir immer alles. Ich hab das als totalen Krampf in Erinnerung. LaTex ist echt toll, wenns um alles geht was mit *Text*-Satz zu tun hat und zugehörigen Verzeichnissen, aber Tabellen sind furchtbar. Da braucht man zig Pakete und ewiges Rumgefummel, bis es so aussieht, wie man es sich vorgestellt hat.
Vlad Tepesch schrieb: > Da braucht man zig Pakete und ewiges Rumgefummel, bis es so aussieht, > wie man es sich vorgestellt hat. Wird sich hier in Grenzen halten. Da das ja alles Formular-mäßig aussieht, gibt es feste Spaltenbreiten. Ich bin nur noch nicht dazu gekommen, mal ein Gerippe zu zimmern, das demonstriert, wie man es grundsätzlich angehen kann. Die Details kann Michael ja dann selbst ergänzen. An sich ist es natürlich richtig, so eine starre Formatierung der Ausgabe ist nicht unbedingt das, wo LaTeX glänzt. Andererseits fiele mir auch gerade nichts besseres ein, was man problemlos aus einem Script zimmern könnte. Für derartige Textrahmen in troff hätte ich jedenfalls erstmal gar keine Idee, für farbige Hinterlegungen auch nicht. p.s.: Tabellen, die sich über mehrere Seiten hinziehen, sind in der Tat etwas fummelig, aber das muss hier nicht sein. Da, wo die Seiten umgebrochen werden können, ist es ja alles wieder Fließtext, die Tabellen braucht man für die Feldaufteilung der ersten Seite.
:
Bearbeitet durch Moderator
Vlad Tepesch schrieb: > wenn ich "Tabellen" im Zusammenhang mit "LaTex" höre, kräuselt sich bei > mir immer alles. Zur not könnte man die Tabellen auch weglassen. Ein paar horizontale Linien tätens für den Anfang auch... Ein Rahmen um einen Block sollte aber möglich sein, oder?
Michael Reinelt schrieb: > Ein Rahmen um einen Block sollte aber möglich sein, oder? Ja, minipage in einer fbox (framed box), habe ich mir als Stichwort von meiner Frau auf den Weg geben lassen. ;-)
Bei Adobe gibt's die Doku zum Herunterladen. Ein PDF selbst zu erzeugen ist nicht sooo schwer ... ;)
Joachim Drechsel schrieb: > Ein PDF selbst zu erzeugen ist nicht sooo schwer ... ;) Naja, aber nochmal eine andere Größenordnung als ein LaTeX-File. Man könnte auch PostScript selbst zimmern und dann PDF draus machen lassen. Aber so'nen Kram wie die Textblöcke zu setzen will man sich eigentlich nicht zu Fuß antun.
Geht aber recht zügig ... Man muß ja nicht unbedingt komprimieren und so. Eigentlich ist es eine Liste mit Objekten die dann geeignet kombiniert werden. Hat man das einmal begriffen geht das mit einem ASCII-Editor.
:
Bearbeitet durch User
Jörg Wunsch schrieb: > habe ich mir als Stichwort > von meiner Frau auf den Weg geben lassen. ;-) Was hast denn du für Frauen? ;-)
Michael Reinelt schrieb: > Was hast denn du für Frauen? Nur eine, aber die kennt sich dafür mit LaTeX und XML aus. ;-) (Mit letzterem verdient sie sich ihre Brötchen.)
Joachim Drechsel schrieb: > Eigentlich ist es > eine Liste mit Objekten die dann geeignet kombiniert werden. Hat man > das einmal begriffen geht das mit einem ASCII-Editor. Ich weiß, ich habe vor 15 Jahren mal bei einer GUUG-Tagung einen Vortrag über PostScript als Programmiersprache gehalten. ;-) Ändert nichts dran, dass du dich um den ganzen Salat mit dem Textsatz kümmern musst. Das würde zumindest ich mir für einen derartigen Bericht nicht antun wollen.
Genug für heute. Erster Versuch hier. Für die \pageref{LastPage} muss man das pdflatex ggf. zweimal laufen lassen, da erst nach dem ersten Durchlauf die gesamte Seitenzahl feststeht. Schreib mal, ob dir der Weg prinzipiell so gefällt oder nicht.
Jörg Wunsch schrieb: > ob dir der Weg prinzipiell so gefällt JA! JA! JA! JA! Das sieht super aus, und das beste: Ich kann den LaTeX-Code sogar einigermaßen verstehen... Spannen wäre jetzt noch so ein Block mit längerem Fließtext, der schlimmstenfalls über eine Seite gehen kann...
Habe ein ähnliches Problem gehabt und das mit OO/Libreoffice gelöst. Zuerst wird eine .odt mit Platzhaltern erstellt. Zum .PDF erzeugen wird dann: - die .odt ausgepackt (zip) - die xml file gepatcht, also Platzhalter gegen realen Inhalt tauschen - wieder einpacken - von OO/Libreoffice als .pdf Abspeichern lassen (Headless per macro) Dauert keine Sekunde und du kannst direkt in OO/Libre Formatieren. Seite 1 von x geht so auch automagisch.
Michael Reinelt schrieb: > Spannen wäre jetzt noch so ein Block mit längerem Fließtext, der > schlimmstenfalls über eine Seite gehen kann... Habe ich auf Anhieb nicht ganz in der von dir gewünschten Formatierung hinbekommen, sondern nur, indem der Text auch auf der gesamten Seitenbreite formatiert wird. Versucht man, die Ränder schmaler zu machen, dann erfolgt dies auch bei den Kopf- und Fußzeilen. Tabellen mit Absätzen über Seitengrenzen hinweg, das hatten wir oben schon mal, sind nicht gerade die starke Seite von LaTeX. Weiß nicht, ob du mit dem hier leben kannst. Nutzt am Ende das Papier effektiver aus, als positiven Seiteneffekt. ;-) Vermutlich werden auch nicht alle Packages wirklich benötigt; die Liste stammt aus einem copy&paste eines anderen Dokuments.
> Tabellen mit Absätzen über Seitengrenzen hinweg, das hatten wir > oben schon mal, sind nicht gerade die starke Seite von LaTeX. Gibts dafür nicht supertabular? http://cs.brown.edu/about/system/software/latex/doc/supertabular.pdf
Georg A. schrieb: > Gibts dafür nicht supertabular? Weder mit supertabular noch mit longtable habe ich das vernünftig hinbekommen. Beide sind in der Lage, einzelne Tabellenzeilen gut über die Seiten zu verteilen, aber eine Zeile, die dann in einem Feld einen sehr langen Absatz enthält (p{XXX cm}), zu verteilen, haben sie nicht geschafft. Der entsprechende Textblock läuft dann unten aus der Seite raus. Andererseits: wenn man große Textblöcke hat und diese nur auf 2/3 der Papierbreite drucken lässt, ist das ziemliche Verschwendung. Vielleicht akzeptiert der Kunde das ja so. ;-)
Hallo Jörg, erstmals nochmal vielen Dank für deine Mühe! Leider komme ich erst jetzt dazu mich damit zu beschäftigen (Dienstreisen, und Chaos weil zwei Kollegen Urlaub und zwei andere krank waren :-( Ich hab mal TeXlive 2014 installiert, hat etwas gedauert rauszufinden wie man eine minimale Installation + pdflatex hinkriegt. Das tut mal. Jetzt muss ich mich intensiv mit dem Report selbst beschäftigen. ich fürchte da werden noch die einen oder anderen fragen aufkommen...
Vlad Tepesch schrieb: > Ich sag ja ... latex und Tabellen ... *würg* Schaut momentan nicht ganz so würg aus. ich komme gut voran...
Michael Reinelt schrieb: > Leider komme ich erst jetzt dazu mich damit zu beschäftigen Hatte mich schon gewundert. ;-) Viel Erfolg! Wenn du Fragen hast, frag ruhig, aber ich denke, dass zumindest die wesentlichen Elemente deines Resultat-Wunsches erstmal vorhanden sind. (Ein farblich hervorgehobenes Label oberhalb eines Textblockes war noch nicht dabei. Wenn das wichtig ist, wird sich aber sicherlich eine Lösung finden, beispielsweise, indem man die Überschrift einer \subsubsection umdefiniert oder sowas.) Vlad Tepesch schrieb: > latex und Tabellen Lange Tabellen; in allen anderen Fällen komme ich mit der LaTeX-Version immer noch besser klar als mit den diversen Offices.
Ich würde das auf HTML-Basis machen. HTML-Grundgerüst ist schnell erstellt, lesbar und einfach später abänderbar. Du brauchst nur ein Tool das HTML nach PDF wandelt da gibts ja Dutzende. Ich glaube Chrome kann direkt PDF ausgeben, musst es nur entspr. aufrufen, weiss auch nicht wie das unter Windows ist, unter Linux geht das mit dem Abkömmling Chromium, neben zig anderen Konvertierungstools wie convert von ImageMagick, wkhtmltopdf,... Bevor du das jedesmal nach PDF konvertierst setzt du an den entspr. Stellen im HTML-Quelltext deine entspr. Daten. So sparst du dir die Installation weiterer Softwaremonster wie LaTeX oder diverse PDF-Libs die viel zu umständlich und unflexibel für deine Trivialaufgabe sind. Das sind dann nur wenige Zeilen Perl für die ganze Chose. Das ist in max. 1h erledigt.
Perle schrieb: > Ich glaube Chrome kann direkt PDF ausgeben, ... > So sparst du dir die Installation weiterer Softwaremonster wie LaTeX Hmm. Hmm. :-) Wann hat man das letzte Mal ein Sicherheits-Update für LaTeX einspielen müssen? Das letzte für Chromium ist jedenfalls erst ein paar Tage alt ...
Wenn man für jeden Block, der einzeln auf einer Seite einen Sinn ergäbe, eine eigene tabular macht, ist das mit dem Seitenumbruch auch kein Problem mehr. Wenn wir ehrlich sind, ergibt langer Fließtext in Tabellen ohnehin wenig Sinn, da wird dann massiv Spaltenplatz verschenken. Perle schrieb: > Ich würde das auf HTML-Basis machen. HTML-Grundgerüst ist schnell > erstellt, lesbar und einfach später abänderbar. Jetzt hast Du allerdings noch nicht verraten, welcher HTML->PDF-Interpreter mit langen Tabellen sinnvolle Umbrüche erzeugt. Viele Grüße W.T.
Walter Tarpan schrieb: > Jetzt hast Du allerdings noch nicht verraten, welcher > HTML->PDF-Interpreter mit langen Tabellen sinnvolle Umbrüche erzeugt. Ab >= n Zeilen generierst du ein neues PDF mit enstspr. Seitenzahlen,... wo ist das Problem? Das ist noch gut handlebar und brauchst kein LaTeX-Monster, das du evt. gar nicht installieren darfst wenn die IT-Abteilung schon bei Java rumzickt. Vielleicht ist auch Office installiert, könnte mir vorstellen dass das auch per Script aufrufbar ist und in PDFs drucken kann, dann brauchst du nicht mal ein extra Tool dafür. LaTeX macht erst Sinn, wenn sich dein Grundaufbau und nicht nur die paar Bereiche auch dynamisch zusammensetzt oder exakte Formatierung wichtig ist. Aber selbst mit HTML kannst du heute sehr genau formatieren, musst nur die entspr. Styles setzen, ok ein bischen Gebastel ist es evt. doch je nach Renderengine aber das spielt ja hier eh keiner Rolle. Du hast ja immer nur Tabelleninhalte, ein paar Seitenzähler oder andere simple Marken die sich ändern, der Rest ist Vorlage und die klein und primitiv. Der Hinweis mit den Sicherheitslücken zu Chromium ist in diesem Zusammenhang völlig fehl am Platz und zeugt von nicht verstandener Problematik. Zudem war Chromium nur ein Beispiel von vielen um das PDF zu generieren.
Perle schrieb: > Ab >= n Zeilen generierst du ein neues PDF mit enstspr. Seitenzahlen,... Naja, also das ist im Vergleich zum PDFlatex-Ansatz allerdings wirklich kein Komfortgewinn. Da sind die eingebauten Mechanismen deutlich ausgereifter.
Walter Tarpan schrieb: > Wenn wir ehrlich sind, ergibt langer Fließtext in Tabellen ohnehin wenig > Sinn, da wird dann massiv Spaltenplatz verschenken. Das war dann auch meine Idee, bei der ich aufgehört habe, mir da irgendwie (vorerst) weitere Gedanken drum zu machen. Seitenweise nur zwei Drittel der Seitenbreite zu bedrucken, kann ja eigentlich nicht richtig sinnvoll sein. Perle schrieb: > Der Hinweis mit den Sicherheitslücken zu Chromium ist in diesem > Zusammenhang völlig fehl am Platz und zeugt von nicht verstandener > Problematik. Sicherheitsproblematiken waren aber, soweit ich mich erinnere, wesentliche Beweggründe, warum beispielsweise Java gar nicht erst in die Tüte kommen soll. > Zudem war Chromium nur ein Beispiel von vielen um das PDF zu generieren. Je weiter weg du aber von „modernen Browsern“ bist, um so schlechter dürfte es mit einer auch nur halbwegs exakten Formatierung des CSS im Ausdruck werden. Von vernünftiger Absatzformatierung oder gar Silbentrennung kann man dann wohl sowieso nur noch träumen.
Hallo allerseits, danke für die rege beteiligung. @Jörg: Fragen kommen schon noch, ich kumuliere gerade :-) Momentan siehts minütlich superer aus (super, superer, am supersten) HTML rendern: Hätte ich versucht, kannst du vergessen wenn du saubere Kopf- und Fußzeilen haben willst. Dafür ist HTM schlicht nicht gemacht. in meinem Fall ist dabei die herausforderung der lange Fließtext, der dynamisch umgebrochen werden muss. Da ist nix mit "zeilen zählen"... mit Office rendern: machen wir bei anderen Reports mit Excel. geht mehr schlecht als recht. Problem 1: Excel-Kopf- und Fußzeilen sind eine katastrophe. Problem 2: Sehr oft bleibt der Excel-batch stehen mit "der Standarddrucker ist nicht mehr verfügbar" (Dreckszeug, elendes...)
:
Bearbeitet durch User
Hi Michael, dann probiere es halt doch einmal direkt. Kopf- und Fußzeile definieren und fest positionieren, dann Zeilen zählen und den Kram wegschreiben. Man muß weder komprimieren noch unbedingt komplexeste Grafiken in ein PDF einbauen. Die obj-Liste erzeugen, dabei die Positionen merken und Schluß als Crosreference ausgeben ist relativ einfach. HTML ist halt kein Layout- oder Textprogramm.
Joachim Drechsel schrieb: > Hi Michael, > > dann probiere es halt doch einmal direkt. > > Kopf- und Fußzeile definieren und fest positionieren, dann Zeilen > zählen und den Kram wegschreiben. Man muß weder komprimieren noch > unbedingt komplexeste Grafiken in ein PDF einbauen. > > Die obj-Liste erzeugen, dabei die Positionen merken und Schluß als > Crosreference ausgeben ist relativ einfach. > > HTML ist halt kein Layout- oder Textprogramm. Äh doch, wenn man von Stylesheets schon mal was gehört hat und nicht auf dem Kenntnissstand von HTML deutlich kleiner Version 5 ist, sowas ist Kinderkram. Selbst mit Holzhammermethoden aus der Steinzeit wie Frames bekommt man das hin. Ausser Silbentrennung geht das oben alles. Wenn das allerdings schon eine Hürde ist, dann ist LaTex doch der bessere Weg allerdings muss man dort auch wissen was man tut, insofern schenkt sich das nix. Braucht man die Silbentrennung kann man LaTeX nehmen oder Office. Gerade mal nachgeschaut was mit dem Perlmodul Win32 geht: Du kannst auch direkt von Perl aus auf Officemacros zugreifen, COM, OLE -> damit geht alles, was sonst unter Windows von anderen 'hauseigenen' Sprachen automatisierbar ist. Drucken in PDF kannst du so auch initieren. Macro definieren: Sub Drucken() Application.PrintOut filename:="", _ Range:=wdPrintAllDocument, _ Item:= wdPrintDocumentContent, _ copies:=1, _ Pages:="", PageType:=wdPrintAllPages, _ Collate:=True, Background:=False, PrintToFile:=True ' PDF option entsprechend setzen, bin jetzt zu faul zum nachschlagen End Sub Das ruftst du dann von Perl aus auf: use Win32::OLE; $word = new Win32::OLE 'Word.Application' or die "Fehler!"; $word->{Visible} = 0; $word->Documents->Open(‘c:/vorlage.doc’); $word->Application->Run("Drucken"); $word->Quit(); Also ehrlich gesagt wenn Office verfügbar ist würde ich das so machen, dann brauchst du Perl nur noch um die Aktion anzustossen. Eigentlich brauchst du nicht mal mehr Perl, hauseigene Scriptsprache reicht schon, Powershell,... je nachdem was auf dem Server installiert ist. Um entspr. deine Vorlage zu generieren kannst du auch ein Macro definieren, da kannst du dann komfortabel auf Abschnitte, Tabellen, beliebig zugreifen. Weiss nicht wo deine Daten herkommen, dementsprechend musst du sie einlesen oder mit Perl,... vorformatieren,... je nachdem was für dich einfacher ist.
Perle schrieb: > Also ehrlich gesagt wenn Office verfügbar ist würde ich das so machen, Ich habs doch oben schon geschrieben: Wir machen das schon so! Aber das funktioniert ganz schlecht: a) mit Excel kriegt man solche Reports so nciht hin (allein wegen der Kopfzeile, Logo etc), und b) wenn Excel (oder Office allgemein) keinen Standarddrucker findet, startet es nicht. Und der Standarddrucker ist schnell (versehentlich) verstellt, da reicht eine falsche RDP-Anmeldung!
So, die erste Frage: das versteh ich nicht:
1 | \documentclass[10pt,a4paper,oneside]{article} |
2 | \renewcommand{\familydefault}{\sfdefault} |
3 | \usepackage[a4paper,top=1cm, bottom=5cm, left=2.5cm, right=1.5cm, includeheadfoot]{geometry} |
4 | \usepackage[utf8]{inputenc} |
5 | \usepackage{array} |
6 | \begin {document} |
7 | \begin{tabular}{|>{\centering\arraybackslash}m{2cm}|m{9cm}|>{\centering\arraybackslash}m{2cm}|>{\centering\arraybackslash}m{2cm}|} |
8 | \hline
|
9 | \textbf{A} & \textbf{B} & \textbf{C} & \textbf{D}\\ |
10 | \hline
|
11 | xxx \newline yyy & |
12 | blahfasel \newline the quick brown fox jumps \newline over the lazy dog & REI & 2014-09-29\\ |
13 | \hline
|
14 | \end{tabular}
|
15 | \end {document} |
Das Ergebnis sieht aus wie im angehängen PDF, was mich stört ist dass die erste der beiden Zeilen in Spalte A nicht zentriert ist. Wenn ich noch mehr zeilen einfüge (mit \newline getrennt) sind alle bis auf die letzte nach links verschoben.
Ich hab's mal schnell probiert - das Problem ist aber knifflig. p-Tabellenspalten und zentriert sind für LaTeX nicht unbedingt eine ideale Kombination, zumal "zentriert" auch die automatische Silbentrennung ausschaltet (die gibt es nur im Blocksatz).
P.S.: Ich würde also mit normalen p-Spalten anfangen, wenn die Tabelle erst einmal vollständig ist gibt es oft wenig Grund, zu "zentriert" zu wechseln.
Walter Tarpan schrieb: > p-Tabellenspalten und zentriert sind für LaTeX nicht unbedingt eine > ideale Kombination, zumal "zentriert" auch die automatische > Silbentrennung ausschaltet (die gibt es nur im Blocksatz). Die drei Spalten möchte ich schon gerne zentriert haben. Spalte 1 enthält im Endeffekt eine Zahl (1..99) und darunter ein Wort (eins von drei möglichen, also keine Silbentrennung nötig), Spalte C ein dreibuchstabiges kürzel, spalte D ein Datum.
Naja, für zentriert ohne Zeilenumbruch sind die klassischen "c"-Spalten da.
Walter Tarpan schrieb: > Naja, für zentriert ohne Zeilenumbruch sind die klassischen "c"-Spalten > da. Denen kannste aber keine Breite vorgeben.
Ich hoffe, folgender Code hilft weiter. Er enthält einige zusätzliche Definition für die Spalten: horizontalen Abstand entfernen, \newline umdefinieren.
1 | \documentclass[10pt,a4paper,oneside]{article} |
2 | \renewcommand{\familydefault}{\sfdefault} |
3 | \usepackage[a4paper,top=1cm, bottom=5cm, left=2.5cm, right=1.5cm, includeheadfoot]{geometry} |
4 | \usepackage[utf8]{inputenc} |
5 | \usepackage{array} |
6 | \begin{document}
|
7 | \newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} |
8 | \begin{tabular}{|C{2cm}|m{9cm}|C{2cm}|C{2cm}|} |
9 | \hline
|
10 | \textbf{A} & \textbf{B} & \textbf{C} & \textbf{D} \\ |
11 | \hline
|
12 | xxx \newline yyy & blahfasel \newline the quick brown fox jumps \newline over the lazy dog & REI & 2014-09-29\\ |
13 | \hline
|
14 | \end{tabular}
|
15 | \end {document} |
Die Lösung wurde in folgendem Thread gefunden: http://tex.stackexchange.com/questions/12703/how-to-create-fixed-width-table-columns-with-text-raggedright-centered-raggedlef
Jörg Wunsch schrieb: > Walter Tarpan schrieb: >> Naja, für zentriert ohne Zeilenumbruch sind die klassischen "c"-Spalten >> da. > > Denen kannste aber keine Breite vorgeben. Das stimmt. Zumindest nicht direkt. Man könnte nur mit \phantom in einer Zelle eine Mindestbreite erzwingen.
Wenn ihr Probleme mit überlaufenden Zellen (nach unten hin) habt. Leider geht es nur, wenn die Sachen umbrechbar (THIS_Is_A_Cool_filnemae_bla_bla ... wird ja nicht wirklich umgebrochen) sind:
1 | \makeatletter |
2 | \newbox\cut@desc |
3 | \newenvironment{cutlines}[1][2]{% |
4 | \@tempdima=#1\relax |
5 | \setbox\cut@desc\vbox\bgroup |
6 | \parskip=0pt |
7 | }{% |
8 | \egroup |
9 | \vsplit\cut@desc to \@tempdima |
10 | } |
Example code:
1 | \begin{cutlines}[3\baselineskip] % 3 lines only |
2 | \lipsum |
3 | \end{cutlines} |
Another code, which uses a command:
1 | \newsavebox\descripbox |
2 | \newsavebox\partialbox |
3 | \newcommand\vtruncate[2]{% |
4 | \setbox\descripbox\vbox{{#2\par}}% |
5 | \setbox\partialbox\vsplit\descripbox to #1\relax |
6 | \vtop{\unvbox\partialbox}% |
7 | % or use \par\unvbox\partialbox |
8 | } |
Perle schrieb: >> HTML ist halt kein Layout- oder Textprogramm. > Äh doch, wenn man von Stylesheets schon mal was gehört hat und nicht auf css ist für das layout zuständig, html für auszeichnungen und die struktur (und meta-daten). aber html ist NICHT für das layout zuständig (w3m funktioniert z.b. ganz gut ohne css bzw. interpretiert ein paar farben, aber das wars dann schon im großen und ganzen)
Daniel F. schrieb: > Perle schrieb: >>> HTML ist halt kein Layout- oder Textprogramm. >> Äh doch, wenn man von Stylesheets schon mal was gehört hat und nicht auf > > css ist für das layout zuständig, html für auszeichnungen und die > struktur (und meta-daten). > aber html ist NICHT für das layout zuständig (w3m funktioniert z.b. ganz > gut ohne css bzw. interpretiert ein paar farben, aber das wars dann > schon im großen und ganzen) HTML bildet eine logische Struktur, CSS das Layout ;)
Daniel F. schrieb: > css ist für das layout zuständig, html für auszeichnungen und die > struktur (und meta-daten). > aber html ist NICHT für das layout zuständig (w3m funktioniert z.b. ganz > gut ohne css bzw. interpretiert ein paar farben, aber das wars dann > schon im großen und ganzen) Was willst du uns jetzut mit deiner Wortklauberei sagen? CSS wird im Zusammenhang mit HTML bentzt dass HTML formal kein Layout definiert weiss jeder der damit zu tun hat. Da wollte mal wieder einer Klugscheissen, ne?
Könntet ihr bitte eure CSS/HTML-Diskussion in einem separaten Thread führen? Michael hatte doch wohl deutlich genug zu verstehen gegeben, dass er mit der LaTeX-Lösung bereits kurz vorm Ziel ist. Die Lösungsansätze sind schließlich vor knapp drei Wochen diskutiert worden.
Abschluss: ich konnte mit toller Unterstützung von Jörg (und seiner besseren Hälfte) die Reports in einer sehr guten Qualität mit TeX erstellen, das funktioniert wirklich ganz ausgezeichnet! nebenbei bin ich überrascht, wie schnell TeX arbeitet, das Erstellen des TeX-Quellcodes mit perl geht ja sowieso blitzschnell, aber auch die Umwandlung in PDF ist in etwa 1-2 Sekunden erledigt. insgesamt voller Erfolg auf der ganzen Linie! Angenehmer Nebeneffekt: ich habe endlich etwas TeX gelernt, und bin für zukünftige Aufgaben in diese Richtung gewappnet! herzlichen Dank nochmal an alle Unterstützer, allen voran natürlich Jörg & seine Frau! lg Michi
Michael Reinelt schrieb: > die Reports in einer sehr guten Qualität mit TeX > erstellen, das funktioniert wirklich ganz ausgezeichnet! tja, es geht halt nichts über ein textsatzsystem anstatt irgendeiner unsäglichen software (office-suiten quer durch die bank) oder einer pdf-library die genausowenig auf den satz achtet. zum schluss bleibt nur noch die Frage \TeX oder \LaTex? oben war von \LaTeX die rede, in deinem letzten beitrag von \TeX ;-)
:
Bearbeitet durch User
Daniel F. schrieb: > zum schluss bleibt nur noch die Frage \TeX oder \LaTex? oben war von > \LaTeX die rede, in deinem letzten beitrag von \TeX ;-) Wenn ich das so genau wüsste :-) ich verwende die TeXlive-Installation unter Windows (und auch unter Linux, wo ich entwickle), die bringt vermutlich LaTeX (neben ein paar anderen Makro-Paketen) mit. Zum Umwandeln in PDF verwende ich "pdflatex", was wohl auch auf LaTeX schließen lässt.
Daniel F. schrieb: > \TeX oder \LaTex? Letzteres. Plain TeX wäre nochmal 'ne andere Hausnummer. Die hätte zwar sicher die Aufgabe besser im Rahmen der Vorgabe lösen können, aber Leute mit Know-How dafür sind leider wohl noch dünner gesiedelt als bei LaTeX. Es freut mich, dass auch mit Hilfe des Forums hier eine Lösung zustande gekommen ist, mit der nicht nur du deine Aufgabe erledigt hast, Michi, sondern mit der auch dein Kunde zufrieden ist. Auf dass den Leuten das Gefühl für einen ordentlichen Textsatz mal nicht völlig abhanden kommen möge. ;-) (In diesem Sinne auch ein wenig im Vermächtnis meines Onkels, der mal vor vielen Jahrzehnten Schriftsetzer gelernt hatte. :)
Jörg Wunsch schrieb: > Daniel F. schrieb: >> \TeX oder \LaTex? > > Letzteres. ich habs mir fast gedacht ;-) (\TeX ist mir eine (nicht ganz kleine) spur zu hart - da bleibe ich lieber bei latex. auch wenn die google-suche hin und wieder überhaupt nicht das ausspuckt was man eigentlich sucht :-) Michael Reinelt schrieb: > Zum Umwandeln in PDF verwende ich "pdflatex", was wohl auch auf LaTeX > schließen lässt. jep, latex - wobei (wenn ich mich nicht täusche) in texlive auch ein "nacktes" tex enthalten ist...
Jörg Wunsch schrieb: > Auf dass den Leuten > das Gefühl für einen ordentlichen Textsatz mal nicht völlig abhanden > kommen möge. Da hat LaTeX natürlich erhebliche Mängel, aber wie das so ist mit dem Einäugigen unter den Blinden. :-)
Gustav schrieb: > Jörg Wunsch schrieb: >> Auf dass den Leuten >> das Gefühl für einen ordentlichen Textsatz mal nicht völlig abhanden >> kommen möge. > > Da hat LaTeX natürlich erhebliche Mängel, aber wie das so ist mit dem > Einäugigen unter den Blinden. :-) Wer oder was wäre denn deiner Meinung nach ein "Sehender" was Textsatz betrifft?
Michael Reinelt schrieb: > Wer oder was wäre denn deiner Meinung nach ein "Sehender" was Textsatz > betrifft? Ein gelernter Schriftsetzer?
Michael Reinelt schrieb: >> Da hat LaTeX natürlich erhebliche Mängel, aber wie das so ist mit dem >> Einäugigen unter den Blinden. :-) > > Wer oder was wäre denn deiner Meinung nach ein "Sehender" was Textsatz > betrifft? Einen richtig Sehenden gibts nicht. Am ehesten InDesign, aber da muß man selbst schon richtig Ahnung von Textsatz haben, um die Wahlfreiheiten richtig zu nutzen. LaTeX ist halt "gut per Default". Zeilenumbruch macht TeX ja super. Absätze auf Seiten umbrechen nicht. Das liegt aber auch an der Herkunft von anno dunnemal, da reichte die Rechenleistung schlicht nicht. Das "normale" LaTeX (pdflatex) leistet sich aber auch viele, viele Schwächen: Unicode, OpenType-Features etc. XeLaTeX, LuaTeX und Konsorten kümmern sich drum, aber halt alle für sich und inkompatibel.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.