Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi PDF Handhabung und Drucken (https://www.delphipraxis.net/63704-pdf-handhabung-und-drucken.html)

vimo 21. Feb 2006 20:45


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)

chaosben 22. Feb 2006 05:38

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.

vimo 22. Feb 2006 05:54

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

sECuRE 22. Feb 2006 06:01

Re: PDF Handhabung und Drucken
 
Hi,

um mit PDFs zu hantieren gibt es das gute und günstige Toolkit iSEDQuickPDF, damit habe ich gute Erfahrungen gemacht.

cu

chaosben 22. Feb 2006 06:10

Re: PDF Handhabung und Drucken
 
Zitat:

Zitat von vimo
Heißt das, dass es nicht (so einfach) möglich ist, sozusagen strings an präzisen positionen "über" eine pdf datei zu platzieren?

Ich verstehe noch nicht, was du mit "darüber platzieren" meinst. Mit den Standard-Tools von Delphi hast du ja keinen Zugriff auf ein PDF. Dazu bräuchtest du eine Bibliothek, wie sie sECuRE gepostet hat.
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.

vimo 22. Feb 2006 06:34

Re: PDF Handhabung und Drucken
 
Vielen dank für die Informationen! Werde mir das alles anschauen.
Zitat:

Zitat von chaosben
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.

Das ist aber, so wie ich es sehe die einzige möglichkeit... das ist auch der grund warum ich gefragt hatte, um evtl eine neue pdf zu erstellen; so würde ich beim coding wenigstens schneller kontrollieren können ob und wieviel ich bei den platzierungen falsch liege.

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

vimo 22. Feb 2006 20:18

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:
RvProject.Execute;
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?
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.

chaosben 23. Feb 2006 05:19

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 pdftk geschrieben. Das Frontend wird dir wenig nützen, aber das pdftk bietet an, mit Hilfe eines *.fdf - Files ein pdf-Formular auszufüllen. Auf deutsch: du rufst das pdftk mit deiner Vorlage und dem fdf - File (welches die Formular-Daten enthält) auf und bekommst ein vollständig ausgefülltes PDF zurück. Das könntest du dann ganz normal drucken.
Die einzige Schwierigkeit dabei ist imho, das du erstmal herausfinden musst, wie so ein FDF-File aufgebaut ist.

vimo 23. Feb 2006 06:19

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

merlin17 23. Feb 2006 09:04

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz