From 53d67187eafc0de7cd494a475df8d3afc082a29f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Ml=C3=A1dek?=
= $doc["Description"] ?>
+w>sy)+=2f#>f4^&_Hs*ZQ@X-veV4l- zH+SZEo?0`OM8BLDuL-hH3QBUNiu=0|GYbCOaCG^0p&+v#Pl@k_#nGc%G5SNZ7mFYG zZdw>}9i+}u9o?EY$|3!=6Y3w9cX=xMlr>JOqU194S@wsoGMEIiCz6tBGA0G8O)?A6 z*(awsN08kCaM0A9q)9CE#49DP9GN)LeYD#MKKgiTU5u@hW{3(sI{a;JhmYfd2qXR5 z_aymdJEucc(+4=+?#E$%`V({XxXKA6+e2RKpE zYTZ$pzW2Fe##YZCV>o3-M*>7w>bJBUNdcgVod(c_{hG7@&C>^qAMN%>(CFH^^Ws~s z`|P-v0?%}6Q7J`6aMhsdRGB54$g@Dxt5b>Bc?rfJi6!h^tpZ*iEuMH1>_>N>i#}~e ziaH}iVQ7+5NMf^6sEC*02?s;F-Qd@j(&$#gy4K%^evTcq`-%??84P&6*z5egj>6KN zE?)%P{(*XO*3>YIKOyDXv=Z5!TGE1{!&dUpDJm@ZUCC7yOO%Xq)LQ=>a5Kz`$S`oj zZngftm+8g~@IJSmB_S;vFuS11w`BT88{U!`Tf4o#O(@dQM1h^lv^h_jRRvQ5)8~nv zpNy4wtnQq-=T+g>F$<@kQ~i{Np2MB9G8_FgwRLj z3k$ZLdKKZaI!KzW<3)0K_RkoX@D?;)oEjeze=KLsQ$T_1n;4_J5T@!`D6z2OW$rio zxllPH{lSl@`(I!1J2RK_DgM&V_q(d1TBRu2S(92SeBZ}ip9i%QxS%^bNZaiZC-s!9 zxf^6@@ODsS$Xfkr=)0yU_ps%=Mw!tE&eoY014n*rhVbfP?QIFx3mRePKo;SY(s>!P zOm+>r-RCDL>PAw} zaiL~lZhFChNnI#tE;62Xv9RtGYO-} zs&r3?aKOkLXP_h!etETvgD$Q{U~omc+=b&!n+tGnVGG&~66|JzAQ|jNP_d0`^t%8) zkbv^^#P=!roa3ZF_0j%W{j~4LE+bHD?u`w_0S}?UQ1KZaipyI~rS2aM)np?jvkD)K z1}#!$RAp1Vt-ch?>`W|Bd|1e8;u~ORw7N|@s|}azTC*R@rdXcVv!FDiV+3sF?wU?1 z$i0dg%82a`WmV!!RPM1}iJM#AB6&aJZ8ZQ_9JEIW#hQ_g`$O4-H)=cs0?6r`Jtga` z4HKO+kW^%OWCe!j@MHBR*R`+#-2&;N_Y_+ a&-_P1PFOWBW6XG&ZdoVE4P>*i3fKaSDC8VJoY>RCPpBm#(V@*}OMq5vHs z0^=a%#h5s&=CW~|y+a5)dHL>z)R_+!Qq})mtuW5dM93&>>yoYt)N~5;C7X5h`pX$3 z7uoLsMGhLOTx$s56HH8u@u!$&m{_-C5U1`YnZ0jIv3f6u_m!5)KqUu>-0UidL*g3D z&Qwiv`Kf5ONIew;bUrDDOz_x=?{m97$ls@8r6fWyuLO-oXxA}Rj-4Xo>yXCeb2?|- z@P9c@UZ}T~F?lZLB0H673&Rb+oE+)N!bG`VUjwHNZ2p}E$lkHIpaF`w6T+u7WXnlP zAG0vo+WyPu%2ZgE59dj%>3pDaYqF`)<@2_8y2!vtZuo ~S|GEMrWFlby|HW{FDQw{X4IiqD92L_rqx^qzieQuxWeVO_fq2W}@!AS6 zzp%D@M*UklU8KuuApGVafev?zyrM(IEY`&2il}IS4%O-cUC=n6xxBOTYrk?*@?X{L zMJg0)EJj 80{DT-vi=O40FUbU+(3ji}88XxX(n4 C-ZbMv#B9+07yO KiJ`#-xHfwQfYfCmph)AKt^^C??b? `~>kvkkEg6Fk5Q+I@5oMlI-R8cv1IVSC z60;e3SzRQULy4A)1IEF@w)Yga{#kuaTY6}ash{X~FhJA39R>q-xp5i8QPRl`Psf=3 zt7WI}98KW$U6(%AaRs6uay1^UfKr%C06&vB>ukV&iGHp9c%lg7&t(k%d`$WYywy)P zbf`Wj#=K!$qk{jg<73Cm$F?A-5PnhI40pfy>#ukvtk!UMoe6;h!TVkuynU^LOTcS` zi(0j9ABGge)-w0rZ`Qit-F&qQ&4o~8iJoWz@HW 57cZ_d5DW*d%6 zmGXExg>zsEz>V;eh0XL($M8DRdgr_isCC;Gma_-;QvjTTa}L;`sQV`HYa3GOusi-G zBf(lAsPz+`|Do=nL|f{|hb858G>{mY@pdi7;30wYO8nR*Un>A|3omSKfQ7fzt3JTh zkcreWg8`pC6D5fgwDsXlPsE+02Vn_t-!~E4L_>ykj3@{BZ-7^ch8)pzR?jcdVwXSs z;h&Zont?v0#@bD*0yan=a-)lEQ{4% tqpw8Qrq7I=iv_g zp#0zV!C2%yIKwy?Du;gr<=kUe4bV22c>djxu?XW3X%`MKHs67yf5ld1j?gX80@;kz zmmY3+F2a28gIAD2I9NBWXD+o{cATajyod*{=9p7pD*&jdaOsf+ZMChU`9-exsQaAI zI%XiDx2kXB1QN;8AQVo->#jX$ge%YQpcq>R-a1uSpGcuG9GLY;)aCQEvyj1mcL&Ys z#v)r-?)A|To+M*-Nq5~!NN_EDO_RCc`7R{7gurxv^@>uYVNTSE*Mm9t0vG(=JK=r; zbh0!DLIL=E6yT7Au&q7e>Q|~TZVi)EnPl8U%?4m|)C{Rmk8FTE-^btQdCm7394D_g z7RjKLB!vA9L9<+SWRX(qy=r}f3lKezVxL^fyAKuS94J#>UEbiBn6l!#-79;jg|sH_ z6Pf$H5=pCG8TDD1v)ahatnkHQF!ZNWmEJ^YhB++X0GEJg%bv=xlnd?&^BRyByuD z*@V4lsOG-$o2ZGY-Ff|@Qj42657c)hm_ur6V%a(#1;uve2A`oF8{Yx@TMuadmT#v0 zO+3%@5TWj*oJJH&PVOEQv*X)?y)sVDX-sQqev=M>%h_>zthd{j@&@HDDj5`qp8442 zOD$$d-VYNRZZBRrGWLWdof<_iw@kU9*=&yeTDv0aZmTjF=h7%&tWKd52D#tGbXS1t zVk-1&pTO=NkiDsLr`6Lp|1wZBDgAKD7N^Ccd`!jinqs)yfJb^Ybvccn#V@eRpjU5w z p}{+RpjMHs`?sS(WOiNYl` zA@L|;cDhdeC9=r`%T#-=-|pg86p)|323-k4y|naAcsPi#Ydu5%jXD 98}d{k_Fm>IOR+p?hl(B>Okw%JxikIQ 1S%{6`r;}ye-!H|=sA1DQ}*lpbGe|L~JL1s!*pYD{ {RNYM>&i`U#)?Zw2 zLpk9Z{NN^PSD9gF!>b}ndHT+&tqA3z_PJ6ZwH@N-LO&KNLmpu5b8RDw`!b@1pRs*( zL`-q$WkxxDZ9R6Uj{jZ$Td6YyBKEWaOrFFTo)^AJMmyB}LKfYTve+V)30Jo`nMC8Y zFiWI*%qVnH-)b-VqghkXx86}U#^1X(xXXb}&{CVqN?sK#NP-qe4*!)v8IyqnY_rW0 z@0QCycl_Iq%C- rDqrNA*cb0atUv54cF`G1U%Vu7 zxe1j|!iDxnZAI&@+XXRf9Z9ps4HNhjYFKho%(v2Rz3O1z>dc1jlI%v09?w?$HZa_O zjE7r3lb#wNS3{rTZFG>*(tpiXG*KC@IvGVYe7a8!QhR0SoO*Xm0sZpho1u%Sd+%uI z2X4IgPRr+(QxMNvu~(F`pVQ_Jr4b=sN~k8)KJ?DqvRb08$%!kqqP>i8o`g)XKiO8= z68RR*Qu$dM?rF>8GB9v*K&wXC8cfRmB!~8*I+@muKsGwo_F2pRtwqw}SIq&$;-Cl? zb2d7+Jn393;yiew7Z^LDoD5gE_D?@>iGDf4SCVy5MzQ@Oh8ymB^fcb=M>(xOP0I&A zPVC#uCyj{vPs(6g?Dv9nM>7cojA9IZ6As(U^ceU )Sv^H;+x9?H#`;90{jG$bdI!y&o3Gr z!j;%lO&y*vO=p@Xa9zA~Y=MRdj51ug4_NUQzOoFq&$wyB$Nk=Y8aSNehON??xMSnU zv?}<#;8HLBT{E)`tC6h$A;7i@kNZKu@Xp_lx`kQJ)0g6{vCqyhpFT1yQ=|S>1SQRc z!%@J&)VLEG`RcgsNlkNA&mBvpD@xZUPov1Xhmoy^Ee1ENq$h?ywb7Te!1-((HRVT2 JH42u`{}1C>1w{Y= literal 0 HcmV?d00001 diff --git a/www/composer.json b/www/composer.json index 5c49d7e..5c477a1 100644 --- a/www/composer.json +++ b/www/composer.json @@ -4,6 +4,7 @@ }, "require": { "erusev/parsedown": "^1.7", + "mpdf/mpdf": "^8.0", "ext-sqlite3": "*" } } diff --git a/www/composer.lock b/www/composer.lock index f65749b..283bd6e 100644 --- a/www/composer.lock +++ b/www/composer.lock @@ -4,23 +4,24 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f493960dbf3229f8998effb35c5e910d", + "content-hash": "07bcf0ebe745edf9a2aff62e65aae616", "packages": [ { "name": "erusev/parsedown", - "version": "1.7.0", + "version": "1.7.3", "source": { "type": "git", "url": "https://github.com/erusev/parsedown.git", - "reference": "6678d59be48c4be64eaca6ce70bea48a09488cc2" + "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/6678d59be48c4be64eaca6ce70bea48a09488cc2", - "reference": "6678d59be48c4be64eaca6ce70bea48a09488cc2", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/6d893938171a817f4e9bc9e86f2da1e370b7bcd7", + "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7", "shasum": "" }, "require": { + "ext-mbstring": "*", "php": ">=5.3.0" }, "require-dev": { @@ -49,7 +50,277 @@ "markdown", "parser" ], - "time": "2018-02-28T11:41:37+00:00" + "time": "2019-03-17T18:48:37+00:00" + }, + { + "name": "mpdf/mpdf", + "version": "v8.0.2", + "source": { + "type": "git", + "url": "https://github.com/mpdf/mpdf.git", + "reference": "ab0662606cc2396015616633946f3b8918d818a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mpdf/mpdf/zipball/ab0662606cc2396015616633946f3b8918d818a7", + "reference": "ab0662606cc2396015616633946f3b8918d818a7", + "shasum": "" + }, + "require": { + "ext-gd": "*", + "ext-mbstring": "*", + "myclabs/deep-copy": "^1.7", + "paragonie/random_compat": "^1.4|^2.0|9.99.99", + "php": "^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0", + "psr/log": "^1.0", + "setasign/fpdi": "^2.1" + }, + "require-dev": { + "mockery/mockery": "^0.9.5", + "mpdf/qrcode": "^1.0.0", + "phpunit/phpunit": "^5.0", + "squizlabs/php_codesniffer": "^2.7.0", + "tracy/tracy": "^2.4" + }, + "suggest": { + "ext-bcmath": "Needed for generation of some types of barcodes", + "ext-xml": "Needed mainly for SVG manipulation", + "ext-zlib": "Needed for compression of embedded resources, such as fonts" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-development": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "Mpdf\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-only" + ], + "authors": [ + { + "name": "Matěj Humpál", + "role": "Developer, maintainer" + }, + { + "name": "Ian Back", + "role": "Developer (retired)" + } + ], + "description": "PHP library generating PDF files from UTF-8 encoded HTML", + "homepage": "https://mpdf.github.io", + "keywords": [ + "pdf", + "php", + "utf-8" + ], + "time": "2019-06-17T09:03:49+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.9.3", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/007c053ae6f31bba39dfa19a7726f56e9763bbea", + "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2019-08-09T12:45:53+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v9.99.99", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "shasum": "" + }, + "require": { + "php": "^7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "time": "2018-07-02T15:55:56+00:00" + }, + { + "name": "psr/log", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2018-11-20T15:27:04+00:00" + }, + { + "name": "setasign/fpdi", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/Setasign/FPDI.git", + "reference": "3c266002f8044f61b17329f7cd702d44d73f0f7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Setasign/FPDI/zipball/3c266002f8044f61b17329f7cd702d44d73f0f7f", + "reference": "3c266002f8044f61b17329f7cd702d44d73f0f7f", + "shasum": "" + }, + "require": { + "ext-zlib": "*", + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "~5.7", + "setasign/fpdf": "~1.8", + "setasign/tfpdf": "1.25", + "tecnickcom/tcpdf": "~6.2" + }, + "suggest": { + "setasign/fpdf": "FPDI will extend this class but as it is also possible to use TCPDF or tFPDF as an alternative. There's no fixed dependency configured.", + "setasign/fpdi-fpdf": "Use this package to automatically evaluate dependencies to FPDF.", + "setasign/fpdi-tcpdf": "Use this package to automatically evaluate dependencies to TCPDF.", + "setasign/fpdi-tfpdf": "Use this package to automatically evaluate dependencies to tFPDF." + }, + "type": "library", + "autoload": { + "psr-4": { + "setasign\\Fpdi\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Slabon", + "email": "jan.slabon@setasign.com", + "homepage": "https://www.setasign.com" + }, + { + "name": "Maximilian Kresse", + "email": "maximilian.kresse@setasign.com", + "homepage": "https://www.setasign.com" + } + ], + "description": "FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF. Because it is also possible to use FPDI with TCPDF, there are no fixed dependencies defined. Please see suggestions for packages which evaluates the dependencies automatically.", + "homepage": "https://www.setasign.com/fpdi", + "keywords": [ + "fpdf", + "fpdi", + "pdf" + ], + "time": "2019-01-30T14:11:19+00:00" } ], "packages-dev": [], @@ -58,6 +329,8 @@ "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, - "platform": [], + "platform": { + "ext-sqlite3": "*" + }, "platform-dev": [] } diff --git a/www/label.php b/www/label.php new file mode 100644 index 0000000..321e381 --- /dev/null +++ b/www/label.php @@ -0,0 +1,47 @@ +fetchDoc($_GET["id"]); + +$pd = new Parsedown(); +$doc["Description"] = $pd->text($doc["Description"]); + +$front = new Template(); +$front->doc = $doc; + +$defaultConfig = (new \Mpdf\Config\ConfigVariables())->getDefaults(); +$fontDirs = $defaultConfig['fontDir']; +$defaultFontConfig = (new \Mpdf\Config\FontVariables())->getDefaults(); +$fontData = $defaultFontConfig['fontdata']; +try { + $mpdf = new \Mpdf\Mpdf([ + 'format' => 'A4', + 'fontDir' => array_merge($fontDirs, [ + __DIR__ . '/assets', + ]), + 'fontdata' => $fontData + [ + 'prociono' => [ + 'R' => 'Prociono-Regular.ttf', + ] + ], + 'default_font' => 'prociono' + ]); + + $mpdf->showImageErrors = true; + $mpdf->WriteHTML($front->render("_templates/label_template.php")); + $mpdf->Output(); +} catch (\Mpdf\MpdfException $exception) { + http_response_code(500); ?> + Something went wrong generating the label.
+= $exception->getMessage() ?>+ // print_r($exception); ?>// +} +?> \ No newline at end of file