Probleme mit zweiseitigem Druck

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

Moderator: Moderatoren

erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Probleme mit zweiseitigem Druck

Beitrag von erikafuchs »

Hallo Leute!
Die neue Version meines Rechentrainers funktioniert gut und ist online: https://www.igs-kelsterbach.de/download ... 5.022.ots
Zu meinem Rechentrainer gehört aber auch ein Auswertungsprogramm. Dieses liest alle Schülerdateien eines Ordners ein und zeigt die einzelnen Ergebnisse in einer Übersichtsseite übersichtlich an. Dies gibt es entweder für die normalen Übungsdateien, die Rechentrainertests oder auch die Lernstanserhebung.
Vor Allem beim Test ist es wichtig, dass man alle Seiten mit den eingelesenen Tests auf einen Rutsch ausdrucken kann. Je nachdem wieviele Aufgaben gelöst wurden entstehen hier manchmal pro Schüler auch zwei Seiten. Da macht es Sinn, die etwa 30 Blätter unter Umständen mit einem Drucker mit der Möglichkeit zum zweiseitigen Druck auszudrucken. Meistens passt ein Schülertest auf eine Seite. Sind aber einige Tests zweiseitig, so ist mir bisher nur eingfallen, allen Tabellenblättern eine zweite Seite einzufügen, das finde ich wenig elegant und es dauert auch zu lange und bei Druckern, die nur einseitigen Druck beherrschen, würden dann jede Menge leere Blätter ausgedruckt.
Möglicherweise gibt es gar keine Möglichkeit, das per Makro zu steuern - oder doch? Bei "einseitigen" Tabellenblättern wird nur die Vorderseite bedruckt, bei zweiseitigen (das habe ich über Druckbereiche schon gelöst) wird auch die Rückseite bedruckt.
Pit
wolli-j
**
Beiträge: 33
Registriert: Fr, 06.08.2010 13:10

Re: Probleme mit zweiseitigem Druck

Beitrag von wolli-j »

Hallo Pit,

ich denke, Du solltest für jeden Test einen eigenen Druckjob mit der Option "Duplex" starten. Dann gibt's jeweils eine Einzelseite oder Doppelseite, je nach Bedarf.

Oder Du musst eine Option einführen, so dass der Benutzer auswählt, ob er Simplex oder Duplex drucken will. Dementsprechend kannst Du dann zweite Seiten hinzufügen oder eben nicht.

Wolfgang
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Probleme mit zweiseitigem Druck

Beitrag von Stephan »

Da Du Deine Tabellen kennst weist du vorher wieviel (ungefähr) auf eine Druckseite geht. Du kannst also per Makro prüfen wieviel zu zum Drucken da ist und anhand dessen bei der zur Anwendung kommenden Seitenvorlage den Ausdruck auf 1 oder 2 Seiten skalieren, z.B.:

Code: Alles auswählen

Sub Main
	ps = ThisComponent.StyleFamilies.getByName("PageStyles").getByName("Default")
	ps.ScaleToPages = 1 'oder 2
End Sub
Entweder Du machst das mit 2 Seitenvorlagen oder Du legt in zwei Schritten jeweils nur die Druckbereiche für die notwendig einseitigen Tabellenausdrucke und die notwendig zweiseitigen Tabellenausdrucke fest. Druckbereiche festlegen siehe z.B.:
http://www.dannenhoefer.de/faqstarbasic ... legen.html


Gruß
Stephan
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Probleme mit zweiseitigem Druck

Beitrag von erikafuchs »

