Drukowanie pliku pdf za pomocą javaskrypt'u

Drukowanie pliku pdf za pomocą javaskrypt'u
Witold Wiciu2007
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

Witam
Szukam już jakiś czas rozwiązania mojego problemu i nic nie znalazłem.
W php wysyłam do przeglądarki plik pdf. Przeglądarka otwiera plik i można z nim zrobić co się chce. Wydrukować, pobrać, obrócić. A ja chcę aby przeglądarka od razu otwarła aplet wydruku, tak jak robi to window.print(). Pytanie, czy da się to zrobić w php, zmeniając heder'y? Lub gdzie znaleźć (java)skrypt drukujący pdf.

Yukiteru Gromadzki
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 192
1

Możesz spróbować googlować rozwiązanie przez coś w stylu "js print pdf" albo z tego co widzę istnieje biblioteka która została stworzona do tego celu - PrintJS(https://printjs.crabbly.com/)

Ale jeżeli chodzi o drukowanie pdf'a to na Egde, Firefoxie i IE nie jest to obsługiwane :/

Witold Wiciu2007
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0
Yukiteru Gromadzki napisał(a):

Możesz spróbować googlować rozwiązanie przez coś w stylu "js print pdf" albo z tego co widzę istnieje biblioteka która została stworzona do tego celu - PrintJS(https://printjs.crabbly.com/)

Ale jeżeli chodzi o drukowanie pdf'a to na Egde, Firefoxie i IE nie jest to obsługiwane :/

Dzięki za link. Będę próbować go wykorzystać

A tak a propos. Czy js w chrome drukuje pdf?

Yukiteru Gromadzki
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 192
1

Ta biblioteka drukuje pdf za pomocą js, więc da się to też zrobić za pomocą samego js.
Ale nie ma chyba w chrome żadnej funkcji typu "printPDF()"

Witold Wiciu2007
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

Biblioteka działa. Na moje aktualne potrzeby to rozwiązanie jest wystarczające. Bardzo dziękuję za pomoc.

Witold Wiciu2007
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

Biblioteka bardzo ładnie działa. Nie wiem tylko jak zamknąć stronę po wydrukowaniu. Kiedy napiszę:

Kopiuj
printJS('moj.pdf');
window.close();

Strona zamyka się natychmiast.
Za mało znam js'a, żeby dopisać coś do biblioteki. Nie wiem też, jakie zdarzenie przechwycić, kiedy strona zostanie wydrukowana. Idealnie było by, gdyby naciśnięcie [wydrukuj] powodowało wydruk i zamknięcie, a anuluj powrót do strony. Ale nie wiem jak to ugryźć.

Druga sprawa to losowa nazwa drukowanego lub zapisywanego pliku. Wolał bym aby plik miał nazwę wysłaną w printJS()

Yukiteru Gromadzki
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 192
0

Jeżeli chodzi o przechwytywanie zdarzeń wydruku to nie wiem czy to jest możliwe, natomiast jeżeli chodzi o nazwę pdf'a kiedy w panelu wydruku zmienię tryb z drukowania na zapisanie jako dokument pdf i kliknę zapisz jego domyślną nazwą jest nazwa strony + .pdf więc można zmienić nazwę poprzez:

Kopiuj
document.tile = "MyDoc";

screenshot-20190525151307.png

Witold Wiciu2007
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

U mnie wygląda to trochę inaczej.
Po wyborze na ekranie wydruku zapisu do pdf,
screenshot-20190525224317.png
dostaje coś takiego. Oczywiście można wpisać nazwę z ręki, ale nie o to mi chodzi.
screenshot-20190525224408.png

Tylko dla mnie jest to w tej chwili sprawa drugorzędna. Jestem pewien, że da się zamknąć okno dodając jakieś komendy do biblioteki. Tylko dla mnie jest to zbyt złożony kod. Nie wiem gdzie się wbić. Inny sposób to znaleźć coś, czego można się złapać i wykonać moją komendę pod określonym warunkiem.

Witold Wiciu2007
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

Mimo wszystko wielkie dzięki.

Witold Wiciu2007
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
1

Odnalazłem odpowiedź w innym miejscu. Może się komuś przyda.

Funkcja printJS() przyjmuje różne parametry. Szersze info na stronie printjs.crabbly.com

Kopiuj
printJS({ 
parametr1: wartość1, 
parametr2: wartość2, 
parametr3: wartość3, 
...})

można użyć parametrów:
onLoadingStart,
onLoadingEnd,
onPdfOpen,
**onError **
i wreszcie onPrintDialogClose, który wskazuje na akcję wykonywaną po opuszczeniu okna wydruku. Przykładowa składnia:

Kopiuj
printJS({ 
printable: "moj.pdf", // 
onLoadingStart: function() { // tutaj kod wywołany przez zdarzenie
}
onLoadingEnd: function() { // tutaj kod wywołany przez zdarzenie
}
onPrintDialogClose: function() { // tutaj kod wywołany przez zdarzenie np.: 
window.close();} 
})

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.