Skąd wiemy, że drukujemy. Np media = print

0

Jak przeglądarka wchodzi w czynność drukowania (na przysłowiowy papier), ONA to wie, aktywuje tą część CSS, która jest markowana media=print. Tu nie pytam o szczegóły, bo sporo lat temu zrobiłem i do dziś mi działa, wystarczy sobie przypomnieć.

Jak wykryć ten fakt i poinformować backend? Najchętniej bez JS, a na pewno bez ciężkiego JS z dependencjami, jakiś jednolinijkowiec może być.
Czyli hej drogi backendzie, teraz drukujemy, bądź łaskaw dać jeszcze raz to samo, ale z niuansami na jakie jesteśmy umówieni.

Poważne powody do generowania w backendzie mam - inaczej mówiąc myślimy raczej AJAXem niż REST+framework frontowy

3

Nie da się.

2

Sporo zabawy byłoby z czyś takim. Nawet jeśli byśmy mieli informację o zaczęciu drukowania, to nie mamy informacji o jego końcu. Mało tego, drukarka w tym czasie może zostać odłączona albo wybuchnąć. Sama o tym nie poinformuje. Oczywiście system mógłby sprawdzać czy stan drukarki wrócił do stanu gotowy i dać znać stronie. Tyle, że nie da znać, jeśli strona została przeładowana.

1

@AnyKtokolwiek:

Czyli hej drogi backendzie, teraz drukujemy, bądź łaskaw dać jeszcze raz to samo, ale z niuansami na jakie jesteśmy umówieni.

Ale tak właściwie, to co chcesz zrobić?

0
Freja Draco napisał(a):

@AnyKtokolwiek:

Czyli hej drogi backendzie, teraz drukujemy, bądź łaskaw dać jeszcze raz to samo, ale z niuansami na jakie jesteśmy umówieni.

Ale tak właściwie, to co chcesz zrobić?

Sam nie wiem :)
Tzn trochę wiem, np gdyby "codzienne" webowe użycie było bardziej oszczędne (kontrahent z trzema polamI), a na czas drukowania bardziej tłuste (z siedmioma)...
Do "codziennego" długie tabelki podzielone z paginacją, do drukowania ciągłe (i ściągane w jednym kroku, dynamiczne dociąganie jest niepotrzebne - gdyby do tego dostosować adekwatne wysoce optymalne algorytmy backendu)

Ale masz rację w tych sugestiach, nie jest to jakoś BARDZO żywotnie potrzebne.

5

Wydaje mi się, że zabierasz się trochę od pośladków strony.
Zamiast starać się wychwycić moment, w którym ktoś będzie chciał drukować coś z monitora, może lepiej zrób to tak, jak zazwyczaj (a przynajmniej jak ja się spotykam) jest to rozwiązane.

Tak ma chociażby gmail i wiele banków online (poza tymi, które potwierdzenie wypluwają w postaci PDF, którego musisz sobie potem sam wydrukować).

Widok na monitorze jest widokiem na monitorze i nie namawiaj nikogo do drukowania. Zamiast tego dodaj jakiś przycisk/ikonkę z napisem "drukuj", która to spowoduje otwarcie w nowym oknie treści przeznaczonej specjalnie do drukowania. Bez ozdobników, cieni, kolorów (bo możesz drukować na drukarce czarno-białej), w formie uproszczonej, mniej estetycznej ale i łatwiejszej do odczytania na papierze. Moim zdaniem to jest najlepsza opcja - rozdzielenie obrazu wyświetlanego na monitorze od tego, co idzie na drukarkę.

3

@AnyKtokolwiek:

Tzn trochę wiem, np gdyby "codzienne" webowe użycie było bardziej oszczędne (kontrahent z trzema polamI), a na czas drukowania bardziej tłuste (z siedmioma)...

Ale przecież to wszystko jest do ogarnięcia stylami CSS.
Ale inna sprawa, że jak człowiek chce sobie wydrukować, coś co widzi na stronie, a na wydruku dostaje coś innego, to trochę fail :)

3

człowiek chce sobie wydrukować, coś co widzi na stronie, a na wydruku dostaje coś innego, to trochę fail

Zależy, w jaki sposób będzie się wydruk różnić od obrazu na ekranie.
To, o czym pisałem wcześniej to jedynie miały być różnice w formatowaniu, usunięcie ozdobników itp. Chociażby w nagłówku tabelki masz często strzałki do sortowania, jakieś przyciski do filtrowania itp. Wywalanie tego na papier jest bezsensowne. Tak samo jakieś kolorki, cienie i inne rzeczy, bez których na ekranie by było smutno i brzydko, ale które na wydruku są zbędne, a wręcz przeszkadzają. Bo wydruk to powinna być prosta tabelka - przede wszystkim czytelna, do tego łatwo dająca się skserować, skanować itp.

2
cerrato napisał(a):

Wydaje mi się, że zabierasz się trochę od pośladków strony.

Zamiast starać się wychwycić moment, w którym ktoś będzie chciał drukować coś z monitora, .... dodaj jakiś przycisk/ikonkę z napisem "drukuj", która to spowoduje ...

A wiesz, przeleciała mi ta myśl w intuicji, i zgasła. Dzięki za wydobycie.
To jest słuszne rozwiązanie, i o wiele bardziej elastyczne.

0

Pora na pytanie uzupełniające

1 Jaki jest podstawowy pattern JS, aby z okna przeglądarki (z wytworzonym nieco innym html w wersji "do druku") otworzyć okienko wybory drukarki i drukowania?
2. Chyba uznane aplikacje z tym sposobem pozwalają sterować, czy strona na papierze mam mieć stopkę i jaką. Czy też mam błędne wrażenie, to ficzer TYLKO przeglądarki?

FF i Chrome

1
  1. To jest obsługiwane przez system. U mnie np. otwiera się okienko z wyborem drukarki.

  2. Nie rozumiem pytania.

2

@AnyKtokolwiek: 1. window.print()

1

Jeśli temat jeszcze jest aktualny - możesz rzucić okiem na http://tabulator.info/examples/4.9#print. Pięknie tam jest pokazane, co się dzieje, gdy wciśniesz przycisk "Print table". Dokładnie o takie działanie mi chodziło, gdy pisałem wcześniejsze posty :) Przy okazji, jak sobie podejrzysz jak jest to technicznie zrobione, to uzyskasz odpowiedź na pytanie jak otworzyć okienko wybory drukarki i drukowania.

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