Toon posts:

Print vanuit flash

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo, ik ben bezig met het maken van een A4 display kaart printer die helemaal vanuit flash door klante n te besturen is. Een voorbeeldje staat online op http://www.bsdesign.nl/a4display/

Nu heb ik 1 probleempje. De teksten zoals titels etc etc kan met oppakken en verschuiven/vergroten. En deze worden netjes afgemaskerd door een masker...dat werkt allemaal prima. Maar als je op print drukt maakt hij een A4 print en gaat hij het totaal schalen zodat (en dus ook alles wat buiten het a4tje zit) alles op een A4 past...

Ik heb gelezen dat je via flash een bounding box kan opgeven maar snap niet echt de werking hiervan... Want wat ik ook instel... hij blijft mijn movie verschalen tot een A4-tje...

Weet iemand hoe dat bounding box precies werkt? Ik kom er niet echt uit namelijk.. Ik wil gewoon dat je een ruimte (A4 formaat) aan kunt geven en alles wat daar buiten valt moet gewoon wegvallen...

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 06-02 13:59
Je moet gebruik maken van de printJob methode.

Voorbeeld uit de Flash documentatie:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
my_btn.onRelease = function()
{
    var pageCount:Number = 0;

    var my_pj:PrintJob = new PrintJob();
    
    if (my_pj.start())
    {
    // Print entire current frame of the _root.example movieclip in vector format
    if (my_pj.addPage(_root.example)){
        pageCount++;

        // Starting at 0,0, print an area 400 pixels wide and 500 pixels high
        // of the current frame of the _root.example movieclip in vector format
        if (my_pj.addPage(_root.example, {xMin:0,xMax:400,yMin:0,yMax:500})){
        pageCount++;

        // Starting at 0,0, print an area 400 pixels wide and 500 pixels high
        // of frame 1 of the _root.example movieclip in bitmap format
        if (my_pj.addPage(_root.example, {xMin:0,xMax:400,yMin:0,yMax:500},
            {printAsBitmap:true}, 1)){
            pageCount++;

            // Starting 50 pixels to the right of 0,0 and 70 pixels down,
            // print an area 500 pixels wide and 600 pixels high
            // of frame 4 of level 5 in vector format
            if (my_pj.addPage(5, {xMin:50,xMax:550,yMin:70,yMax:670},null, 4)){
            pageCount++;

            // Starting at 0,0, print an area 400 pixels wide 
            // and 400 pixels high of frame 3 of the "dance_mc" movie clip 
            // in bitmap format
            if (my_pj.addPage("dance_mc",
                {xMin:0,xMax:400,yMin:0,yMax:400},{printAsBitmap:true}, 3)){
                pageCount++;

                // Starting at 0,0, print an area 400 pixels wide
                // and 600 pixels high of frame 3 of the "dance_mc" movie clip
                // in vector format at 50% of its actual size
                var x:Number = dance_mc._xscale;
                var y:Number = dance_mc._yscale;
                dance_mc._xscale = 50;
                dance_mc._yscale = 50;

                if (my_pj.addPage("dance_mc",
                    {xMin:0,xMax:400,yMin:0,yMax:600},null, 3)){
                pageCount++;
                }
                dance_mc._xscale = x;
                dance_mc._yscale = y;
            }
            }
        }
        }
    }
    }
    
    // If addPage() was successful at least once, print the spooled pages.
    if (pageCount > 0){
    my_pj.send();
    }
    delete my_pj;
}

  • LB Back
  • Registratie: November 2004
  • Laatst online: 03-06-2025
Die boundingbox is nog uit het pre-printJob tijdperk en hield in dat je een vorm (graphic bijvoorbeeld) in een frame kon zetten die het printgebied bepaalde. Het frame moest je dan labelen met #b. Daarnaast kon je met #p aangeven welk(e) frame(s) afgedrukt moesten worden als je de optie bframe had gekozen.


Met de printJob heb je veel meer controle via AS en in het voorbeeld uit de documentatie dat beetle71 gaf staat:
code:
1
my_pj.addPage(_root.example, {xMin:0,xMax:400,yMin:0,yMax:500})
waarmee je exact kunt bepalen welk gebied er geprint moet worden. Een gescripte bounding box als het ware.

Verwijderd

Topicstarter
het werkt inmiddels met printJob dus harstikke bedankt!

Verwijderd

Topicstarter
Het werkt nu wel maar ik loop tegen het volgende probleem aan. Als ik hem print naar pdf (via acrobat distiller) dan staat hij netjes gecentreerd op de pagina en zit er als ik hem vanuit pdf print overal rondom dezelfde witrand aan. Maar als ik hem print rechtstreeks naar de printer staat hij links 1 cm uit de kant en rechts maar 4mm en valt de kaderlijn weg omdat mijn printer niet aflopend printen kan...

Met andere woorden hij wordt niet automatisch gecentreerd op de pagina... iemand een idee waat voor een functie ik er nog aan toe moet voegen:

Heb nu dit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
printen.onRelease = function()
{
        var my_pj = new PrintJob();
        var myResult = my_pj.start();
        if(myResult){
               // myResult = my_pj.addPage (0, {xMin : 0, xMax: 598.5, yMin: 0, yMax: 846.45});
                myResult = my_pj.addPage ("printholder", {xMin : 0, xMax: 598.5, yMin: 0, yMax: 846.45},{printAsBitmap:true}, 1);
               // myResult = my_pj.addPage (0, null,{printAsBitmap:false}, 2);
               // myResult = my_pj.addPage (0);
                
                my_pj.send();
        }
        delete my_pj;