-
Notifications
You must be signed in to change notification settings - Fork 0
/
_zpl.php
117 lines (108 loc) · 4.16 KB
/
_zpl.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
use Weez\Zpl\Constant\ZebraFont;
use Weez\Zpl\Constant\ZebraPPP;
use Weez\Zpl\Model\Element\ZebraBarCode39;
use Weez\Zpl\Model\Element\ZebraQrCode;
use Weez\Zpl\Model\Element\ZebraText;
use Weez\Zpl\Model\ZebraLabel;
use Weez\Zpl\Utils\ZplUtils;
$rootDir = __DIR__;
$vendorDir = $rootDir . '/vendor/';
require_once $vendorDir . 'autoload.php';
require_once $rootDir . '/data/mock.php';
if (empty($_POST)) {
die('No Hack');
}
$time_start = microtime(true);
$json_file = isset($_POST['file']) ? $_POST['file'] : false;
$udata = isset($_POST['udata']) ? $_POST['udata'] : [];
//$format = isset($_POST['format']) ? $_POST['format'] : '8x3';
//$dimension = []; //Dimension en dot pour 203 dot per inch
//switch ($format) {
// case '8x3':
// $dimension = ['width' => 1624, 'height' => 609.6];
// break;
// case '3x3':
// $dimension = ['width' => 632, 'height' => 696];
// break;
// default:
// break;
//}
$fd = $rootDir . '/data/perso/' . $json_file;
$inputData = json_decode(file_get_contents($fd), true);
$object = $inputData['objects'];
$format = $inputData['format'];
$format_name = $format['name'];
$dimension = $format['dimension'];
$rate = $dimension['px']['width'] / $dimension['mm']['width'];
$m = current($mock);
$attributes = [
'position' => 'absolute',
'top' => '',
'left' => '',
'width' => '',
'height' => '',
'color' => '',
'rotation' => 0,
'text-align' => 'right',
'font-size' => '4mm',
'font-style' => 'normal',
];
$inner = '';
$zebraLabel = new ZebraLabel();
$zebraLabel->setDefaultZebraFont(new ZebraFont(ZebraFont::ZEBRA_ZERO));
foreach ($object as $o) {
$elt_attributes = [
'top' => $o['top'],
'left' => $o['left'],
'width' => $o['width'] * $o['scaleX'],
'height' => $o['height'] * $o['scaleY'],
'rotate' => -$o['angle'],
];
switch ($o['type']) {
case 'textbox':
case 'i-text':
$elt_attributes = array_merge($elt_attributes, [
'font-size' => $o['fontSize'],
]);
$r = array_merge($attributes, $elt_attributes);
if (isset($m[$o['tag']])) {
$o['text'] = $m[$o['tag']];
}
$x = ZplUtils::convertMmInDot(pixelToMm($r['left'], $rate), ZebraPPP::DPI_300);
$y = ZplUtils::convertMmInDot(pixelToMm($r['top'], $rate), ZebraPPP::DPI_300);
$zebraLabel->addElement(new ZebraText($x, $y, $o['text'], $r['font-size']));
break;
case 'image':
$r = array_merge($attributes, $elt_attributes);
$x = ZplUtils::convertMmInDot(pixelToMm($r['left'], $rate), ZebraPPP::DPI_300);
$y = ZplUtils::convertMmInDot(pixelToMm($r['top'], $rate), ZebraPPP::DPI_300);
switch ($o['tag']) {
case "qrcode":
$zebraLabel->addElement(new ZebraQrCode($x, $y, $m['barcode_id']));
//$inner .= '<qrcode style="' . $r . '" value="' . $m['barcode_id'] . '" ec="H"></qrcode>' . PHP_EOL;
break;
case "barcode":
$w = ZplUtils::convertMmInDot(pixelToMm($r['width'], $rate), ZebraPPP::DPI_300);
$h = ZplUtils::convertMmInDot(pixelToMm($r['height'], $rate), ZebraPPP::DPI_300);
$zebraLabel->addElement(new ZebraBarCode39($x, $y, $m['barcode_id'], $h, 2, 2)); //118, 2, 2
//$inner .= '<barcode style="' . $r . '" value="' . $m['barcode_id'] . '" type="EAN13"></barcode>' . PHP_EOL;
break;
default:
//$inner .= '<div style="' . $r . '"><img src="' . $o['src'] . '"/></div>' . PHP_EOL;
break;
}
break;
default:
break;
}
}
$time_end = microtime(true);
function pixelToMm($value) {
$DPI = 96;
$rate = $DPI / 25.4;
return $value / $rate;
}
$execution_time = number_format(($time_end - $time_start), 2);
$result = ['zpl' => nl2br($zebraLabel->getZplCode()), 'excTime' => $execution_time];
echo json_encode($result);