Lieber Stefan, lieber Wolfgang,
ich bin nicht sicher ob mir die Vorschläge helfen. Ich habe hier keinen Duplexdrucker und muss immer erst in die Schule fahren, um das auszuprobieren. Dafür hätte ich gerne zunächst einen guten Plan (ich bin ja im Ruhestand und muss da nicht mehr hin).
Funktionieren soll die Lösung sowohl auf einem normalen als auch auf einem Duplexdrucker.
Ich zeige sicherheitshalber noch mal das Problem:
Ein Kollege schreibt einen Test mit, sagen wir 35 Aufgaben. Die Schüler bearbeiten den, es wird ein Protokoll angelegt. Wenn die/der Schüler/in die Aufgaben alle löst sind das 35 Zeilen im Protokoll, oder Salih ist Integrationskind und muss nur 30 Aufgaben lösen:
1Seite.jpg
1Seite.jpg (80.08 KiB) 4641 mal betrachtet
Jede Protokollseite hat 40 Zeilen. Wenn Claudia mehrmals die Lösung anzeigen lässt oder Aufgaben abbricht, wird das jeweils in einer Zeile protokolliert oder Claudia ist kein Integrationskind und muss 50 Aufgaben lösen:
2Seiten.jpg
2Seiten.jpg (101.05 KiB) 4641 mal betrachtet
... jetzt entstehen zwei Seiten. Mein Code:

Code: Alles auswählen

				if oSheet.getCellByPosition(6,9).value>40 then	'zweiseitiger Druck
					redim Druckbereiche(1)
					oSheet.getCellByPosition(1,43).string="Seite 2"
					DrBereich= sSheet.getCellRangeByName("aa1:ay42").rangeAddress
					Druckbereiche(1)=DrBereich	
				end if
					   		  	                     
				DrBereich= sSheet.getCellRangeByName("B1:z42").rangeAddress
				Druckbereiche(0)=DrBereich
				sSheet.setPrintAreas(Druckbereiche()) 
Die Übersichtseite passt normalerweise auf eine Seite:
Übersicht.jpg
Übersicht.jpg (43.42 KiB) 4641 mal betrachtet
Drucke ich das mit einem Nicht-Duplexdrucker aus, bekomme ich für die zwei Schüler vier Seiten - nicht so schlimm, aber bei 20 "Claudias" und 5 "Salihs" sind das 46 Seiten!
Drucke ich das ohne Tricks auf einem Duplexdrucker ist auf der Rückseite der Übersicht die erste Seite von Claudia und auf dem zweiten Blatt die zweite Seite von Claudia und auf der Rückseite ist Salih - das ist natürlich Blödsinn.
Füge ich überall eine zweite Seite ein, dann habe ich beim Dublexdrucker 16 perfekte Blätter. Drucke ich das aber auf einem normalen Drucker sind es 52 Seiten von denen 6 leer sind.
Es gibt meines Wissens keinen Blattvorschub sondern nur einen Seitenvorschub. Es fehlt mir eine Möglichkeit, die "Claudia" Tabellenseiten als doppelseitig und die "Salih"-Tabellenseiten sowie die Übersichtseite als einseitig zu definieren - ich glaube in Excel kann man das händisch in die jeweilige Tabellenseit eintragen, bei Calc scheint das nicht zu gehen - allerdings hilft mir eine händische Änderung nicht wirklich.
Danke soweit
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Probleme mit zweiseitigem Druck

Beitrag von Stephan »

Es fehlt mir eine Möglichkeit, die "Claudia" Tabellenseiten als doppelseitig und die "Salih"-Tabellenseiten sowie die Übersichtseite als einseitig zu definieren
weswegen ich ja bereits darauf verwiesen hatte das:
"Entweder Du machst das mit 2 Seitenvorlagen oder Du legt in zwei Schritten jeweils nur die Druckbereiche für die notwendig einseitigen Tabellenausdrucke und die notwendig zweiseitigen Tabellenausdrucke fest."

Weitere Infos für Makros zum Tabellendokumente drucken gibt es auch im Kapitel "Tabellendokumente drucken" in:
https://www.uni-due.de/~abi070/count.ph ... eutsch.pdf


Gruß
Stephan
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Probleme mit zweiseitigem Druck

