Ein Dokument mehrfach aus mehreren Schächten drucken

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Zollstocks_Office
**
Beiträge: 27
Registriert: Mi, 28.08.2013 12:13

Ein Dokument mehrfach aus mehreren Schächten drucken

Beitrag von Zollstocks_Office »

Ich möchte gerne ein Dokument automatisch in mehreren Kopien aus meheren Schächten drucken.

Zur Erklärung:
Das wird ein Rechnungsbogen, der
  • 1 x auf dem Firmenbogen (Schacht 2)für den Kunden
  • 1 x für die Kundenmappe (Schacht 3)
  • 1 x für den Rechnungsordner (Schacht 4)
gedruckt werden soll.

Für mich stellen sich 2 Möglichkeiten:
  • Druckvorlagen mehrfach anpassen
    Druckvorlage oder Druckereinstellung auf Schacht 2 ändern
    Drucken
    Druckvorlage oder Druckereinstellung auf Schacht 3 ändern
    Drucken
    Druckvorlage oder Druckereinstellung auf Schacht 4 ändern
    Drucken
    Druckvorlage oder Druckereinstellung auf Standardschacht ändern
    *ende*
  • den gleichen Drucker mehrfach mit unterschiedlichen Profilen installieren
    Drucken mit Drucker 2
    Drucken mit Drucker 3
    Drucken mit Drucker 4
Die erste Variante ist meiner Meinung nach ein wenig eleganter aber beide Möglichketen bekomme ich nicht ins Laufen.

Kann (und wird) mir einer helfen?

Danke schon mal,
Uwe
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Ein Dokument mehrfach aus mehreren Schächten drucken

Beitrag von Stephan »

aber beide Möglichketen bekomme ich nicht ins Laufen
dann wirst Du wohl erklären müssen was nicht klappt denn ein offensichtlicher Grund dafür ist für mich (wahrscheinlich auch für andere?) nicht erkennbar.

Für die erste Möglichkeit hatte ich in dem anderen Thread schon einen Code gepostet, der den Druckerschacht in der Seitenvorlage ändern sollte:

Code: Alles auswählen

Sub Main
   With ThisComponent.getStyleFamilies.getByName("PageStyles")
      .getByName(<Name der gewünschten SEitenvorlage>).PrinterPaperTray = <Name des Papierschachts>
   End With
End Sub
und die zweite Möglichkeit ist betriebssystemabhängig, bei Windows 7 geht das z.B. über Start-Geräte und Drucker, und dort Schaltfläche "Gerät hinzufügen"

Bei beiden Möglichkeiten ist leider nicht offensichtlich wo Probleme auftreten sollten, so das Du die konkret auftretenden Probleme schon irgendwie genauer benennen musst.


Gruß
Stephan
Zollstocks_Office
**
Beiträge: 27
Registriert: Mi, 28.08.2013 12:13

Re: Ein Dokument mehrfach aus mehreren Schächten drucken

Beitrag von Zollstocks_Office »

Bitte entschuldigt die späte Reaktion, ich hatte einfach nicht den freien Kopf, um mich um das Problem zu kümmern.
Stephan hat geschrieben:
aber beide Möglichketen bekomme ich nicht ins Laufen
dann wirst Du wohl erklären müssen was nicht klappt denn ein offensichtlicher Grund dafür ist für mich (wahrscheinlich auch für andere?) nicht erkennbar.
Meine Fähigkeiten, ein Makro direkt aus der Tastatur zu programmieren, geht bei OO gegen Null. Ich habe das mal vor 20 Jahren beerrscht, aber seitdem nicht angewendet und in OO geht es einfach anders.
Darum versuchte ich, die notwendige Befehlsfolge über Extras / Makros / Makros aufzeichnen aufzunehmen und dann ev. noch von Hand nachzuarbeiten. Wissend, das OO keine Mausbefehle aufzeichnet, habe ich die gesamte Befehlsfolge mit Tastaturbefehlen abgearbeitet.
Das klappte im Handbetrieb, aber das damit erstellte Makro wiederholte die Befehle nicht. Wen ich das Makro ansehe, wurden auch viele der Befehle gar nicht aufgenommen.
Es hätte ja auch einfach sein können...
Für die erste Möglichkeit hatte ich in dem anderen Thread schon einen Code gepostet, der den Druckerschacht in der Seitenvorlage ändern sollte:

Code: Alles auswählen

Sub Main
   With ThisComponent.getStyleFamilies.getByName("PageStyles")
      .getByName(<Name der gewünschten SEitenvorlage>).PrinterPaperTray = <Name des Papierschachts>
   End With
End Sub
Ich muß schauen, wo der Code erläutert ist. Ich muß ja wissen, wie der Drucker und der Name des Schachts definiert ist, dazu bleibt natürlich meine Unfähigkeit, ein Makro direkt zu schreiben.
und die zweite Möglichkeit ist betriebssystemabhängig, bei Windows 7 geht das z.B. über Start-Geräte und Drucker, und dort Schaltfläche "Gerät hinzufügen"
Die Installation und Einstellung der Drucker ist kein Problem.
Mir ging es dann um die Befehlsfolge, um ein Dokument aus drei Druckern je einmal zu drucken.

Dir aber schon einmal vielen Dank für Deine aufgewendete Zeit,
Uwe
Zollstocks_Office
**
Beiträge: 27
Registriert: Mi, 28.08.2013 12:13

Re: Ein Dokument mehrfach aus mehreren Schächten drucken

Beitrag von Zollstocks_Office »

Nach einer Schaffenslücke aus Zeitgründen habe ich mich mal wieder mit dem Problem befasst.

Ich habe nun dieses Makro:

Code: Alles auswählen

sub Drucken_3mal
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Printer"
args1(0).Value = "Kyocera Schacht 2 (c+t)"

dispatcher.executeDispatch(document, ".uno:Printer", "", 0, args1())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:Print", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Printer"
args3(0).Value = "Kyocera Schacht 3 (rot)"

dispatcher.executeDispatch(document, ".uno:Printer", "", 0, args3())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:Print", "", 0, Array())

rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Printer"
args5(0).Value = "Kyocera Schacht 4 (gelb)"

dispatcher.executeDispatch(document, ".uno:Printer", "", 0, args5())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:Print", "", 0, Array())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "Printer"
args7(0).Value = "Kyocera Schacht 1 (weiss)"

dispatcher.executeDispatch(document, ".uno:Printer", "", 0, args7())


end sub
Vermutlich werden die Drucker nacheinander als Drucker ausgewählt.
Allerdings wird das Dokument nicht gedruckt.

Was habe ich übersehen?
Antworten