Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-03-2006, 13:01   #1 (permalink)
as3-beginner
 
Registriert seit: Oct 2001
Beiträge: 76
PrintJop und Seitenränder erzeugen

Hi,

ich hab über PrintJob den Inhalt meiner Scrollbar-Komponenten zum Drucken erstellt.
Dabei prüfe ich auch die Höhe meines Inhalts damit wenn nötig mehrere Seiten gedruckt werden.

Jetzt ist es aber so dass der Seitenumbruch manchmal mitten in der Textzeile stattfindet, da ich eingestellt habe, dass nach 500px Höhe ein Umbruck der Seite gemacht werden soll.

Zusätzlich sitzt meine MC in der Scrollbar auf den Koordinaten 0,0. Somit wird auch am A4-Blatt ganz oben links zu drucken beginnen.
Kann ich Seitenränder einstellen ohne den MC verschieben zu müssen?


ToM
__________________
Keep on rollin´
reboundwarrior ist offline   Mit Zitat antworten
Alt 17-03-2006, 14:12   #2 (permalink)
seltener Gast
 
Benutzerbild von c-lex
 
Registriert seit: Feb 2002
Ort: München
Beiträge: 352
Aus der Flash Hilfe (F1):

PHP-Code:

myButton
.onRelease = function()
{
    var 
my_pj = new PrintJob();
    var 
myResult my_pj.start();
    if(
myResult){
        
myResult my_pj.addPage (0, {xMin 0xMax400yMin0yMax400});
        
my_pj.send();
    }
    
delete my_pj;

Wobei xMin und yMin für Dich interessant sein dürften.

C-LEX
__________________

Gerechtigkeit ist tätige Wahrheit. (Joubert)

Achim Eifohn

c-lex ist offline   Mit Zitat antworten
Alt 17-03-2006, 16:28   #3 (permalink)
as3-beginner
 
Registriert seit: Oct 2001
Beiträge: 76
Hi,

danke für die Antwort, aber soweit ich das verstehe sind xMin und die anderen Werte ja die Positionen die vom MC gedruckt werden sollen und nicht das auf einem A4-Blatt von links 1 cm und von oben 2cm eingerückt werden soll.

Oder seh ich das falsch?

ToM
__________________
Keep on rollin´
reboundwarrior ist offline   Mit Zitat antworten
Alt 18-03-2006, 08:36   #4 (permalink)
as3-beginner
 
Registriert seit: Oct 2001
Beiträge: 76
Question

Guten Morgen,

hat den keiner Rat für mich.
Muß doch möglich sein, die normalen Druckränder eines Druckers einzustellen.

ToM
__________________
Keep on rollin´
reboundwarrior ist offline   Mit Zitat antworten
Alt 28-04-2006, 08:18   #5 (permalink)
Neuer User
 
Registriert seit: Apr 2006
Beiträge: 20
Probier doch mal einen MC zu drucken, indem bereits links und oben weiße Ränder angelegt wurden. Diesen kanst du ja entweder (visible = 0) unsichtbar machen, oder ihn so auf der Bühne platzieren, dass die Ränder nicht zu sehen sind. - Dann lädst du diesen Clip in deinen printJob.

Wenn du also nen A4 Blatt bedrucken willst, und links und rechts soll ein Rand von 1cm sein, könntest du das so machen:
1. Rechnung pkt, px, cm:
Man mus wissen, 72px entsprechen 1 Zoll oder 2,54cm.
1 cm entspricht also ca. (72/2,54) 28,346px. Damit ist ein A4 Blatt also (21x28,346) ca. 595,27px breit.
Für unseren 1cm Rand benötigen wir also 28,346px in Flash.
2. Jetzt machst du im zu druckenden MC zwei Flächen oben und links mit ca. 28,5px. - wir wollen den Rand ja aber auch z.B. rechts, daher ziehen wir den vom MC Inhalt ab. Der ganze MC könnte also ca. 595,27px breit sein wovon ja bereits 28,5 oben und links für den Rand genutzt wurde. Ziehen wir nochmal 28,5px für den rechten Rand ab, bleiben also effektiv noch 538,27px zur Darstellund übrig. - Wenn du nun diesen Bereich nutzt um die Inhalte zu platzieren und diese 28,5px von oben und links setzt, klappt das.
Du solltest aber darauf auchten bei
Code:
{xMin:0, xMax:567, yMin:0, yMax:800}
nicht 538,27 sondern 566,77 einzugeben (wegen dem Rand links. Der rechte Rand ergibt sich dann ja, weil ja keine Inhale mehr über 566,77 hinaus gehen.

PS: Könnte aber auch Hilfe zum Theme "echten" Druckrand gebrauchen.
Gruß!

Nochn Nachtrag dazu: PrintJop und Seitenränder erzeugen

Geändert von GingerP (28-04-2006 um 08:51 Uhr)
GingerP ist offline   Mit Zitat antworten
Alt 28-04-2006, 08:50   #6 (permalink)
Neuer User
 
Registriert seit: Apr 2006
Beiträge: 20
Äh, nochn Nachtrag!
Code:
{xMin:-28, xMax:539, yMin:-28, yMax:800}
Setzt man die Min-Werte auf Minus (-), werden Sie als Rand addiert.
Diesen muss man dann vom Max-Wert abziehen. Wenn der rechte gleichgros sein soll, muss auch dieser vom Max-Wert abgezogen werden. Hier also:

595px (entspricht A4, 21cm Breite) - 28px linker Rand - 28px rechter Rand
= 539px für die Arbeitsfläche effektiv. (Mann kann auch nen größeren Film skaileren.) Alles so ca.

Achtung, wenn man 's so macht, die Inhalt bei 0,0 auf der Bühne pltzieren.
Gruß!
GingerP ist offline   Mit Zitat antworten
Alt 28-04-2006, 12:09   #7 (permalink)
Neuer User
 
Registriert seit: Apr 2006
Beiträge: 20
Ich habe mich gerade mal dran gemacht, diese Randsache zu testen.
Dabei hab ich mal ein kleines Besipiel gemacht:

Wir wollen einen Film, der 810px breit ist auf ein A4 Blatt so positionieren, dass links und rechts ein Rand von ca. 1cm bleibt.
(Dabei ist vorweg zu sagen, dass der hier erzeugte linke Rand auch als Flash-Inhalt gehandelt wird und einige Drucker noch zusätzlich links und oben ihren eigenen Druckrand erzeugen. Alles, also inkl. unserem Rand rutscht dann entsprechend nach links und unten.)

Okay, der Film ist also 810px breit, nach obiger Rechnung entsprechen 21cm (A4-Breite) etwa 595,27px. Daher müssen wir den Film vorm Drucken skalieren. Würden wir die 810px randlos aufs Blatt bringen wollen, wäre der Skalierungsfaktor etwa 0,7349 oder eben 73.49% ([595/810]x100 = 73,49).

Jetzt möchten wir ja aber gerne noch 1cm Rand links und rechts haben.
1cm entspricht etwa 28,346px. Nehmen wir mal 28,35px für unser Beispiel. Da sich die Skalierung des Films auch auf den Rand auswirkt, entsprechen die 28,35px nach dem Skalieren also nicht mehr ca. 1cm sondern nur einem gewissen Prozentsatz des Wertes. Kennt man ca. den Prozentsatz, kann man sich so der gewünschten Randgröße annähern.

Berechnung des Skalierungsfaktors inkl. Rand:
810px (Filmbreite) + 28,35px (Rand links) + 28,35px (Rand rechts) = 866,7px.
Diese 866,7px müssen jetzt auf unser Papier (595px) skaliert werden, also:
(595,27/866,7)x100 = 68,68% - Dies ist der Prozentsatz für die Skalierung.
Der angegebene Rand vom 28,35px (hätte vor der Skalierung ca. 1cm entsprochen) ist jetzt nur 68,68% des Wertes breit, also 0,6868cm. Umgedreht kann man jetzt so grob errechnen, welchen Wert man für den Rand dazugeben müsste, um nach der Skalierung auf ca. 1cm zu kommen (Näherung). 28,35px entsprechen nach der Skalierung auf 68,68% etwa 0,6868cm. 68,68% von 28,35px sind 19,47078px. - 1cm entspricht jetzt also ca. 25,438px. - Man könnte jetzt das Verhältnis, einen Faktor etc. ausrechnen un sich nähern, oder über ne Wurzelfunktion oder Algorithmus die Sache genau berechnen. Aber wir schätzen einfach! Grob sind vermutlich ca 34px Rand erforderlich, damit nachder Skalierung 1cm herauskommt. Achtung! das ganze muss man jedes mal von vorne rechnen, ist ne Näherung, also ändert sich ein Wert, wirkt sich das auf alle anderen inkl. den Prozentsatz aus.
Am besten man sucht sich nen Wert in px, rechnet zusammen mit allen Inhalten den Skalierungsfaktor aus und prüft danach, wie groß denn nun der Rand in cm ausgegeben wird.

Nachdem man sich so grob sein Blatt zusammengerechnet hat, geht es in AS weiter:

Hiermit wird die angefügte Seite skaliert:
Code:
	
_root._xscale = 68.7;
_root._yscale = 68.7;
Mit den Min-Werten wird der linke Rand festgelegt. Da wir den ja schon zweimal in die Gesamtfläche mit reingerechnet haben entsteht der rechte Rand automatisch.
Code:
.addPage("_root", {xMin:-28, xMax:810, yMin:-28, yMax:380}, {printAsBitmap:true});
Nach dem Drucken, Skalierung zurücksetzen.
Code:
delete my_pj;

_root._xscale = 100;
_root._yscale = 100;
Vielleicht kann man die Seitenanpassung damit ja dynamisch machen?
Code:
my_pj.start();
trace(my_pj.paperWidth);

Okay, ich schlage vor nen Rand machen, oben und links etwas weniger dazu geben als rechs und unten noch mehr Platz lassen. Die Skalierung lieber etwas kleiner ausfallen lassen. - Naja, vielleicht hilfts wem.

Gruß!
GingerP ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele