AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PDF Printer Name vom Ausgabefile

Ein Thema von juniorA · begonnen am 10. Mai 2021 · letzter Beitrag vom 12. Mai 2021
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

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

AW: PDF Printer Name vom Ausgabefile

  Alt 11. Mai 2021, 12:45
Jo, oder eine Report- bzw. PDF-Komponente und dann programmintern.
Wir machen das über FastReport,
bzw. nur Bild(er) in PDF mit ImageEn.
?


Bei Google suchendelphi pdf komponente
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#12

AW: PDF Printer Name vom Ausgabefile

  Alt 11. Mai 2021, 12:54
Habe es mit den PDF-Creator versucht. Da klappt es zumindest, dass schon einmal der Dateiname (aus Printer.titel) übernommen wird. Den Pfad voreinzustellen habe ich nicht hinbekommen. Dort nimmt er immer den von der letzten Ausgabepfad.
Welche Möglichkeiten habe ich eigentlich die Einstellung aus den Treiber auszulesen.
Das eigentlich Grundproblem, was ich habe, ist ein PDF von einen Canvas zu erzeugen und dieses eine vorgegebene Stelle zu speichern. Als BMP oder JPG kann man diesen ja speichern. Gibt es auch ein Lösung welche dieses automatisch als PDF macht oder muss man immer den Drucker zwischenschalten?
Der PDFCreator hat doch eine API. Mit der kann man komplett ohne Userinteraktion/Dialog an einen vorgegebenen Ort speichern.
Ralph
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
719 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: PDF Printer Name vom Ausgabefile

  Alt 11. Mai 2021, 13:59
Welches Problem habe ich konkret.
Ich habe eine Funktion mit der Bilder an den Drucker ausgeben will.
Wenn ich den Drucken mit Printer.BeginDoc starte, meldet sich der Dialog meines Standarddrucker.
In diesem Fall ist es Microsoft Print to PDF.
Wie bekomme ich zum einen den Pad und den Dateinamen wo die Druckausgabe hin gehen schon voreingestellt und
wie bekomme ich im Nachgang den Pfad und den Dateinamen ausgelesen.
So wie es aussieht, scheint Windows sich das ja zu merken, denn wenn ich das nächste Mal den Dialog aufrufe, stehen da ja die letzten Einstellungen. Auf welche Variablen muss ich da zu greifen???.
Wenn ich dich richtig verstehe, willst du Bilder als PDF drucken und dabei direkt in deinem Programm den Filenamen des PDFs und den Drucker festlegen ohne dass der Benutzer Dialoge (Drucker/Speichern) angezeigt erhält.

Das Beispiel von stackoverflow (Code unten rein kopiert, damit dieser nicht verloren geht, wenn stackoverflow eingestellt werden sollte) hilft dir nicht?

Drucker festlegen, Zielfile festlegen und dann mit Begindoc loslegen...(Code unten)
Bei meinem Windows 10.0.19043.964 wird so kein Dialog angezeigt - und das Speichern funktioniert.

Delphi-Quellcode:
procedure TForm89.Button1Click(Sender: TObject);
var
    PrtIndex : Integer;
    DeviceMode : THandle;
    Device,
    Driver,
    Port : array [0..255] of Char;
begin
    // Warning: The printer name is case sensitive
    PrtIndex := Printer.Printers.IndexOf('Microsoft Print to PDF');
    if PrtIndex < 0 then
        raise Exception.Create('Printer not found');
    Printer.PrinterIndex := PrtIndex;
    Printer.GetPrinter(Device, Driver, Port, DeviceMode);
    Printer.SetPrinter(Device, Driver, 'C:\Users\micha\Desktop\TestPrintToPdf.pdf', 0);
    Printer.BeginDoc;
    Printer.Canvas.TextOut(100, 100, 'Hallo delphipraxis.net');
    Printer.EndDoc;
end;
Michael Gasser

Geändert von Michael II (11. Mai 2021 um 14:05 Uhr)
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
668 Beiträge
 
Delphi 12 Athens
 
#14

AW: PDF Printer Name vom Ausgabefile

  Alt 11. Mai 2021, 14:50
Zitat:
Ich habe eine Funktion mit der Bilder an den Drucker ausgeben will.
Oder schau dir mal SynPDF an:
https://github.com/synopse/SynPDF

Damit kannst du auf den Canvas des PDFs schreiben und malen und direkt ein PDF erzeugen, ohne irgendwelche Druckertreiber.
  Mit Zitat antworten Zitat
juniorA

Registriert seit: 14. Sep 2011
112 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#15

AW: PDF Printer Name vom Ausgabefile

  Alt 11. Mai 2021, 15:29
Bin jetzt wieder bei Microsoft Print to PDF gelandet. Das Beispiel von Michael Funktioniert.
Die Folgende Variante mit SynPDF hat auch so seinen Charm aber dafür bedarf es einen ausgeschlafenen Kopf den ich hoffentlich morgen wieder habe
  Mit Zitat antworten Zitat
noisy_master

Registriert seit: 17. Jun 2009
Ort: Wolfenbüttel/Baddeckenstedt
255 Beiträge
 
Delphi XE5 Professional
 
#16

AW: PDF Printer Name vom Ausgabefile

  Alt 12. Mai 2021, 06:45
Den Pfad kannst du doch einstellen: In dem von dir Verlinkten Artikel ist es sogar erläutert.
Ansonsten kannst du es von deinem Programm aus in der Registry einstellen/auslesen: (Ist allerdings das Setting von PDFCreator 2.4 und ich kann gerade nicht kontrollieren, ob sich das mit neuen Versionen geändert hat):
HKEY_CURRENT_USER\Software\PDFCreator\Program\Last SaveDirectory bzw. AutoSaveDirectory.

Wenn du keinen Drucker "dazwischenschalten" möchtest kannst du auch z.B. synPDF aus dem Moromot Package nehemen. https://www.youtube.com/watch?v=IJSVD-x9mpM zeigt dir, wie du eine "Grafik" auf einen "SynPDF Canvas" einfügst und das PDF speicherst.

Gruß
Dirk
  Mit Zitat antworten Zitat
juniorA

Registriert seit: 14. Sep 2011
112 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#17

AW: PDF Printer Name vom Ausgabefile

  Alt 12. Mai 2021, 08:28
Der Tipp mit der Registry klingt vielversprechend aber kann beider aktuelle Version leider den Pfad, den Namen und das Autosave nicht finden.
Miniaturansicht angehängter Grafiken
pdf-creator-reg.jpg  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 13:26 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