Jones: window.print() druckt leere Seiten

Hallo,

ich habe eine HP auf der ich eine SVG Grafik darstelle,
nun will ich per window.print() die Seite mit dem SVG drucken,
das klappt auch wunderbar (das svg geht über die gesamte seite).
den Printbutton blende ich vorher via style.display="none" aus.
Jedoch werden immer 2 seiten gedruck, eine mit der svg grafik, die ander mit den nicht dargestellten buttons - also komplett leer.

zum besseren verständnis

die js funktion im header (b1 und b2 sind buttons)

//print BPL without print button
function printPage() {
var elem = document.getElementById('b1');
elem.style.display = 'none';
var elem1 = document.getElementById('b2');
elem1.style.display = 'none';
window.print();
elem.style.display = 'block';
elem1.style.display = 'block';
}

und der rest im body

<input id="b1" type="button" value="print" onClick="javascript:printPage()" >
<form id="lay1" style="display:block">
<div style="float: left; border: 1px solid silver;">
<embed id="SVGEmbed" style="display:block;background-color:#FFFFFF;" type="image/svg+xml" src="svg.svg" heigth="2000" width="2000"/>
</div>
</form>

Ich sags auch lieber gleich. Ohne den <form> tag wird nur eine seite gedruckt, allerdings verschwinded das svg auch mit den buttons.

danke für jede hilfe

Jones

  1. ein einfaches
    @media print {
     #b1, #b2 { display:none; }
    }
    im Stylesheet tuts auch, schon verschwinden die Button im Ausdruck (und zwar egal wie das Drucken aufgerufen wird)

    Ich sags auch lieber gleich. Ohne den <form> tag wird nur eine seite gedruckt, allerdings verschwinded das svg auch mit den buttons.

    Offenbar fehlt hier etwas Code. Das form-Element ist so komplett sinnlos.

    1. ein einfaches
      @media print {
      #b1, #b2 { display:none; }
      }
      ...tuts auch...

      danke hierfür

      Offenbar fehlt hier etwas Code. Das form-Element ist so komplett sinnlos.

      Die Seite ist nicht von mir und ich kann Sie nicht ohne weiteres verändern.
      Ich sollte nur die print Funktion hinzufügen.

      1. Also was nun:

        ich habe eine HP auf der ich eine SVG Grafik darstelle,

        oder

        Die Seite ist nicht von mir und ich kann Sie nicht ohne weiteres verändern.

        und was heißt hier "nicht ohne weiteres"?

        Meine Frage bezog sich übrigens auf den Teil, den du hier offenbar weggelassen hast!

        1. um die verwirrung mal zu lösen:

          Die seite sieht folgendermasen aus   fotos.web.de/jo.pi_aus_la/a

          Es ist ist kein reines html. auch kein jsp oder php, sondern eine firmeneigene technologie, die ich selber nicht kenne.

          die einzigen html Schnipsel an denen ich rumbasteln kann sind

          <input id="b1" type="button" value="print" onClick="javascript:printPage()" >
          <form id="lay1" style="display:block">
          <div style="float: left; border: 1px solid silver;">
          <embed id="SVGEmbed" style="display:block;background-color:#FFFFFF;" type="image/svg+xml" src="svg.svg" heigth="2000" width="2000"/>
          </div>
          </form>

          wie ich schon vorher gepostet habe.

          Trotzdem danke.

          1. um die verwirrung mal zu

            vergrößern: Was hat die angegebene Seite mit dem Problem zu tun?

            die einzigen html Schnipsel an denen ich rumbasteln kann sind

            also stammt das Formular doch von dir?

            <input id="b1" type="button" value="print" onClick="javascript:printPage()" >

            hier sollte es einfach: onclick="window.print()" heißen, der restliche Inhalt deiner Funktion ist durch das CSS (s.o.) überflüssig.

            <embed id="SVGEmbed" style="display:block;background-color:#FFFFFF;" type="image/svg+xml" src="svg.svg" heigth="2000" width="2000"/>

            dass valide nur <object> und nicht <embed> ist weißt du?

            wie ich schon vorher gepostet habe.

            durch permanentes Wiederholen derselben Information wird das Problem möglicherweise nicht deutlicher!