logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak poprawnie wysłać PDF lub JPEG do drukarki przez PJL i jakie zakończenie zadania?

_jta_ 30 Gru 2025 15:00 237 13
REKLAMA
  • #1 21793777
    _jta_
    Specjalista elektronik
    Posty: 49024
    Pomógł: 3211
    Ocena: 4243
    @ElektrodaBot
    Przy wysyłaniu do drukarki zadania drukowania zwykle wysyła się najpierw polecenia w PJL-u (Printer Job Language), kończąc na "@PJL ENTER LANGUAGE = <nazwa><LF>", i potem sam dokument w języku <nazwa>.

    Na końcu zadania zwykle jest <Esc>"%-12345X@PJL EOJ"<LF><Esc>"%-12345X" - nie wiem, czy to jest prawidłowe, drukarka często sygnalizuje błąd (nie jestem pewien, co jest jego przyczyną - może np. przesyłanie dopisuje na końcu <LF>, i drukarka to odbiera jako następne zadanie, które ma nieprawidłowy format?).

    Chciałbym wiedzieć, jakie języki dokumentów drukarka obsługuje, i co powinno być dodane na końcu. Wartość atrybutu drukarki "document-format-supported" to "text/html","text/plain","application/postscript","application/vnd.hp-PCL","application/pdf","application/octet-stream","image/jpeg","image/urf" - czy z tego wynika, że można do PJL-a zapakować np. PDF-a, albo JPEG-a? Jeśli tak, to jak to powinno wyglądać?
  • REKLAMA
  • #2 21793807
    truski
    Poziom 18  
    Posty: 166
    Pomógł: 34
    Ocena: 21
    W dokumentacjido PJL-a od HP wszystkie komendy zawierają sekwencję <CR><LF>, a w twoich przykładach jest sam Line Feed. Może dlatego drukarka zgłasza problem bo np karetka jest już w miejscu gdzie nie można drukować?
  • REKLAMA
  • #3 21793897
    _jta_
    Specjalista elektronik
    Posty: 49024
    Pomógł: 3211
    Ocena: 4243
    Zastąpiłem <LF> kończące polecenia PJL-a przez <CR><LF>, wynik jest taki sam - wysyłam zadanie do wydrukowania, w logu drukarki po tym zadaniu jest dodatkowe, wadliwie sformatowane. Spróbowałem też usunąć końcówkę ("\x1b%-12345X@PJL EOJ\r\n\x1b%-12345X") - wynik był taki sam. Dokument POSTSCRIPT, wygenerowany przez "ippeveps", poprzedzony poleceniami PJL, ostatnie "@PJL ENTER LANGUAGE = POSTSCRIPT\r\n".
  • REKLAMA
  • #4 21793915
    truski
    Poziom 18  
    Posty: 166
    Pomógł: 34
    Ocena: 21
    Na stronie 34 wspomnianej dokumentacji jest przykład, który powinien najpierw wydrukować coś w PCLu a potem przy pomocy PJLa zmieniony jest język na PS i robiony jest wydruk w PS. Sprawdź czy zadziała ci taki gotowiec:
    <ESC>%–12345X@PJL <CR><LF>
    @PJL COMMENT ** Beginning PCL Job ** <CR><LF>
    @PJL ENTER LANGUAGE = PCL <CR><LF>
    @PJL SET LPARM : PCL SYMSET = DESKTOP <CR><LF>
    <ESC>E . . . . PCL job . . . .<ESC>E
    ~<ESC>%–12345X@PJL COMMENT End PCL <CR><LF>
    @PJL COMMENT Ready for PostScript Job <CR><LF>
    @PJL ENTER LANGUAGE = POSTSCRIPT <CR><LF>
    %!PS-ADOBE ... PostScript print job ... ^D
    ~<ESC>%–12345X

    Jeszcze tak zapytam, bo się nie znam - PJL jest uniwersalny dla wszystkich drukarek czy każdy producent ma własną odmianę? Ten kod jest pod HP, a ty na czym testujesz?
  • REKLAMA
  • #5 21794121
    _jta_
    Specjalista elektronik
    Posty: 49024
    Pomógł: 3211
    Ocena: 4243
    Ja mam Konica-Minolta bizhub C368. Do wysłania dokumentu trzeba podać identyfikator i hasło - są właśnie w PJL-u.

    U mnie nie ma falki (~) przed <Esc>"%–12345X" - dodać ją po ^D kończącym PS-a? Spróbowałem, nic się nie zmieniło. Natomiast dodanie falki przed końcowym <Esc>"%–12345X" powoduje, że błąd występuje podwójnie. Dodanie w tamtym miejscu spacji, bądź <Ctrl-D> zamiast tej falki nie powoduje generowania drugiego błędu. Próbowałem różnych kombinacji, licząc na trafienie takiej, przy której nie będzie tego błędu - bez powodzenia.

    Z dokumentami PDF i JPEG jest taki problem, że to są pliki binarne, i może w nich wystąpić dowolna sekwencja bajtów - więc pewnie i <Esc>"%–12345X", oznaczająca koniec dokumentu. I nie wiem - czy do tych dokumentów jest jakiś sposób na to, by rozpoznać, że to jeszcze nie koniec dokumentu, czy też one nie nadają się do pakowania w PJL-a. @ElektrodaBot - wiesz cos o tym?
  • #7 21794334
    truski
    Poziom 18  
    Posty: 166
    Pomógł: 34
    Ocena: 21
    Znalazłem jeszcze inną dokumentację do Konica Minolta Magicolor 2350 - Link oraz ogólną dokumentację o PJL-u - Link
    Wygląda na to, że PJL nie jest wszędzie taki sam, natomiast w dokumentacji od Minolty jest wspomniane, że bazuje na komendach HP.
    Najważniejsze z tych dwóch linków jest jednak coś innego: ciągi <ESC> <CR> <LF> to nie są jak myślałem ciągi znakowe, a poszczególne znaki z tabeli ASCII:
    <ESC> - 027 DEC
    <CR> - 013 DEC
    <LF> - 010 DEC
    oraz że każdy rozkaz wysłany do drukarki ma się zaczynać od Universal Exit Language - <ESC>%-12345X i kończyć na <ESC>%-12345X z tą różnicą, że po kończącym UEL-u nie może być żadnego znaku.
    Może dla autora wątku było to oczywiste, dla mnie nie. W załączniku jest przykładowy job który zmienia język na PS i drukuje w nim napis hello world.
    Co do umieszczania w PJL-u pliku "binarnego" (PDF/JPEG) to nie sądze aby był to problem - ten plik binarny jest konwertowany przez sterownik drukarki na język zrozumiały dla drukarki PCL/PS, który jak przypuszczam nie koliduje z sekwencją UEL PJL-a.
    Na koniec jeszcze pytanie do autora jak wysyłasz komendy do drukarki - jako pliki czy jako komendy? Na końcu nie może być znaku nowej linii, który w przypadku komend może się pojawić
    Załączniki:
    • test.txt (210 Bajtów) Musisz być zalogowany, aby pobrać ten załącznik.
  • #8 21794350
    _jta_
    Specjalista elektronik
    Posty: 49024
    Pomógł: 3211
    Ocena: 4243
    Wysyłałem plik przez raw TCP socket (9100), a potem zmieniłem na zapisywanie do pliku i wysyłanie go przy użyciu "ipptool" z plikiem sterującym "print-job.test", działanie się nie zmieniło. Końcówka pliku to 04 1b 25 2d 31 32 33 34 35 58 40 50 4a 4c 20 45 4f 4a 0d 0a 1b 25 2d 31 32 33 34 35 58 (hex), przed nią był dokument PS. Początek pliku: 1b 25 2d 31 32 33 34 35 58 40 50 4a 4c 20 4a 4f 42 0d 0a 40 50 4a 4c 20 43 4f 4d 4d 45 4e 54 0d 0a i po nim polecenia PJL, ostatnie jest "@PJL ENTER LANGUAGE = POSTSCRIPT"<CR><LF> (40 50 4a 4c 20 45 4e 54 45 52 20 4c 41 4e 47 55 41 47 45 20 3d 20 50 4f 53 54 53 43 52 49 50 54 0d 0a). UEL występuje 3 razy: <UEL>"@PJL JOB"<CR><LF> (potem polecenia PJL i dokument w PS), na koniec <Ctrl-D><UEL>"@PCJ EOJ"<CR><LF><UEL>.
  • #9 21794567
    truski
    Poziom 18  
    Posty: 166
    Pomógł: 34
    Ocena: 21
    Sprawdziłem u siebie, pod Windowsem, przy pomocy narzędzia Hercules SETUP utility wysłałem plik z załącznika na dwie drukarki HP 2055dn oraz Ricoh MP C3004ex i zadziałało, zatem problem jest gdzieś po stronie twojej konfiguracji.
  • #10 21795005
    _jta_
    Specjalista elektronik
    Posty: 49024
    Pomógł: 3211
    Ocena: 4243
    Ale po pierwsze, to nie są drukarki Konica-Minolta (a tym bardziej bizhub C368) - może właśnie ta drukarka czegoś nie toleruje; a po drugie, jeśli drukarka traktuje otrzymany plik jako dwa zadania (choć zamierzone było wysłanie jednego), to czy twój test to zauważa? U mnie to drugie zadanie powoduje błąd, bo brak do niego istotnych poleceń PJL; może na twoich drukarkach nie są one potrzebne, drukarki dostają dodatkowe zadanie, i traktują je jako puste - więc niczego nie drukują, i nie widzisz, że ono jest.
  • #11 21796344
    truski
    Poziom 18  
    Posty: 166
    Pomógł: 34
    Ocena: 21
    W dokumentacji PJL-a do KM-a jest informacja, że standard jest na bazie PJL-a z HP więc przy tak prostych komendach nie doszukiwałbym się problemu z kompatybilnością standardu. Proponuje test - zamieść plik, który u ciebie nie przechodzi a ja spróbuje go wydrukować i zobaczymy jaki będzie rezultat.
  • #13 21801753
    _jta_
    Specjalista elektronik
    Posty: 49024
    Pomógł: 3211
    Ocena: 4243
    truski napisał:
    przy pomocy narzędzia Hercules SETUP utility wysłałem plik z załącznika na dwie drukarki

    A jaki plik i co zostało wysłane? Ja pytam, jak ma wyglądać PJL do pliku np. PDF, czy JPEG, i co może powodować błąd, który występuje.

    truski napisał:
    problem jest gdzieś po stronie twojej konfiguracji.

    I chodzi o zdiagnozowanie, co w tej konfiguracji jest nie tak. Tak niejasna informacja, jaką podajesz, nie jest do tego pomocna.
  • #14 21810279
    _jta_
    Specjalista elektronik
    Posty: 49024
    Pomógł: 3211
    Ocena: 4243
    Spróbowałem wysłać sekwencję PJL-a zakończoną "@PJL ENTER LANGUAGE = PDF"<CR><LF>, po której dokleiłem plik PDF - zadziałało. Zapomniałem sprawdzić log drukarki, więc nie wiem, czy był sygnał błędu.

    Nie wiem, czy początkowe <ESC>"%-12345X@PJL JOB"<CR><LF> resetuje ustawienia drukarki do domyślnych, czy też potrzebny jest najpierw <ESC>"%-12345X@PJL EOJ"<CR><LF>, zwykle umieszczany na końcu zadania?

    Sprawdziłem - przy wysyłaniu PostScript-a, bądź PDF-a bez dodanej końcówki <ESC>"%-12345X@PJL EOJ"<CR><LF><ESC>"%-12345X sygnału błędu nie ma.

