Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Drucken hoch UND quer (https://www.delphipraxis.net/114224-drucken-hoch-und-quer.html)

stahli 21. Mai 2008 18:43


Drucken hoch UND quer
 
Ich möchte in einem Druckauftrag gern Hoch- und Querblätter ausdrucken.
Word kann das und erzeugt z.B. eine XPS-Datei mit Hoch- und Querblättern. (sollte mit einem PDF-Treiber sicher auch gehen)

Wenn ich das für eine neue Seite versuche, erhalte ich die Fehlermeldung "Druckvorgang läuft".
Delphi-Quellcode:
  ...
  PI := 0;
  Printer.Copies := 1;
  Printer.Title := GetParentForm(Self).Caption;
  Printer.BeginDoc;
  repeat
    if PI > 0then
      Printer.NewPage;
    ...
    if PageImage.Width > PageImage.Height then
      Printer.Orientation := TPrinterOrientation(poLandscape) // <- Fehler
    else
      Printer.Orientation := TPrinterOrientation(poPortrait); // <- Fehler
    ...
Gibt es da eine Möglichkeit?

Ansonsten könnte ich notfalls Querbilder vorher in´s Hochformat drehen.

Danke
Stahli

grenzgaenger 21. Mai 2008 20:49

Re: Drucken hoch UND quer
 
nimm doch RAVE :-) . dort kannst du im bevor-print ereignis die orientation einstellen. :-)

PS: ausserdem nimmt dir RAVE noch 'n paar kleinigkeiten ab.. wie z.b. die druckvorschau ... wenn du denn eine möchtest... :-)

btw: sprech ich vom code-based printing :-)

stahli 21. Mai 2008 21:47

Re: Drucken hoch UND quer
 
Nein, das ist für mich keine Lösung. Ich nutze MyComponent.PaintTo um bestimmte Bereiche in Bilder zu exportieren (Hoch- und Querformate) und diese dann zu drucken.
Das einzelne Drucken funktioniert perfekt, ich hätte die Seiten aber wenn möglich gern in einem Druckauftrag.

stahli 22. Mai 2008 14:08

Re: Drucken hoch UND quer
 
... obwohl, vielleicht war ich doch zu voreilig :duck:

Ich brauche zwar keinen Reportgenerator aber könnte ja vielleicht den Rave (von D2006 Prof) nur verwenden um
- hochformatiges Blatt anlegen + Bitmap drauf
- neues querformatiges Blatt anlegen + Bitmap drauf
+ das dann als Druckvorschau anzeigen und/oder drucken

Ginge das mit dem Rave?
Und kann man die Seiten vielleicht sogar als PDF (und HTML) exportieren, so dass in der PDF dann hoch- und querformatige Blätter enthalten sind?
(sorry, hab gerade Rave nicht verfügbar)


Danke
Stahli

grenzgaenger 22. Mai 2008 21:01

Re: Drucken hoch UND quer
 
hallo stahli,

für den ersten teil würd ich dir folgendes ans herz legen. für das code-based-printing brauchst du keine .RAV datei, keine .DLL, Druckvorschau, etc. sondern du bestimmst alleine in deinem prog. was auf's papier kommt. hierbei kannst du auch problemlos direkt ein .PDF (.HTML, .RTF, etc.) erzeugen, wenn du das möchtest oder eben acuh indirekt...

bisher kenn ich es so, dass man bei RAVE das papierformat vor dem druck festlegen muss, ... denke allerdings, dass hier Merlin wohl eine lösung hat. ansonsten nimmt dir RAVE einiges ab, wie z.b. die druckvorschau (falls du eine möchtest) oder z.b. auch das skalieren der grafiken... und die verschiedenen seitenumbrüche... aber das kennst du doch sicher schon :-)

an deiner stelle würd ich es mit RAVE einfach mal probieren, ist auf alle fälle die bessere alternative als alles zu fuss :-)

viel erfolg und noch einen schönen abend
GG

fs999 23. Mai 2008 08:48

Re: Drucken hoch UND quer
 
Hallo,

Man muss nur dies tun :

Delphi-Quellcode:
    ...
    Printer.EndDoc; // <==
    if PageImage.Width > PageImage.Height then
      Printer.Orientation := TPrinterOrientation(poLandscape)
    else
      Printer.Orientation := TPrinterOrientation(poPortrait);
    Printer.BeginDoc; // <==
    ...

delphimaedel 23. Mai 2008 09:12

Re: Drucken hoch UND quer
 
ok danke es funktioniert... :wink:

stahli 23. Mai 2008 13:08

Re: Drucken hoch UND quer
 
@fs999:
Ich denke, EndDoc beendet den aktuellen Druckauftrag und BeginDoc startet einen neuen (kann ich gerade nicht testen).
Somit werden bei Nutzung eines PDF-Druckertreibers 3 Dateien erzeugt, das ich gerade nicht wollte.

@grenzgaenger:
Danke für den Tip. Sieht eigentlich nicht schlecht aus.
Ich sehe mir aber gerade mal die Virtual Print Engine an. Das wirkt schon noch deutlich mächtiger (wenn auch etwas aufwändiger).

@all:
Hat jemand Erfahrungen mit der VPE?

- Lassen sich Kreuztabellen mit unterschiedlicher Spalten- und Zeilenanzahl sowie dynamischer Zeilenhöhe
und Wortumbrüchen in den Kästchen realsieren?
- Wie funktioniert das Erstellen von Inhaltsverzeichnissen in PDF-Dateien?


stahli


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:39 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