Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zła jakość drukowanej grafiki w Chrome i Firefox
duli5
post 15.09.2018, 18:40:04
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 4.04.2018

Ostrzeżenie: (0%)
-----


Hej. Mam problem z wykonaniem wydruku przez Ctrl + P lub Ctrl + Shift + P zawartości strony. Już tłumaczę w czym jest problem.
Chciałem wydrukować wygenerowaną etykietę na drukarce Zebra GK420d. Próbowałem drukować etykietę generowaną w całości za pomocą PHP GD jako plik png lub jpg, jak i stworzoną w html'u. W obu przypadkach wydruk był złej jakości, mocno rozpikselizowany. Niestety problem występuje w Chrome i Firefox sad.gif
Dziwi mnie to, że wydruk etykiety przez przeglądarkę obrazów w Windzie czy w Word'e daje idealny wydruk.
Próbowałem podnosić DPI podczas generowania etykiety w PHP. Oraz zmianę dpi w about:config w Firefox. Nic to nie zmieniło, jakość cały czas kiepska.
Macie jakiś pomysł skąd bierze się ta zła jakość w wydruku poprzez przeglądarkę? A druk przez programy do grafiki czy Worda nie powoduje takich problemów?

Go to the top of the page
+Quote Post
StrefaPi
post 16.09.2018, 07:52:44
Post #2





Grupa: Zarejestrowani
Postów: 232
Pomógł: 50
Dołączył: 2.03.2013

Ostrzeżenie: (0%)
-----


A może jakiś przykład link do kodu / grafiki?


--------------------
https://studiostawki.com - studio fotograficzne i filmowe - ul. Inflancka 11, Warszawa
Go to the top of the page
+Quote Post
duli5
post 16.09.2018, 08:33:46
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 4.04.2018

Ostrzeżenie: (0%)
-----


System opiera się o Symfony i PHP 7.1
Próbuje wydrukować kod paskowy. Tak wygląda kod wydrukowany przez przeglądarkę obrazów Windows'a lub w Word'e/Excelu:


A tak poprzez przeglądarki. Kod jest poszarpany/rozpixelizowany na krawędziach:


Przykład z wykorzystaniem HTML'u oraz codeitnowin/ Barcode Generator QR Code generator
Przykład 1:
  1. $barcode = new BarcodeGenerator();
  2. $barcode->setText("12345678_1");
  3. $barcode->setType(BarcodeGenerator::Code128);
  4. $barcode->setScale(8);
  5. $barcode->setThickness(65);
  6. $barcode->setFontSize(30);
  7. $code = $barcode->generate();
  8.  
  9. return $this->render("front.html.twig",["barcode"=>$code]);

Oraz Twig:
  1. <img src="data:image/png;base64,{{ barcode }}" />


Przykład z wykorzystaniem php gd
Przykład 2:
  1. $size = "100";
  2. $code_string = "";
  3.  
  4. $chksum = 104;
  5.  
  6. $code_array = array(" " => "212222", "!" => "222122", "\"" => "222221", "#" => "121223", "$" => "121322", "%" => "131222", "&" => "122213", "'" => "122312", "(" => "132212", ")" => "221213", "*" => "221312", "+" => "231212", "," => "112232", "-" => "122132", "." => "122231", "/" => "113222", "0" => "123122", "1" => "123221", "2" => "223211", "3" => "221132", "4" => "221231", "5" => "213212", "6" => "223112", "7" => "312131", "8" => "311222", "9" => "321122", ":" => "321221", ";" => "312212", "<" => "322112", "=" => "322211", ">" => "212123", "?" => "212321", "@" => "232121", "A" => "111323", "B" => "131123", "C" => "131321", "D" => "112313", "E" => "132113", "F" => "132311", "G" => "211313", "H" => "231113", "I" => "231311", "J" => "112133", "K" => "112331", "L" => "132131", "M" => "113123", "N" => "113321", "O" => "133121", "P" => "313121", "Q" => "211331", "R" => "231131", "S" => "213113", "T" => "213311", "U" => "213131", "V" => "311123", "W" => "311321", "X" => "331121", "Y" => "312113", "Z" => "312311", "[" => "332111", "\\" => "314111", "]" => "221411", "^" => "431111", "_" => "111224", "\`" => "111422", "a" => "121124", "b" => "121421", "c" => "141122", "d" => "141221", "e" => "112214", "f" => "112412", "g" => "122114", "h" => "122411", "i" => "142112", "j" => "142211", "k" => "241211", "l" => "221114", "m" => "413111", "n" => "241112", "o" => "134111", "p" => "111242", "q" => "121142", "r" => "121241", "s" => "114212", "t" => "124112", "u" => "124211", "v" => "411212", "w" => "421112", "x" => "421211", "y" => "212141", "z" => "214121", "{" => "412121", "|" => "111143", "}" => "111341", "~" => "131141", "DEL" => "114113", "FNC 3" => "114311", "FNC 2" => "411113", "SHIFT" => "411311", "CODE C" => "113141", "FNC 4" => "114131", "CODE A" => "311141", "FNC 1" => "411131", "Start A" => "211412", "Start B" => "211214", "Start C" => "211232", "Stop" => "2331112");
  7. $code_keys = array_keys($code_array);
  8. $code_values = array_flip($code_keys);
  9. for ($X = 1; $X <= strlen($text); $X++) {
  10. $activeKey = substr($text, ($X - 1), 1);
  11. $code_string .= $code_array[$activeKey];
  12. $chksum = ($chksum + ($code_values[$activeKey] * $X));
  13. }
  14. $code_string .= $code_array[$code_keys[($chksum - (intval($chksum / 103) * 103))]];
  15.  
  16. $code_string = "211214" . $code_string . "2331112";
  17.  
  18.  
  19. $code_length = 20;
  20. for ($i = 1; $i <= strlen($code_string); $i++) {
  21. $code_length = $code_length + (integer) (substr($code_string, ($i - 1), 1));
  22. }
  23. $img_width = $code_length;
  24. $img_height = $size;
  25.  
  26. $image = imagecreate($img_width + 10, $img_height);
  27. imageresolution($image, 300,300);
  28. $black = imagecolorallocate($image, 0, 0, 0);
  29. $white = imagecolorallocate($image, 255, 255, 255);
  30.  
  31. imagefill($image, 0, 0, $white);
  32.  
  33. $location = 10;
  34. for ($position = 1; $position <= strlen($code_string); $position++) {
  35. $cur_size = $location + (substr($code_string, ($position - 1), 1) );
  36. imagefilledrectangle($image, $location, 0, $cur_size, $img_height, ($position % 2 == 0 ? $white : $black));
  37. $location = $cur_size;
  38. }
  39. imagepng($image,"plik.png");
  40. imagedestroy($image);


W obu przypadkach wydruk kodu wygląda fatalnie przy próbie druku poprzez przeglądarki. Natomiast jak np tak wygenerowany plik png wkleję do Worda lub wydrukuję chociażby w durnym Paint'cie to wygląda idealnie :/
Go to the top of the page
+Quote Post
trueblue
post 17.09.2018, 07:59:24
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Skoro wklejasz do innego edytora i jakość jest ok, to jak rozumiem jakość wygenerowanego obrazka również jest ok.
Prawdopodobnie chodzi o problem druku bezpośrednio ze strony. Sprawdź czy w ustawieniach drukowania nie jest ustawiony dithering lub inne opcje, po prostu pokombinuj.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 17:19