![]() |
PDF Handhabung und Drucken
Hallo; Ich bin bei der Suche zur Lösung meines Problems auf dieses Forum gestoßen und dachte mir dass hier sicher einige kompetente menschen sind, die mir einen denkanstoß verpassen können, oder zumindest sagen können, ich sollte es lassen. Vielen dank schon mal im voraus.
Das Problem ist folgendes; Ich habe ein offizielles Formular (Vergleichbar mit einer Steuererklärung) und das soll über eine grafische Oberfläche am Computer ausgefüllt werden. Soweit so gut. Mit der Handhabung der Felder (Summen rechnen, Prozentual-Rechnungen, etc.) komme ich klar, allerdings ist mein erstes Problem das öffnen dieser PDF datei (unausgefülltes Formular). Ich wollte eigentlich das Dokument im Hintergrund haben, damit der Benutzer auch das richtige Dokument vor Augen hat und dann, über Textfelder "über" dem Formular seine Eingaben machen kann. Dies habe ich nicht geschafft. erste hürde. also hab ich das ganze einfach gerendert und als bild eingefügt. nicht sonderlich elegant, aber es funktioniert. Das Problem was sich mir jetzt stellt ist wie ich das endgültige dokument drucken kann (speichern sollte man es auch können aber drucken ist das hauptproblem). Es gibt da verschiedene Möglichkeiten. Entweder erstellt mir mein Programm eine NEUE .pdf mit den ausgefüllten werten, oder aber ich manage es irgendwie das ganze zu drucken ohne über irgendwelche pdf-exportationen fahren zu müssen. Bei der ersten Methode müsste ich also bestimmte Strings an ganz präzisen positionen in einem Bild (oder noch lieber in einer pdf-seite) einfügen. Kann mir evtl jemand weiterhelfen, ob und wie dies möglich sein soll? Wenn jemand ne andere möglichkeit sieht; ich bin für alles offen. Vielen Dank im voraus für jegliche Hilfe und jede Idee. Mit freundlichen Grüssen (Ich benutze Delphi 7) |
Re: PDF Handhabung und Drucken
Hmmm ... mir scheint, das du nicht unbedingt an das PDF gebunden bist. Richtig? Wenn ja, dann könntest du deine Art der Eingabe ja weiter so machen (mit dem Bild im Hintergrund). Zum Drucken würde dann ein "Report" gehen, wie ihn die Datenbänker nutzen. Z.B. Quickreport. Da kannst du dir wieder dein Bild in den Hintergrund legen, dann die Label auf den Report an der richtigen Stelle positionieren und drucken.
|
Re: PDF Handhabung und Drucken
Vielen Dank schonmal für die Antwort. Diese Möglichkeit scheint mir plausibel. Gibt es hierzu vielleicht irgendwo etwas wo ich das nachlesen kann. hab das so direkt im help nicht gefunden.
Heißt das, dass es nicht (so einfach) möglich ist, sozusagen strings an präzisen positionen "über" eine pdf datei zu platzieren? Vielen dank |
Re: PDF Handhabung und Drucken
Hi,
um mit PDFs zu hantieren gibt es das gute und günstige Toolkit ![]() cu |
Re: PDF Handhabung und Drucken
Zitat:
Natürlich könntest du auch das Bild auf dem Drucker-Canvas ausgeben und dann pixelgenau die Strings reinmalen. Das ist aber imho eine Heidenarbeit, weil du viel probieren musst. Aber es ist möglich. |
Re: PDF Handhabung und Drucken
Vielen dank für die Informationen! Werde mir das alles anschauen.
Zitat:
Trotzdem vielen dank nochmal für die schnelle und gute hilfe. Gibt es evtl noch einen guten link, auf dem das drucken unter delphi erklärt wird. bin da, als laie, noch nicht so richtig schlau draus geworden mfg |
Re: PDF Handhabung und Drucken
(sorry für doppelpost, aber gerade stellen sich mir neue probleme...)
Ich habe es nun so gelöst wie angegeben; Eingabe erolgt über Editboxes, die über dem formular (als bild) platziert sind. Das ganze wird dann über Rave Report "ausgewertet". Meine Frage ist nun; Gibt es alternativen zu dem Rave-Report? Wie gut ist Rave? Mich stört ein wenig dass ich die Print-Preview z.b. nicht mehr bearbeiten kann. Oder gibt es eventuell die Möglichkeit nicht nur über
Delphi-Quellcode:
den report anzuzeigen. Durch den Execute-Befehl habe ich keinen einfluss mehr über die weitere benutzung. Das "Print to file" z.b. möchte ich unterbinden, allerdings ist die "disable" lösung relativ unelegant. Mich würde z.b. interessieren, direkt eine Print-Preview aufrufen zu können, oder direkt printen zu können. Ist dies möglich?
RvProject.Execute;
Ich entschuldige mich für die anfängerhaften fragen, aber das internet gibt leider relativ wenig informationen zu diesem thema. Ausser shareware programmen finde ich nichts wirklich brauchbares. Vielen dank noch einmal. |
Re: PDF Handhabung und Drucken
Sorry, das ich jetzt nicht auf deine Frage antworte, aber mir ist da noch was eingefallen.
Neulich habe ich ein Frontend für ![]() Die einzige Schwierigkeit dabei ist imho, das du erstmal herausfinden musst, wie so ein FDF-File aufgebaut ist. |
Re: PDF Handhabung und Drucken
Danke für den tip. ICh habe es aber richtig verstanden dass man dieses pdftk nicht in ein delphi-programm einbinden kann, sondern nur als stand-alone aufrufen? Wäre natürlich nicht schlecht, allerdings ziehe ich den anderen weg vor, in dem ich alles mit einem programm machen kann. Zudem denke ich, dass das programm auch nur richtige PDF-Forms auffüllen kann. Leider ist meine Vorlage keine Form. Danke trotzdem für die nützlichen informationen
|
Re: PDF Handhabung und Drucken
@vimo:
so auf die schnelle: erstellt mit der RvProject und dem NDRWriter als Engine eine NDR-Datei (egal ober File oder Stream); dann kannst Du mit dieser NDR-Datei alles "anstellen", d.h. es gibt die Preview, Printer und Render-Komponenten; und alle nutzen die einmal erstelle NDR-Datei und selbst die Preview geht mit einer eingenen ScrollBox in deiner Applikation. einen Ausdruck von unterschiedliche Seiten etc. geht z.B. auch so:
Delphi-Quellcode:
procedure TFExport.DruckReportDetails;
var OldEngine: TRpComponent; ReportStream: TMemoryStream; RvNDRWriter2: TRvNDRWriter; RvRenderPrinter2: TRvRenderPrinter; begin ReportStream := TMemoryStream.Create; RvRenderPrinter2 := TRvRenderPrinter.Create(nil); RvNDRWriter2 := TRvNDRWriter.Create(nil); with RvNDRWriter2 do begin StreamMode := smUser; Stream := ReportStream; end; OldEngine := RM.RavePro.Engine; RvNdrWriter2.Title := 'DP-Applikation'; RM.RavePro.Engine := RvNDRWriter2; RM.RavePro.ExecuteReport('xxxxReport'); RvRenderPrinter2.NDRStream := ReportStream; RvRenderPrinter2.RenderPage(1); RvRenderPrinter2.RenderPage(4); RvRenderPrinter2.RenderPage(2); RvRenderPrinter2.RenderPage(2); RvRenderPrinter2.RenderPage(4); RvRenderPrinter2.RenderPage(3); RM.RavePro.Engine := OldEngine; ReportStream.Free; RvRenderPrinter2.Free; RvNDRWriter2.Free; end; :-) thomas, TeamNevrona |
Re: PDF Handhabung und Drucken
Danke @ Merlin aber ich erhalte bei deinem Snipplet ein Stream data error.
Habe ich das richtig verstanden dass man mit deinem script den report drucken kann ohne das fenster für "Report Output" anzeigen zu lassen, und dass dies auch für die Preview funktioniert. Also dass ich die Preview in einer von mir festegelegten scrollbox anzeigen kann? |
Re: PDF Handhabung und Drucken
Hallo,
zu 1. wo genau ist der StreamError (bis auf die Rep-Name ist es aus einem "echt"-verfahren und läuft bei mir problemlos!) zu 2. genau! die NDR wird einmal erstellt (wenn du den Stream "weiter oben" deklarierst ist die Verfügbarkeit länger) und die kannst sowohl preview als auch print und rendern in pdf von der einmal erstellten NDR durchführen! :-) thomas, TeamNevrona |
Re: PDF Handhabung und Drucken
Ich erhalte das Stream read error in der Zeile
RvProject.Engine := OldEngine; (alles was ich geändert habe ist Rm.Ravepro.Engine in RvProject.Engine umgewandelt. Und ich habe bei den renderpage() befehelen alle bis auf die erste weggenommen) Entwschuldigung für die Mühe die ich dir bereite :oops: |
Re: PDF Handhabung und Drucken
wirf' mal alle OldEngine - zeilen raus.... (dient nur dazu den alten Engine-Stand zu sichern und wieder herzustellen)
und bei den PrinterRender nehme mal nur eine Zeile mit Page1 ich habe nämlich in dies Proc nicht die echte Zeilenanzahl abgeprüft, da es immer 4 Seiten sind... :-) thomas, TeamNevrona |
Re: PDF Handhabung und Drucken
Der fehler scheint in der zeile
ReportStream.Free; zu sein. Kann es vielleicht sein dass ich nur RaveReport ver. 5 habe? Es würde mich schon interessieren wie ich das handhaben kann und ich hoffe dass ich da eine möglichkeit finde. Ziel wäre es dann, einen Button für eine PrintPreview zu öffnen, und einen Button zum Direkt-Drucken. Dieses RaveReport Output-fenster ist nicht besonders userfriendly und auch nicht nötig für meine zwecke |
Re: PDF Handhabung und Drucken
ReportStream.Free ist eine Delphi.Sache, hat nichts mit Rave zu tun.....
ohne Free hast du für Testzwecke "nur" ein MemoryLeak, was solls, kommentiere es einfach mal aus <g> dieser Weg geht sogar schon mit Rave3 von 1998.... Zitat:
:-) thomas |
Re: PDF Handhabung und Drucken
Hm OK. bei nevrona ist wirklich alles erklärt. allerdings habe ich schwierigkeiten, wahrscheinlich ist mein rave-projekt falsch aufgebaut. Ausser der System-Engine kann ich nichts aufrufen. gibt es evtl lektüre im internet wo ich eine allgemeine anleitung zu rave finden kann. evtl tutorials oder so, also wirklich für anfänger. Denn mir scheint dass da noch grosse probleme auf mich zukommen werden. Vielen dank jedenfalls schonmal an merlin und auch die anderen für die kompetente hilfe. wenn ich das bloss noch gebacken kriegen würde...
|
Re: PDF Handhabung und Drucken
Hallo,
2003 gab es in der Zeitschricht "Der Entwickler" 3 oder 4 Artikel über Rave5; auf der nevrona.com/rave addOn-Page gibt es einige Tutorials und FirstStepsArtikel, alternativ gibt es Rave-Schulungen :wink: :-) thomas, TeamNevrona |
Re: PDF Handhabung und Drucken
Falls Du Geld ausgeben kannst schau dir mal die VPE (Virtual Print Engine) auf
![]() Die hat zwar keinen WYSIWYG-Editor aber kann eigentlich genau das, was Du machen willst (Bild in Hintergrund legen, eigenen Content drüber knallen, Preview mit genauen Positions-Angaben anzeigen und das ganze bei Bedarf als PDF ausdrucken). Auf der Homepage gibt's auch 'ne Trial-Version. Ich verwenden die schon länger und bin recht zufrieden damit! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz