Drukowanie pliku pdf za pomocą javaskrypt'u

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.

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 :/

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?

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()"

0

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

0

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

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()

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:

document.tile = "MyDoc";

screenshot-20190525151307.png

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.

0

Mimo wszystko wielkie dzięki.

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

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:

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();} 
})

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