Podsumowanie tematu

✨ Dyskusja dotyczy prawidłowego wysyłania plików PDF i JPEG do drukarki za pomocą PJL (Printer Job Language) oraz właściwego zakończenia zadania drukowania. Standardowe zakończenie zadania to sekwencja "%-12345X@PJL EOJ""%-12345X", jednak w praktyce często powoduje to błędy, prawdopodobnie z powodu dodatkowego znaku interpretowanego jako nowe, niepoprawne zadanie. Dokumentacja HP wskazuje, że komendy PJL powinny kończyć się sekwencją , a nie samym . PJL bazuje na standardzie HP, ale implementacje mogą się różnić, co potwierdza przykład drukarki Konica-Minolta bizhub C368, która wymaga autoryzacji w PJL. Wysyłanie plików binarnych (PDF, JPEG) w PJL jest możliwe, potwierdza to atrybut "document-format-supported" drukarki, jednak pliki te mogą zawierać bajty kolidujące z sekwencjami sterującymi PJL, co komplikuje rozpoznanie końca zadania. Testy z plikami PostScript i PDF pokazały, że brak końcowej sekwencji "@PJL EOJ" nie generuje błędów, co sugeruje, że nie zawsze jest ona wymagana. Różnice w zachowaniu drukarek (HP, Ricoh, Konica-Minolta) wskazują na konieczność dostosowania sekwencji PJL do konkretnego modelu. W dokumentacji Konica-Minolta podkreślono, że każdy rozkaz powinien zaczynać się i kończyć sekwencją Universal Exit Language (UEL) %-12345X, a po końcowym UEL nie może występować żaden znak. W praktyce do PJL można "opakować" pliki PDF i JPEG, ale wymaga to uwzględnienia specyfiki binarnego formatu i zachowania drukarki.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA