<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.8">
  <compounddef id="FAQ_8md" kind="file">
    <compoundname>FAQ.md</compoundname>
    <briefdescription>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <programlisting>
<codeline><highlight class="normal">#<sp/>Frequently<sp/>Asked<sp/>Questions<sp/>(FAQ)</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">##<sp/>Can<sp/>I<sp/>print<sp/>to<sp/>File<sp/>Format<sp/>X<sp/>with<sp/>this?</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">If<sp/>you<sp/>are<sp/>trying<sp/>to<sp/>generate<sp/>XPS,<sp/>PDF<sp/>or<sp/>DOCX<sp/>or<sp/>HTML<sp/>files<sp/>from<sp/>PHP,<sp/>then<sp/>you<sp/>are<sp/>most<sp/>likely<sp/>in<sp/>the<sp/>wrong<sp/>place.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">The<sp/>purpose<sp/>of<sp/>this<sp/>driver<sp/>it<sp/>to<sp/>generate<sp/>binary<sp/>ESC/POS<sp/>code,<sp/>which<sp/>is<sp/>understood<sp/>by<sp/>many<sp/>embedded<sp/>thermal<sp/>receipt<sp/>and<sp/>impact<sp/>printers.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">##<sp/>I<sp/>have<sp/>Printer<sp/>X.<sp/>Can<sp/>I<sp/>use<sp/>this<sp/>driver?</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">If<sp/>the<sp/>printer<sp/>understands<sp/>ESC/POS,<sp/>and<sp/>you<sp/>know<sp/>how<sp/>to<sp/>get<sp/>raw<sp/>binary<sp/>data<sp/>to<sp/>it,<sp/>then<sp/>yes.<sp/>Otherwise,<sp/>no.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">The<sp/>[list<sp/>of<sp/>printers<sp/>that<sp/>are<sp/>known<sp/>to<sp/>work](https://github.com/mike42/escpos-php/blob/development/README.md#printers)<sp/>is<sp/>crowd-sourced.<sp/>We<sp/>appreciate<sp/>it<sp/>when<sp/>developers<sp/>try<sp/>out<sp/>the<sp/>driver,<sp/>then<sp/>[file<sp/>information<sp/>on<sp/>the<sp/>bug<sp/>tracker](https://github.com/mike42/escpos-php/issues/new)<sp/>with<sp/>some<sp/>information<sp/>about<sp/>which<sp/>features<sp/>worked<sp/>on<sp/>their<sp/>model<sp/>of<sp/>printer.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">To<sp/>see<sp/>how<sp/>well<sp/>your<sp/>printer<sp/>works,<sp/>first<sp/>check<sp/>that<sp/>it<sp/>supports<sp/>ESC/POS,<sp/>then<sp/>begin<sp/>by<sp/>attempting<sp/>to<sp/>send<sp/>the<sp/>text<sp/>&quot;Hello<sp/>World&quot;<sp/>to<sp/>your<sp/>printer<sp/>on<sp/>the<sp/>command-line,<sp/>from<sp/>the<sp/>computer<sp/>that<sp/>will<sp/>run<sp/>PHP.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Once<sp/>you<sp/>solve<sp/>this,<sp/>[try<sp/>to<sp/>do<sp/>the<sp/>same<sp/>from<sp/>PHP](https://github.com/mike42/escpos-php/blob/development/README.md#basic-usage)<sp/>using<sp/>the<sp/>default<sp/>profile.<sp/>Further<sp/>details<sp/>are<sp/>in<sp/>the<sp/>[README](https://github.com/mike42/escpos-php/blob/development/README.md)<sp/>file.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">##<sp/>Can<sp/>you<sp/>add<sp/>support<sp/>for<sp/>Printer<sp/>X?</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Features<sp/>vary<sp/>between<sp/>printers,<sp/>so<sp/>we<sp/>collaborate<sp/>on<sp/>an<sp/>ESC/POS<sp/>printer<sp/>compatibility<sp/>database<sp/>to<sp/>collect<sp/>known<sp/>differences:<sp/>[receipt-print-hq/escpos-printer-db](https://github.com/receipt-print-hq/escpos-printer-db).</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">If<sp/>you<sp/>encounter<sp/>garbage<sp/>output<sp/>when<sp/>you<sp/>try<sp/>to<sp/>print<sp/>images<sp/>or<sp/>special<sp/>characters,<sp/>then<sp/>please<sp/>submit<sp/>a<sp/>test<sp/>page<sp/>and<sp/>a<sp/>link<sp/>to<sp/>vendor<sp/>documentation<sp/>to<sp/>the<sp/>`escpos-printer-db`<sp/>project,<sp/>so<sp/>that<sp/>support<sp/>can<sp/>be<sp/>improved<sp/>for<sp/>future<sp/>versions.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">##<sp/>I<sp/>have<sp/>a<sp/>printer<sp/>that<sp/>does<sp/>not<sp/>understand<sp/>ESC/POS.<sp/>Can<sp/>I<sp/>use<sp/>this<sp/>driver?</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">No.<sp/>The<sp/>purpose<sp/>of<sp/>this<sp/>driver<sp/>it<sp/>to<sp/>generate<sp/>binary<sp/>ESC/POS<sp/>code.<sp/>If<sp/>your<sp/>printer<sp/>doesn&apos;t<sp/>understand<sp/>that,<sp/>then<sp/>this<sp/>code<sp/>wont<sp/>be<sp/>much<sp/>use<sp/>to<sp/>you.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Some<sp/>printers<sp/>do<sp/>have<sp/>an<sp/>emulation<sp/>mode<sp/>for<sp/>ESC/POS.<sp/>The<sp/>vendor<sp/>docs<sp/>will<sp/>tell<sp/>if<sp/>this<sp/>is<sp/>the<sp/>case,<sp/>and<sp/>how<sp/>to<sp/>enable<sp/>it.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">##<sp/>Why<sp/>do<sp/>I<sp/>get<sp/>this<sp/>error<sp/>when<sp/>I<sp/>try<sp/>to<sp/>print?</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Start<sp/>by<sp/>testing<sp/>that<sp/>you<sp/>can<sp/>send<sp/>text<sp/>to<sp/>your<sp/>printer<sp/>outside<sp/>of<sp/>escpos-php.<sp/>The<sp/>examples<sp/>linked<sp/>to<sp/>in<sp/>the<sp/>README<sp/>are<sp/>commented<sp/>with<sp/>some<sp/>commands<sp/>to<sp/>get<sp/>you<sp/>started.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Generally,<sp/>initial<sp/>setup<sp/>problems<sp/>seem<sp/>to<sp/>have<sp/>one<sp/>of<sp/>these<sp/>causes:</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">1.<sp/>You<sp/>are<sp/>writing<sp/>to<sp/>the<sp/>wrong<sp/>place.<sp/>Writing<sp/>to<sp/>`LPT1`<sp/>does<sp/>not<sp/>output<sp/>to<sp/>parallel<sp/>port<sp/>on<sp/>Linux,<sp/>and<sp/>`/dev/ttyS0`<sp/>is<sp/>not<sp/>a<sp/>serial<sp/>printer<sp/>on<sp/>Windows.</highlight></codeline>
<codeline><highlight class="normal">2.<sp/>The<sp/>printer<sp/>has<sp/>not<sp/>been<sp/>set<sp/>up<sp/>to<sp/>accept<sp/>printing<sp/>the<sp/>way<sp/>you<sp/>expect.<sp/>This<sp/>means<sp/>permissions<sp/>on<sp/>Linux,<sp/>network<sp/>printers<sp/>being<sp/>configured,<sp/>and<sp/>shared<sp/>printers<sp/>having<sp/>user<sp/>accounts<sp/>and<sp/>firewalls<sp/>set<sp/>up<sp/>correctly<sp/>on<sp/>the<sp/>print<sp/>server.</highlight></codeline>
<codeline><highlight class="normal">3.<sp/>Your<sp/>printer<sp/>actually<sp/>doesn&apos;t<sp/>work<sp/>(rare<sp/>but<sp/>possible).</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">To<sp/>be<sp/>clear,<sp/>these<sp/>are<sp/>not<sp/>escpos-php<sp/>issues:<sp/>No<sp/>amount<sp/>of<sp/>PHP<sp/>code<sp/>can<sp/>set<sp/>up<sp/>your<sp/>printer<sp/>for<sp/>you.<sp/>Instead,<sp/>the<sp/>driver<sp/>relies<sp/>on<sp/>developers<sp/>determining<sp/>how<sp/>their<sp/>setup<sp/>is<sp/>going<sp/>to<sp/>work<sp/>before<sp/>using<sp/>a<sp/>connector<sp/>to<sp/>transport<sp/>data<sp/>to<sp/>their<sp/>printer.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Once<sp/>you<sp/>have<sp/>a<sp/>working<sp/>command<sp/>to<sp/>send<sp/>text<sp/>to<sp/>your<sp/>printer<sp/>(from<sp/>the<sp/>PHP<sp/>server),<sp/>you<sp/>are<sp/>ready<sp/>to<sp/>use<sp/>escpos-php.<sp/>You<sp/>can<sp/>try<sp/>to<sp/>use<sp/>a<sp/>PrintConnector<sp/>now,<sp/>based<sp/>on<sp/>your<sp/>operating<sp/>system<sp/>and<sp/>printer<sp/>interface.<sp/>A<sp/>table<sp/>is<sp/>located<sp/>in<sp/>the<sp/>README<sp/>to<sp/>help<sp/>you<sp/>select<sp/>the<sp/>right<sp/>one.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">The<sp/>connectors<sp/>are-</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">-<sp/>`FilePrintConnector`<sp/>and<sp/>`NetworkPrintConnector`<sp/>directly<sp/>use<sp/>files<sp/>or<sp/>network<sp/>sockets.</highlight></codeline>
<codeline><highlight class="normal">-<sp/>`WindowsPrintConnector`<sp/>and<sp/>`CupsPrintConnector`<sp/>tie<sp/>in<sp/>with<sp/>Windows<sp/>and<sp/>Unix<sp/>system<sp/>printing.</highlight></codeline>
<codeline><highlight class="normal">-<sp/>`DummyPrintConnector`<sp/>does<sp/>not<sp/>connect<sp/>to<sp/>a<sp/>real<sp/>printer,<sp/>and<sp/>can<sp/>be<sp/>used<sp/>to<sp/>save<sp/>ESC/POS<sp/>receipts<sp/>to<sp/>a<sp/>database,<sp/>for<sp/>example.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">At<sp/>this<sp/>point,<sp/>you<sp/>might<sp/>find<sp/>that<sp/>the<sp/>way<sp/>you<sp/>would<sp/>like<sp/>to<sp/>print<sp/>is<sp/>not<sp/>supported<sp/>by<sp/>escpos-php.<sp/>You<sp/>can<sp/>post<sp/>your<sp/>printing<sp/>command<sp/>as<sp/>a<sp/>feature<sp/>request<sp/>on<sp/>the<sp/>issue<sp/>tracker.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Lastly,<sp/>you<sp/>may<sp/>run<sp/>in<sp/>to<sp/>the<sp/>final<sp/>common<sp/>trap:</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">4.<sp/>Your<sp/>PHP<sp/>is<sp/>not<sp/>running<sp/>with<sp/>the<sp/>same<sp/>sort<sp/>of<sp/>permissions<sp/>as<sp/>your<sp/>login<sp/>account.<sp/>Again,<sp/>no<sp/>amount<sp/>of<sp/>PHP<sp/>code<sp/>can<sp/>fix<sp/>this.<sp/>For<sp/>example,<sp/>on<sp/>LAMP,<sp/>your<sp/>`www-data`<sp/>user<sp/>needs<sp/>to<sp/>be<sp/>in<sp/>the<sp/>`lp`<sp/>group,<sp/>while<sp/>on<sp/>WAMP,<sp/>`Local<sp/>Service`<sp/>account<sp/>may<sp/>run<sp/>in<sp/>to<sp/>problems.<sp/>SELinux<sp/>and<sp/>firewalls<sp/>are<sp/>also<sp/>worth<sp/>a<sp/>look.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">When<sp/>printing<sp/>fails,<sp/>you<sp/>can<sp/>expect<sp/>a<sp/>PHP<sp/>Exception<sp/>that<sp/>explains<sp/>what<sp/>went<sp/>wrong.<sp/>They<sp/>are<sp/>all<sp/>clues:</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">-<sp/>`Warning:<sp/>copy(\\pc\printer):<sp/>failed<sp/>to<sp/>open<sp/>stream:<sp/>Permission<sp/>denied`</highlight></codeline>
<codeline><highlight class="normal">-<sp/>`/dev/usb/lp0:<sp/>Permission<sp/>denied`</highlight></codeline>
<codeline><highlight class="normal">-<sp/>`User<sp/>name<sp/>or<sp/>password<sp/>is<sp/>incorrect`</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Ensure<sp/>that<sp/>while<sp/>you<sp/>are<sp/>developing,<sp/>you<sp/>configure<sp/>PHP<sp/>to<sp/>show<sp/>error<sp/>messages,<sp/>so<sp/>that<sp/>you<sp/>can<sp/>see<sp/>these<sp/>problems.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Please<sp/>file<sp/>a<sp/>bug<sp/>if<sp/>you<sp/>think<sp/>that<sp/>there<sp/>is<sp/>a<sp/>specific<sp/>situation<sp/>which<sp/>escpos-php<sp/>could<sp/>provide<sp/>better<sp/>error<sp/>messages<sp/>for.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">##<sp/>Can<sp/>I<sp/>print<sp/>over<sp/>the<sp/>network?</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Certainly,<sp/>as<sp/>long<sp/>as<sp/>your<sp/>printer<sp/>is<sp/>available<sp/>over<sp/>the<sp/>network.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">-<sp/>`NetworkPrintConnector`<sp/>will<sp/>speak<sp/>directly<sp/>to<sp/>an<sp/>Ethernet-connected<sp/>printer<sp/>on<sp/>port<sp/>9100.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">For<sp/>USB<sp/>or<sp/>Serial<sp/>printers,<sp/>you<sp/>need<sp/>to<sp/>install<sp/>the<sp/>printer<sp/>on<sp/>a<sp/>computer<sp/>and<sp/>then<sp/>share<sp/>it,<sp/>so<sp/>that<sp/>it<sp/>becomes<sp/>network-accessible.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">-<sp/>`WindowsPrintConnector`<sp/>will<sp/>connect<sp/>to<sp/>Windows<sp/>shared<sp/>printers<sp/>from<sp/>Windows<sp/>or<sp/>Linux<sp/>(Linux<sp/>users<sp/>will<sp/>need<sp/>Samba).</highlight></codeline>
<codeline><highlight class="normal">-<sp/>`CupsPrintConnector`<sp/>will<sp/>connect<sp/>to<sp/>CUPS-shared<sp/>printers<sp/>from<sp/>Linux<sp/>or<sp/>Mac.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Always<sp/>start<sp/>by<sp/>testing<sp/>your<sp/>shared<sp/>printer<sp/>setup<sp/>outside<sp/>of<sp/>escpos-php.<sp/>The<sp/>examples<sp/>linked<sp/>to<sp/>in<sp/>the<sp/>README<sp/>are<sp/>commented<sp/>with<sp/>some<sp/>example<sp/>commands<sp/>to<sp/>get<sp/>you<sp/>started.<sp/>Typically,<sp/>networks,<sp/>firewalls<sp/>and<sp/>permissions<sp/>need<sp/>to<sp/>be<sp/>set<sp/>up.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Once<sp/>you<sp/>have<sp/>a<sp/>working<sp/>command<sp/>to<sp/>send<sp/>text<sp/>to<sp/>your<sp/>printer<sp/>(from<sp/>the<sp/>PHP<sp/>server),<sp/>you<sp/>are<sp/>ready<sp/>to<sp/>use<sp/>escpos-php.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">If<sp/>you<sp/>have<sp/>any<sp/>issues<sp/>at<sp/>this<sp/>stage,<sp/>please<sp/>ask<sp/>on<sp/>the<sp/>issue<sp/>tracker,<sp/>and<sp/>include<sp/>the<sp/>commands<sp/>that<sp/>you<sp/>used<sp/>to<sp/>verify<sp/>your<sp/>setup.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">##<sp/>Can<sp/>I<sp/>print<sp/>from<sp/>my<sp/>server<sp/>on<sp/>the<sp/>Internet?</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Since<sp/>PHP<sp/>is<sp/>a<sp/>server-side<sp/>language,<sp/>escpos-php<sp/>is<sp/>a<sp/>server-side<sp/>print<sp/>library.<sp/>The<sp/>driver<sp/>is<sp/>able<sp/>to<sp/>transport<sp/>data<sp/>between<sp/>a<sp/>server<sp/>and<sp/>a<sp/>printer<sp/>in<sp/>a<sp/>few<sp/>different<sp/>ways,<sp/>all<sp/>of<sp/>them<sp/>server-side.<sp/>For<sp/>example,<sp/>you<sp/>may<sp/>print<sp/>to<sp/>a<sp/>USB<sp/>printer<sp/>*connected<sp/>to<sp/>the<sp/>server<sp/>running<sp/>PHP*,<sp/>or<sp/>an<sp/>Ethernet<sp/>printer<sp/>*on<sp/>a<sp/>network<sp/>accessible<sp/>to<sp/>the<sp/>server*.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Many<sp/>developers<sp/>dream<sp/>of<sp/>having<sp/>an<sp/>application<sp/>that<sp/>is<sp/>hosted<sp/>on<sp/>the<sp/>public<sp/>Internet,<sp/>with<sp/>POS<sp/>terminals<sp/>accessing<sp/>it,<sp/>and<sp/>printing<sp/>via<sp/>a<sp/>web<sp/>browser.<sp/>Because<sp/>the<sp/>webserver<sp/>cannot<sp/>see<sp/>the<sp/>printer<sp/>in<sp/>this<sp/>sort<sp/>of<sp/>setup,<sp/>a<sp/>server-side<sp/>print<sp/>driver<sp/>is<sp/>not<sp/>much<sp/>use.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Because<sp/>of<sp/>this,<sp/>there<sp/>are<sp/>no<sp/>cut-and-paste<sp/>recipes<sp/>available,<sp/>but<sp/>here<sp/>are<sp/>two<sp/>top-level<sp/>approaches<sp/>you<sp/>could<sp/>take:</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">1.<sp/>Architect<sp/>your<sp/>application<sp/>so<sp/>that<sp/>the<sp/>server<sp/>can<sp/>see<sp/>your<sp/>printer</highlight></codeline>
<codeline><highlight class="normal">2.<sp/>Use<sp/>an<sp/>application<sp/>which<sp/>runs<sp/>client-side<sp/>to<sp/>deliver<sp/>print<sp/>data<sp/>instead</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">###<sp/>Option<sp/>1:<sp/>Allow<sp/>the<sp/>server<sp/>to<sp/>print</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Server-side<sp/>printing<sp/>is<sp/>viable<sp/>if<sp/>the<sp/>server<sp/>can<sp/>get<sp/>to<sp/>the<sp/>printer.<sp/>Here<sp/>are<sp/>some<sp/>ways<sp/>it<sp/>could<sp/>work:</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">-<sp/>Run<sp/>your<sp/>server<sp/>on<sp/>the<sp/>LAN<sp/>instead,<sp/>and<sp/>read<sp/>the<sp/>section<sp/>above<sp/>about<sp/>printing<sp/>over<sp/>the<sp/>network</highlight></codeline>
<codeline><highlight class="normal">-<sp/>Set<sp/>up<sp/>a<sp/>VPN<sp/>so<sp/>that<sp/>your<sp/>cloud-hosted<sp/>server<sp/>can<sp/>also<sp/>access<sp/>the<sp/>LAN</highlight></codeline>
<codeline><highlight class="normal">-<sp/>Expose<sp/>the<sp/>printer<sp/>via<sp/>some<sp/>other<sp/>secure<sp/>tunnel<sp/>to<sp/>the<sp/>server,<sp/>via<sp/>SSH<sp/>or<sp/>TLS</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Please<sp/>do<sp/>your<sp/>own<sp/>research<sp/>to<sp/>determine<sp/>how<sp/>these<sp/>may<sp/>apply<sp/>to<sp/>your<sp/>setup-<sp/>the<sp/>escpos-php<sp/>issue<sp/>tracker<sp/>is<sp/>not<sp/>a<sp/>place<sp/>where<sp/>you<sp/>should<sp/>be<sp/>requesting<sp/>network<sp/>support.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">###<sp/>Option<sp/>2:<sp/>Use<sp/>client<sp/>software<sp/>to<sp/>print</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">If<sp/>you<sp/>aren&apos;t<sp/>able<sp/>to<sp/>set<sp/>up<sp/>some<sp/>network<sp/>infrastructure<sp/>to<sp/>implement<sp/>the<sp/>above,<sp/>then<sp/>you<sp/>cannot<sp/>use<sp/>a<sp/>server-side<sp/>print<sp/>driver.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Here<sp/>are<sp/>some<sp/>browser-based<sp/>printing<sp/>tools<sp/>which<sp/>you<sp/>may<sp/>like<sp/>to<sp/>consider<sp/>instead.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">-<sp/>Use<sp/>system<sp/>printing<sp/>with<sp/>a<sp/>vendor<sp/>driver,<sp/>and<sp/>some<sp/>good<sp/>`@media<sp/>print`<sp/>CSS</highlight></codeline>
<codeline><highlight class="normal">-<sp/>[Chrome<sp/>Raw<sp/>Print](https://github.com/receipt-print-hq/chrome-raw-print)<sp/>app</highlight></codeline>
<codeline><highlight class="normal">-<sp/>[qz](https://qz.io/)</highlight></codeline>
<codeline><highlight class="normal">-<sp/>[ePOS-Device<sp/>SDK<sp/>for<sp/>JavaScript](https://reference.epson-biz.com/modules/ref_epos_device_js_en/index.php?content_id=139).<sp/>Requires<sp/>network<sp/>interface<sp/>card<sp/>that<sp/>supports<sp/>ePOS<sp/>(UB-E04/R04)</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Please<sp/>direct<sp/>queries<sp/>about<sp/>client-side<sp/>printing<sp/>products<sp/>to<sp/>the<sp/>appropriate<sp/>project.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">##<sp/>Why<sp/>is<sp/>image<sp/>printing<sp/>slow?</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Three<sp/>things<sp/>tend<sp/>to<sp/>slow<sp/>down<sp/>the<sp/>image<sp/>processing:</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">1.<sp/>Slow<sp/>PHP<sp/>code</highlight></codeline>
<codeline><highlight class="normal">2.<sp/>Data<sp/>link</highlight></codeline>
<codeline><highlight class="normal">3.<sp/>The<sp/>printer<sp/>itself</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">First,<sp/>ensure<sp/>you<sp/>have<sp/>the<sp/>Imagick<sp/>plugin<sp/>loaded.<sp/>The<sp/>driver<sp/>will<sp/>avoid<sp/>a<sp/>slower<sp/>image<sp/>processing<sp/>implementation<sp/>once<sp/>you&apos;ve<sp/>got<sp/>it.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Next,<sp/>connect<sp/>over<sp/>a<sp/>faster<sp/>interface.<sp/>Serial<sp/>printers<sp/>have<sp/>a<sp/>low<sp/>bit-rate,<sp/>and<sp/>the<sp/>printer<sp/>spends<sp/>a<sp/>lot<sp/>of<sp/>time<sp/>waiting<sp/>for<sp/>data.<sp/>If<sp/>you<sp/>have<sp/>USB<sp/>or<sp/>Ethernet,<sp/>then<sp/>use<sp/>it<sp/>(note:<sp/>storing<sp/>graphics<sp/>to<sp/>the<sp/>printer<sp/>memory<sp/>is<sp/>not<sp/>currently<sp/>implemented).</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Lastly,<sp/>the<sp/>printer<sp/>will<sp/>go<sp/>faster<sp/>if<sp/>you<sp/>use<sp/>less<sp/>pixels.<sp/>Since<sp/>images<sp/>are<sp/>two-dimensional,<sp/>scaling<sp/>down<sp/>by<sp/>50%<sp/>removes<sp/>75%<sp/>of<sp/>the<sp/>pixels.<sp/>The<sp/>driver<sp/>can<sp/>then<sp/>print<sp/>at<sp/>a<sp/>half<sp/>the<sp/>density,<sp/>so<sp/>that<sp/>your<sp/>lower<sp/>resolution<sp/>image<sp/>appears<sp/>the<sp/>same<sp/>size<sp/>when<sp/>printed.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">##<sp/>How<sp/>can<sp/>I<sp/>get<sp/>the<sp/>status<sp/>of<sp/>the<sp/>printer?</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">This<sp/>feature<sp/>is<sp/>not<sp/>implemented,<sp/>but<sp/>a<sp/>solution<sp/>for<sp/>some<sp/>Epson<sp/>printers<sp/>is<sp/>planned.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Only<sp/>`FilePrintConnector`<sp/>or<sp/>`NetworkPrintConnector`<sp/>will<sp/>support<sp/>reading<sp/>from<sp/>the<sp/>printer,<sp/>ensure<sp/>that<sp/>you<sp/>migrate<sp/>to<sp/>those<sp/>if<sp/>you<sp/>would<sp/>like<sp/>these<sp/>features.</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">##<sp/>How<sp/>do<sp/>I<sp/>produce<sp/>this<sp/>complex<sp/>layout?</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">ESC/POS<sp/>&quot;page<sp/>mode&quot;<sp/>is<sp/>not<sp/>currently<sp/>supported,<sp/>which<sp/>would<sp/>allow<sp/>some<sp/>printers<sp/>to<sp/>render<sp/>some<sp/>more<sp/>complex<sp/>layouts<sp/>natively</highlight></codeline>
<codeline></codeline>
<codeline><highlight class="normal">Since<sp/>the<sp/>output<sp/>is<sp/>raster<sp/>anyway,<sp/>it<sp/>is<sp/>suggested<sp/>that<sp/>you<sp/>render<sp/>your<sp/>output<sp/>to<sp/>an<sp/>image<sp/>and<sp/>print<sp/>that<sp/>instead.<sp/>The<sp/>driver<sp/>supports<sp/>PDF<sp/>printing<sp/>via<sp/>Imagick,<sp/>and<sp/>an<sp/>example<sp/>that<sp/>uses<sp/>`wkhtmltoimage`<sp/>is<sp/>available<sp/>in<sp/>the<sp/>repository.</highlight></codeline>
    </programlisting>
    <location file="C:/www/aplusnet/incahellas.com/public_html/lib/escpos-php-development/doc/FAQ.md"/>
  </compounddef>
</doxygen>
