AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Quickreport nach PDF Delphi 7
Thema durchsuchen
Ansicht
Themen-Optionen

Quickreport nach PDF Delphi 7

Ein Thema von KlausV · begonnen am 23. Sep 2020 · letzter Beitrag vom 25. Sep 2020
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Quickreport nach PDF Delphi 7

  Alt 23. Sep 2020, 09:36
Hallo,
das geht mit FreePDF meines Wissens nicht.

Kostenpflichtig wäre eDocPrintPro, der hat u.a. eine COM-Schnittstelle.
Heiko
  Mit Zitat antworten Zitat
KlausV

Registriert seit: 29. Aug 2017
Ort: 68809 Neulußheim
62 Beiträge
 
Delphi 7 Professional
 
#2

AW: Quickreport nach PDF Delphi 7

  Alt 23. Sep 2020, 09:45
Hallo,
wenn es mit dem Microsoft PDF Treiber geht, wäre das auch perfekt.

Habe hierzu etwas gefunden:
https://stackoverflow.com/questions/...elphi/45620791

Nur wie binde ich meinen Report hier ein?


Danke.

Klaus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.203 Beiträge
 
Delphi 12 Athens
 
#3

AW: Quickreport nach PDF Delphi 7

  Alt 23. Sep 2020, 10:32
Du kannst natürlich auch mit deinem Report als JPEG/PNG/... exportieren und anschließend daraus eine PDF erzeugen.
* mit einem Consolen-Tool
* einer Delphi-PDF-Komponente
* oder selbst über TPrinter die Bilder auf Printer.Canvas malen (mit SetPrinter den Dateinamen setzen)
*** https://stackoverflow.com/questions/...elphi/45620791
* QuickReport nutzt ja beim Drucken auch die DruckAPI, und vermutlich direkt TPrinter
*** diese Stelle müsstest du suchen und schauen, wie du dort das SetPrinter einfügst (entweder in den Code oder du hast Glück und dort gibt es ein Event)

Aber idealer ist es, wenn die Reportkomponente den PDF-Export selbst macht, ohne eine Bild-Datei dazwischen,
damit in der PDF der Text selektierbar/durchsuchbar/kopiertbar bleibt, und nicht alles nur ein großes Bild pro Seite wird.
[EDIT] mit EMF/WMF als Zwischenformat könnte es auch gehen, wenn in der MetaFile die Texte auch als Text und nicht als Bild drin sind.


Der "Print to PDF"-Treiber kann auch aus der Caption/Title des Druckauftrages den Dateinamen generieren.
Kannst du bei QuickReport den Title des Druckauftrags setzen? (das, was auch in der Druckerwarteschlange angezeigt wird)
> Auto-name Files > Include Dokument Title
https://www.win2pdf.com/doc/how-to-a...nt-to-pdf.html

Das was hier eingestellt wird, wird bestimmt auch irgendwo in der Registry stehen.
Wenn der Treiber das bei jedem Druck neu ausließt, könnte man den "Dateinamen" vorher auch in diese Registry schreiben,
also ohne die Include und den Namen in "File name Start" oder "User Defined".
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (23. Sep 2020 um 10:51 Uhr)
  Mit Zitat antworten Zitat
jziersch

Registriert seit: 9. Okt 2003
Ort: München
240 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Quickreport nach PDF Delphi 7

  Alt 23. Sep 2020, 10:34
wPDF (www.wpcubed.com) kann für den PDF export verwendet werden.

Delphi 7 bis Delphi 10.4 wird unterstützt.

Intern ist wPDF ein EMF (metafile) nach PDF Konverter und unterstützt daher eine Vielzahl von report Komponenten. Es können auch Daten aus verschiedenen Quellen in eine PDF Datei kombiniert werden.
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#5

AW: Quickreport nach PDF Delphi 7

  Alt 24. Sep 2020, 06:54
Hmm..

irgendwie kommt mir das ganze hier (PDF-Erzeugung) bekannt vor...
Da gab es einen Thema hier im Forum,bei dem es auch um PDFs automatisch zu erzeugen ging.

Die einfachste Option ist hier:

PDFCreator (Druckertreiber für PDF)

Diese ist Kostenfrei und kann so eingerichtet werden, dass kein Dialog kommt und der Ausdruck direkt als PDF in einem definierten Verzeichnis abgelegt wird.

Alternativ kann auch direkt RedMon mit GhostScript verwendet werden.
Damit kann das auch gemacht werden, denn so (nur mit zusätzlichem Dialog) hat es in Vergangenheit FreePDF gemacht.
Dort (FreePDF) gab es auf der HP auch mal eine Anleitung, welche jedoch nicht mehr existiert..

Hierdurch sind keine Änderungen an deinem Programm notwendig, nur beim Drucken den richtigen PDF-Drucker auswählen.

Nachtrag:
Hier der Link (Weiter Hintern kommen die PDF-Drucker)
https://www.delphipraxis.net/203511-...ines-pdfs.html
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
KlausV

Registriert seit: 29. Aug 2017
Ort: 68809 Neulußheim
62 Beiträge
 
Delphi 7 Professional
 
#6

AW: Quickreport nach PDF Delphi 7

  Alt 24. Sep 2020, 08:18
Guten Morgen und Danke für die Tipps,
Einen PDF Drucker Treiber zu installieren und zu nutzen ist sicherlich eine Option, aber sehe ich es richtig, dass ich den Treiber nur mit einigem Aufwand von Delphi aus bedienen kann, sprich Dateinamen und Verzeichnis mitgeben (Registry auslesen, etc.)? Muss der Druckerreiber dann als Standard Drucketreiber definiert werden? Wenn ja, dann gibt es Probleme auf dem Rechner, weil von diesem Rechner auch auf normalen Druckern gedruckt werden soll.

