Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PDF Printer Name vom Ausgabefile (https://www.delphipraxis.net/207866-pdf-printer-name-vom-ausgabefile.html)

himitsu 11. Mai 2021 12:45

AW: PDF Printer Name vom Ausgabefile
 
Zitat:

Zitat von himitsu (Beitrag 1489125)
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

Jumpy 11. Mai 2021 12:54

AW: PDF Printer Name vom Ausgabefile
 
Zitat:

Zitat von juniorA (Beitrag 1489140)
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.

Michael II 11. Mai 2021 13:59

AW: PDF Printer Name vom Ausgabefile
 
Zitat:

Zitat von juniorA (Beitrag 1489115)
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;

bcvs 11. Mai 2021 14:50

AW: PDF Printer Name vom Ausgabefile
 
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.

juniorA 11. Mai 2021 15:29

AW: PDF Printer Name vom Ausgabefile
 
Bin jetzt wieder bei Microsoft Print to PDF gelandet. Das Beispiel von Michael Funktioniert.:-D
Die Folgende Variante mit SynPDF hat auch so seinen Charm aber dafür bedarf es einen ausgeschlafenen Kopf den ich hoffentlich morgen wieder habe :wink:

noisy_master 12. Mai 2021 06:45

AW: PDF Printer Name vom Ausgabefile
 
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ß

juniorA 12. Mai 2021 08:28

AW: PDF Printer Name vom Ausgabefile
 
Liste der Anhänge anzeigen (Anzahl: 1)
Der Tipp mit der Registry klingt vielversprechend aber kann beider aktuelle Version leider den Pfad, den Namen und das Autosave nicht finden. :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 Uhr.
Seite 2 von 2     12   

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