Drukowanie elementów - canvas

0

Witajcie

Dawno temu miałem konto, ale wieki tu nie zaglądałem i nie jestem w stanie odtworzyć loginu a tym bardziej hasła...
więc mam nowy nick i mam problem:

Problem jest taki.

Tworzę kilka elementów canvas,

potem robię tablicę:

			for (a = 0; a < plyty.length; a++) {
				for (ar = nrArkuszaStart + 1; ar <= nrArkusza; ar++) {
						if (arkusz[ar].plyta == (a+1)) {
	
							can = document.getElementById(arkusz[ar].nazwa);
							
							canvasImage[ar] = {
								src: can.toDataURL('image/jpg')
							}
							
						}// if
				} // for
			}// for

po kliknięciu w guzik drukuj tworzę zmienną np. printData do której pcham cały content do wydruku, a w nim m.in. to:


						for (ar = nrArkuszaStart + 1; ar <= nrArkusza; ar++) {
								if (arkusz[ar].plyta == (a+1)) {
									
									can = document.getElementById(arkusz[ar].nazwa);
									image = can.toDataURL('image/jpg');
									
									
									
									data += '<img src="' + canvasImage[ar].src + '" style="float: left; width: 100%; height: auto; margin-top: 20%; margin-left: 0%;">';
									
									
								}
						} // for

I problem jest taki:

u mnie śmiga, u innych również, ale kilku użytkowników ma problem, ponieważ nie ładuje im canvas'a do wydruku.
Podejrzewam, że grafika nie zdąży się załadować gdy content zostaje już przesłany do drukarki. Czy jest taka możliwość?

Jeśli tak, to jak z tego wybrnąć? Czy jest sposób, żeby opóźnić wysłanie do drukarki, żeby grafika zdążyła się załadować?
canvas ma wymiary: 3000px x 2100px i jest ich kilka, czasem kilkanaście...

Myślałem, że zrobienie tablicy ze źródłem canvas'ów przed kliknięciem w guzik drukuj rozwiąże problem, ale niestety.... w chromie działa, a w operze już nie...

Bardzo proszę o radę, bo już wymiękam....

z góry dziękuję

0

Pokaż kod, który drukuje.

Wiele elementów DOM posiada zdarzenie load, na pewno posiada je <img>, może <canvas> też.


UPDATE: Ja mam aktualnie podobny problem, tylko nie chodzi o <canvas> i drukowanie, a <img> i funkcje fadeIn oraz fadeOut (np. w jQuery).

0

Problem na chwilę obecną rozwiązany. Opóźniłem wydruk o 1 sekundę i ładuje wszystko OK, nawet przy dużej ilości canvas'ów.
Nie wiem czy to poprawne i dobre i zgodne dobrą praktyką ale użyłem setTimeout do opóźnienia window.print().

Działa i na razie nie mam sił robić coś innego

Pozdr
Bogdan

1 użytkowników online, w tym zalogowanych: 0, gości: 1