Wie schon geschrieben, wird QR benutzt und daraus soll eine PDF Datei direkt erzeugt werden.

Dieser Code Schnipsel taucht immer wieder auf:
Wie könnte ich das eventuell für meinen Quick-Report verwenden?
Delphi-Quellcode:
var
DeviceMode: THandle;
Device, Driver, Port: array[0..80] of Char;
begin
Printer.PrinterIndex := Printer.Printers.IndexOf('Microsoft Print to PDF'); // drucker
Printer.GetPrinter(Device, Driver, Port, DeviceMode);
Printer.SetPrinter(Device, Driver, 'Test.pdf', 0); // dateiname
Printer.BeginDoc;
Printer.Canvas.TextOut(100, 100, 'Test'); // pdf inhalt
Printer.EndDoc;
end;


Zusätzlich habe ich den Vertrieb von Quickreport kontaktiert. Ich habe die QR Standard Version installiert und in der PRO Version kann ich wohl direkt das PDF erzeugen.

Das wäre dann der Code, den ich direkt nutzen könnte:
Report.ExportToFilter(TQRPDFDocumentFilter.Create( TempFile));

Danke und Gruß
----------------------------------------------
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.203 Beiträge
 
Delphi 12 Athens
 
#7

AW: Quickreport nach PDF Delphi 7

  Alt 24. Sep 2020, 10:40
Es muß nicht der Standard-Drucker sein ... du kannst ja in der Report-Engine sagen wo du drucken willst.

Einige der Drucker-Treiber nutzen die Description des Druckauftrags, um daraus den Dateinamen zusammenzusetzen.
Verzeichnis und Dergleichen muß vorher im Treiber eingerichtet werden.
* Registry oder INI, bzw. über den Eigenschaftendialog in der Druckerverwaltung
* Ein Druckertreiber kann auch mehrmals installiert werden, also der selbe Drucker, aber mit unterschiedlichem "Namen" und unterschiedlichen Default-Einstellungen.
* * So kann man, ohne etwas umstellen zu müssen, mit unterschiedlichen Ausgaben arbeiten (Papierformat, Druckqualität, Farbe/Schwarzweiß, Speicherpfad, ...)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
KlausV

Registriert seit: 29. Aug 2017
Ort: 68809 Neulußheim
62 Beiträge
 
Delphi 7 Professional
 
#8

AW: Quickreport nach PDF Delphi 7

  Alt 24. Sep 2020, 12:20
Hallo,
Danke.
ich habe es nun hinbekommen, dass das Dokument über den Microsoft PDF Druckertreiber funktioniert. Das PDF wird erzeugt, jedoch obwohl ich den Dateinamen setze, geht ein Dialog hoch und verlangt den Dateinamen.

Ich mache es so:
report.title:= 'Test';
Printer.PrinterIndex := Printer.Printers.IndexOf('Microsoft Print to PDF'); // drucker
Printer.GetPrinter(Device, Driver, Port, DeviceMode);
Printer.SetPrinter(Device, Driver, 'C:\Test.pdf', 0);

Report.print;

Was mache ich hier falsch?

Habe noch etwas gefunden um den promopt zu umgehen:
var
hprinter : THandle;
sdevice,
sdriver,
sport : array[0..80] of Char;
oprinter : TGIS_Printer ;
oprintman: TGIS_PrintManager ;
begin
Printer.PrinterIndex := Printer.Printers.IndexOf('Microsoft Print to PDF');
Printer.GetPrinter( sdevice, sdriver, sport, hprinter ) ;
Printer.SetPrinter( sdevice, sdriver, 'C:\Temp\myfile.pdf', 0);

oprintman := TGIS_PrintManager.Create ;
try
oprinter := TGIS_Printer.Create( Printer ) ;
try
oprintman.Print( GIS, oprinter ) ;
finally
oprinter .Free ;
end;
finally
oprintman.Free ;
end ;
end;

Nur, wie bekomme ich hier meinen Druck da rein;

Danke.
----------------------------------------------
Klaus

Geändert von KlausV (24. Sep 2020 um 12:24 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.889 Beiträge
 
Delphi 12 Athens
 
#9

AW: Quickreport nach PDF Delphi 7

  Alt 25. Sep 2020, 11:27
Es muß nicht der Standard-Drucker sein ... du kannst ja in der Report-Engine sagen wo du drucken willst.

Einige der Drucker-Treiber nutzen die Description des Druckauftrags, um daraus den Dateinamen zusammenzusetzen.
Verzeichnis und Dergleichen muß vorher im Treiber eingerichtet werden.
* Registry oder INI, bzw. über den Eigenschaftendialog in der Druckerverwaltung
* Ein Druckertreiber kann auch mehrmals installiert werden, also der selbe Drucker, aber mit unterschiedlichem "Namen" und unterschiedlichen Default-Einstellungen.
* * So kann man, ohne etwas umstellen zu müssen, mit unterschiedlichen Ausgaben arbeiten (Papierformat, Druckqualität, Farbe/Schwarzweiß, Speicherpfad, ...)
Es gab in QR einen bug, der dafür gesorgt hat dass die richtigen Schachtnummern nur vom Standard Drucker aus gelesen und verwendet werden konnten.
Deswegen hatte ich tatsächlich mal einen Code genutzt der den ausgewählten Drucker zum standard Drucker macht....
Das problem dabei war, dass leider die funktion die einen Refresh der Registry auslöst nicht bei allen Kundenrechnern zurrückkehrte....
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:47 Uhr.
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