![]() |
Bereich aus Form in PDF drucken
Hallo Zusammen.
Es gibt zu diesem Thema eine Vielzahl von Beiträgen, jedoch bin ich auch nur stundenlangen probieren nicht weitergekommen. Um einen Bereich zu drucken, verwende ich im Moment diesen Code:
Delphi-Quellcode:
Der ist fast 1:1 aus diesem Forum "geklaut". Mein Problem ist, egal wie hoch ich die Parameter 3600 und 4000 stelle, es verändert sich nichts am Bild. Bis ca. 2600 und 3000 hat es noch funktioniert, aber ab einer gewissen Größe bleibt das Bild gleich groß.
Procedure BildAusSchnitt(hWND: HWND; iLeft, iTop, iWidth, iHeight: integer);
var c: TCanvas; begin BringWindowToTop(hWND); c:= TCanvas.Create; c.Handle:= GetWindowDC(hWND); try Printer.Orientation := poLandscape; printer.begindoc; printer.Canvas.CopyRect(Rect(0, 0, iWidth* 10, iHeight* 10), c, Rect(iLeft, iTop, iLeft+ iWidth, iTop+ iHeight)); printer.enddoc; finally ReleaseDC(hWND, c.handle); c.Free; end; end; procedure TForm1.druckenClick(Sender: TObject); begin BildAusSchnitt(Form1.Handle, 60, 82, 3600, 4000); end; Um eine PDF draus zu machen, habe ich einfach einen PDF-Drucker als Standard eingestellt. Ist nicht die schönste Lösung, aber es funktioniert. Hat jemand vielleicht eine Idee, oder eine ganz andere Methode um dieses Problem zu lösen? Ich bin für alle Vorschläge offen. Vielen Dank für Unterstützung! |
AW: Bereich aus Form in PDF drucken
.. wieviele Bildpunkte hat denn Dein Monitor Vertikal/Horizontal?
Spielt die Scalierung vielleicht mit? Grüße Klaus |
AW: Bereich aus Form in PDF drucken
Zitat:
Ich habe schon an der Form gespielt, leider ohne Erfolg. |
AW: Bereich aus Form in PDF drucken
Wie willst du bei "nur vorhandenen 1920 * 1080 Pixel, 3600 * 4000 Pixel erstellen?
|
AW: Bereich aus Form in PDF drucken
Zitat:
|
AW: Bereich aus Form in PDF drucken
Delphi-Quellcode:
Damit bekommst du die gesamte Form mit der 1:1 Größe wie das richtige Formular ins PDF.
procedure TForm1.FormClick(Sender: TObject);
var FormImage: TBitmap; PrinterDpiHeight, PrinterDpiWidth: Integer; FormDpiHeight, FormDpiWidth: Integer; Source: TRect; begin FormImage := Self.GetFormImage; try Printer.Orientation := poLandscape; Printer.BeginDoc; try Source := Self.ClientRect; PrinterDpiWidth := GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSX); FormDpiWidth := GetDeviceCaps(Self.Canvas.Handle, LOGPIXELSX); Source.Width := Round(Source.Width * (PrinterDpiWidth / FormDpiWidth)); PrinterDpiHeight := GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY); FormDpiHeight := GetDeviceCaps(Self.Canvas.Handle, LOGPIXELSY); Source.Height := Round(Source.Height * (PrinterDpiHeight / FormDpiHeight)); Printer.Canvas.StretchDraw(Source, FormImage); finally Printer.EndDoc; end; finally FormImage.Free; end; end; Willst du das seitenfüllend haben, müsstest du noch ein bisschen an Width und Height spielen. |
AW: Bereich aus Form in PDF drucken
Zitat:
Ich habe auf der Form etwas gezeichnet, dass ist leider nicht drauf zu erkennen. Gezeigt werden nur die Bedienelemente |
AW: Bereich aus Form in PDF drucken
Bitte benutze eine Paintbox zum Zeichnen. Direkt auf das Formular zu malen ist nicht zu empfehlen, wie du gerade merkst.
|
AW: Bereich aus Form in PDF drucken
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 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-2025 by Thomas Breitkreuz