Beitrag von erikafuchs »

Liebr Stephan,
das mit

Code: Alles auswählen

Sub Main
	ps = ThisComponent.StyleFamilies.getByName("PageStyles").getByName("Default")
	ps.ScaleToPages = 1 'oder 2
End Sub
hat nicht so geklappt. Dannehöfer schreibt:
Um die Tabelle so zu skalieren, dass sie auf eine be-stimmte Anzahl Seiten passt, setzt man die Eigenschaft ScaleToPages auf die passende Seitenmenge.
Wenn nicht genug Inhalt da ist, dann wird anscheinend auch keine zweite Seite erzeugt.
Ich habe jetzt zwei Schaltflächen, die zwei Makros aufrufen. Bei "Duplexdruck" wird in jeder Seite eine zweiter Druckbereich eingefügt. Es ist jetzt so, dass nur dann eine zweite Seite gedruckt wird, wenn in dem Druckbereich auch irgendein Inhalt ist. Das funktioniert dann aber auch.(.... Ich habe mich daran erinnert, dass mein Tintenstrahler Duplex kann!)

Da sind aber zwei neue Probleme aufgetaucht: Wenn ich schon ein Button zum Starten des Drucks habe, so habe ich auch gleich das Druckmenü aufgerufen. Gibt es da eine Möglichkeit "alle Tabellen" voreinzustellen oder alle Tabellen zu markieren?
alle Tabellen.jpg
alle Tabellen.jpg (18.8 KiB) 4573 mal betrachtet
Das hast Du 2011 hier http://www.oooforum.de/viewtopic.php?t=51055 auch schon mal mit F3K Total problematisiert, leider kann man die Datei von ihm nicht mehr runterladen.
Und nochwas: Wenn ich in alle Tabellenseiten einen zweiten Druckbereich einfüge geht ja der voereingestellte verloren. Thomas sagt in seinem Buch, dass ich da zunächst den Druckbereich auslesen muss. Ein Druckbereich ist schon definiert, ein zweiter kommt dazu. Ich habe in meinem jugendlichen Leichtsinn z.B. das probiert.

Code: Alles auswählen

	Druckbereiche(0)=oSheet.GetPrintArea(0)
	DrBereich= oSheet.getCellRangeByName("B3").rangeAddress
	Druckbereiche(1)=DrBereich
	oSheet.setPrintAreas(Druckbereiche()) 
... das geht nicht.... ich habe auch noch andere Ideen probiert - meine Ideen sind aber anscheined nicht zielführend.
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Probleme mit zweiseitigem Druck

Beitrag von erikafuchs »

Nachtrag:
das mit den Druckbereich auslesen und wieder setzen habe ich hinbekommen.

Code: Alles auswählen

	oSheet=ThisComponent.sheets.getByIndex(2)

	GetDrBereich()=oSheet.GetPrintAreas()
	DrBereich=GetDrBereich(0)
	Druckbereiche(0)=DrBereich   
   
	DrBereich= oSheet.getCellRangeByName("B3").rangeAddress
	Druckbereiche(1)=DrBereich
	oSheet.setPrintAreas(Druckbereiche()) 
Kann mir jetzt noch jemand sagen, wie ich die Voreinstellung im Druckermenü auf "Alle Tabellen" setze?
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Probleme mit zweiseitigem Druck

Beitrag von erikafuchs »

Hallo Chris
Datei - Druckereinstellung - Drucker einrichten
- Optionen - Häkchen bei 'Nur ausgewählte Tabellen drucken' rausnehmen ?
... das ist für einige Kollegen/innen schon zu schwer. Ich überlege schon, wer weiß was ein Duplexdrucker ist!
bei Makroaufzeichnung macht er mir nur das:
dispatcher.executeDispatch(document, ".uno:Print", "", 0, Array())
... das habe ich auch schon probiert - das klappt auf den ersten Blick nicht.
Antworten