Директен печат от браузъра направо на принтера
Безплатна програма за компютъра: сайтът ви или TapTo праща фактура, товарителница или етикет, а тя го отпечатва веднага на избрания принтер — без прозореца за печат. За обикновени, етикетни и касови принтери.
Направени за нашата работа, отворени и за вас. Създадохме тези инструменти като част от TapTo ERP, за да организираме и улесним работата си всеки ден. Дадохме ги и на клиентите — ако имате нужда от такива инструменти на едно място, ползвате ги с един профил.
Сайтът праща документа, програмата го отпечатва — без прозореца за печат.
PDF и снимки
Фактури, товарителници, документи — с размер на хартията, мащаб, полета, страници, двустранен печат и копия.
Етикетни и касови принтери
Направо на езика им — ZPL, EPL, TSPL и ESC/POS — за етикети с баркод и касови бележки.
Опашка и повторен опит
Всеки принтер с опашка. При липса на хартия или изключен принтер изчаква и продължава; „Отпечатай пак“ с едно натискане.
Състояние на принтера
Хартия, капак, офлайн, мастило — и следене на всяка заявка до „Отпечатано“.
Само разрешени сайтове
Нов сайт иска разрешение с код: разрешавате винаги, само сега или го блокирате.
Печат от папка
Файл, пуснат в избрана папка, се отпечатва сам. Статистика по дни, принтери и сайтове.
За пет минути печатате от сайта
Свалете и пуснете
Windows: двоен клик на TapToDirectPrint.exe. Ако излезе синият прозорец на SmartScreen — „Още информация“ → „Изпълни въпреки това“. Linux: разрешете файла за изпълнение и го пуснете.
Пробвайте принтера
Иконата се появява до часовника. Десен бутон → „Отвори“ → изберете принтера → „Отпечатай тест“.
Нека тръгва сама
Настройки → Общи → „Стартирай заедно със системата“. Оттук нататък не мислите за нея.
Разрешете сайта
Натиснете „Печат“ в TapTo или във вашия сайт. Излиза прозорец с код — сравнете го и изберете „Разреши винаги“.
Всичко за печата на едно място
Работи веднага — а ако искате, настройвате всичко
Общи
Достъп на сайтове
Печат
Опашка
Папки
Един за всичко — и резервни за мрежовите принтери
Програмата не е сайт? Пак печата.
Счетоводството, складът или куриерската програма записват файла в папка — Direct Print го отпечатва сам на избрания принтер и го прибира. Настройва се в Настройки → Папки.
записва файла
„Товарителници“
печата сам
или изтрит
Какво значи съобщението и какво да направите
Безплатно, без регистрация
507611c1d3cefea12a656a33d20fd4aee29348c4b5d7ba4cb3e2064d382fcb54d3c40a2349216aa553df7097728f2df8f6021eade32877639f2fd9722202c2bcПрограмата се обновява сама. За macOS още няма версия.
Печат от вашия сайт с три реда JavaScript
Сайтът говори с програмата на компютъра на потребителя през ws://localhost:8765. Браузърите разрешават тази връзка и от https:// страница — без сертификати и без разширения.
<script src="https://tapto.bg/js/tapto-print.js"></script>
const tp = new TapToPrint(); const printers = await tp.printers();
await tp.print({ url: 'https://…/faktura.pdf' });Ако програмата не е пусната, библиотеката сама показва съобщение с бутон за изтегляне, а при първата връзка — кода за сдвояване. Изключва се с new TapToPrint({ ui: false }).
// фактура — 2 копия, A4, двустранно
await tp.print({
url: 'https://shop.bg/faktura/123.pdf',
copies: 2,
paper: 'A4',
duplex: 'long'
});
// товарителница в реален размер на етикетния принтер
await tp.print({
url: 'https://shop.bg/label/55.pdf',
printer: 'Zebra ZD421',
paper: '100x150',
scale: 'none'
});
// направо на езика на принтера — най-бързо за етикети
await tp.print({
raw: '^XA^CI28^FO40,40^A0N,40,40^FDЗдравей^FS^XZ',
printer: 'Zebra ZD421'
});
// PDF, създаден в браузъра (Blob / File / ArrayBuffer)
const pdf = await fetch('/orders/123/pdf').then(r => r.blob());
await tp.print({ data: pdf, title: 'Поръчка 123' });
// принтерите на компютъра и тяхното състояние
const printers = await tp.printers();
// [{ id: 'printer_1', name: 'HP LaserJet', is_default: true,
// ready: true, status: 'Готов', ... }]
const hp = await tp.status('HP LaserJet');
if (!hp.ready) alert(hp.status); // напр. „Няма хартия“
// чакаме листа да излезе и показваме всяка стъпка
try {
const job = await tp.print({
url,
wait: 'printed',
onProgress: job => console.log(job.state_text, job.message)
});
console.log('Готово', job.id);
} catch (e) {
// e.code: NOT_RUNNING · DENIED · ERROR · CANCELED
console.warn(e.code, e.message);
}
const ws = new WebSocket('ws://localhost:8765');
ws.onopen = () => ws.send(JSON.stringify({
action: 'print', request_id: 'a1',
url: 'https://shop.bg/faktura/123.pdf',
printer_name: 'HP LaserJet', copies: 1
}));
ws.onmessage = e => console.log(JSON.parse(e.data));
// → { event: 'job', job: { id: 7, state: 'printing', ... } }
// → { request_id: 'a1', status: true, job_id: 7, state: 'sent' }
Пътят на заявката
queuedВ опашка
downloadingИзтегляне
preparingПодготовка
waiting_printerЧака принтера
printingПечата
sentИзпратено
printedОтпечатано
retry_waitОпитва пак
errorГрешка
canceledОтказана
Всяка стъпка идва като събитие { event: 'job', job } и в onProgress. С wait: 'printed' обещанието се изпълнява, когато листът е излязъл.
Полета на print()
url · data · raw | Какво се печата: адрес на файла · Blob / File / ArrayBuffer / base64 · текст на езика на принтера (ZPL, EPL, TSPL, ESC/POS) |
printer | Име или id от printers(). Без него — принтерът по подразбиране |
copies | 1–99 |
orientation | vertical · horizontal · auto (по страницата) |
paper | A4 · A5 · A6 · A3 · Letter · Legal · 100x150 (в мм) |
scale | fit впиши · shrink само намали · none реален размер 1:1 · fill запълни |
margins_mm | Полета в милиметри |
pages | "1-3,5" |
duplex | none · long · short |
color | color · mono |
headers | За url, който иска вход: { Authorization: "Bearer …" } |
encoding | За raw текст: utf-8 (по подразбиране) · cp866 · cp1251 |
title | Името на документа в опашката и в „Заявки“ |
wait | 'sent' (по подразбиране) · 'printed' · false (веднага връща номера) |
Действия по WebSocket
ping | Версия, лиценз, възможности |
list_printers | Принтерите със състояние (ready, status, problems, markers — мастило), direct_pdf, queued |
printer_status | Само за един принтер (printer_id / printer_name) |
print | Печат — полетата отляво + printer_id / printer_name |
job_status · cancel | По job_id |
jobs | Последните заявки на този сайт |
JSON съобщения. Всеки отговор има status и message, а request_id се връща обратно. На компютъра с програмата: тестова страница на http://localhost:8765/.
Тази страница ще печата на вашия принтер
Пуснете Direct Print и натиснете бутона. Страницата се свързва с програмата точно както вашият сайт ще го прави — първия път ще видите кода за сдвояване.
Програмата слуша само на този компютър. Всеки нов сайт трябва да бъде разрешен от човека пред екрана с код за проверка, а блокираните не могат дори да се свържат. Сайтът не вижда файловете на компютъра — само списъка с принтери и своите заявки.