راکت
حل شده

درخواست چاپ به صورت مستقیم از وب

10 پاسخ

سلام
من برای یه برنامه ای، نیاز دارم بدون باز شدن پنجره ی پرینت مرور گر یا تنظیمات چاپگر، ب صورت مستقیم با زدن دکمه ی چاپ درون سایت و برنامه ی خودم،صفحه به صورت مستقیم از چاپگر چاپ بشه و صفحه ی تنظیمات رو دوباره نمایش نده
برای چاپ فیش از دستگاه فیش پرینتر نیاز دارم و لزومی به مشاهده ی پنجره ی چاپ توسط کاربر وجود نداره.

ثبت پرسش جدید

پاسخ‌ها

10
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

بهترین پاسخ

تا جایی که می‌دونم به دلیل ملاحظات امنیتی این امکان وجود نداره مگر اینکه مرورگر کروم رو در حالت kiosk mode قرار داده باشید. توضیحات بیشتر و آموزش انجامش:
https://www.websitesupport.info/hc/en-us/articles/360024709193-Bypass-the-Print-Dialog-Box-in-Chrome

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

توی گفتو گوی زیر لینکی وجو داره که مثل شما گفته شده ب خاطر امنیتش ممکن نیست ولی بحثی شده راجب استفاده از پرت و node.js که متوجهش نشدم من اشنایی با نود جی اس ندارم
لینک بحث در راکت که دوستمون قرار دادن لینک رو (حق کپی رایت 😂😂)
لینک سایت مربوطه که مطرح کردم قضیه رو

متن زیر توی لینکی فرستادم رو بررسی کنید

The hack I wrote uses nodejs at the server, and connects DAQ to the server using TCP sockets using the "net" module of nodejs and connects the server to the HTML page using socket.io.

Alimotreb
Alimotreb
@Alimotreb

تخصص: کانفیگ سرور و برنامه نویس

سلام
@salar.mohammad2013

نهایت کار به نظرم این هست :
javascript:window.print()

این صفحه در اصل صفحه تنظیماته که میاره که کدوم پرینتر، چه سایزی، کجا ، چطوری، ....

شاید پاسخ شما همین‌جا باشد

جلال ملک پور دهنوی
جلال ملک پور دهنوی
@malekpoor68

تخصص: بیگینر

با سلام فکر می کنم باید یک ویندوز سرویس بنویسی و ارتباط اون با برنامه وب برقرار کنی.
توسط سینگال آر(signalR) بین برنامه وب و ویندوز سرویس ارتباط برقرار میکنی.
اینم منبعش:
https://docs.microsoft.com/en-us/aspnet/signalr/overview/deployment/tutorial-signalr-self-host

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

@malekpoor68
سلام و سپاس از پاسختون
مشکل با kiosk print در کروم حل شد
موردی که فرستادید رو حتما بررسی خواهم کرد
ممنون

Arseni44
Arseni44
@arseni44

تخصص: برنامه نویس

سلام. من هم در تقریبا چنین چیزی میخواهم که از طریق جاوااسکریپت عملیات پرینت مستقیم انجام شود بدون اینکه نیاز به پرینت دیالوگ باشد (از طریق ترمال پرینت) مثلا در رستورانی ثبت سفارش که صورت گرفت در لحظه پرینت در چندین جای مختلف بطور مستقیم انجام شود
کد جاوا اسکریپت این عملیات را دارید و امکانش هست در اختیار قرار بدید؟ @salar.mohammad2013

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

سلام عزیز
@arseni44
دستور چاپش همون window.print() هست
اما موضوع همون kiosk mode هست که به عنوان پاسخ برتر انتخاب کردم برای کروم
شما باید مرورگر کروم خودت رو توی مودی ببری که پیام چاپ رو ازت نپرسه ( یعنی خود کاربر همچین اجازه ای رو بده به مرورگر و سایت شما )
همین

Arseni44
Arseni44
@arseni44

تخصص: برنامه نویس

ممنون بابت پاسختون @salar.mohammad2013
فقط مساله اینه که من چندین پرینتر دارم که وقتی سفارش ثبت میشه میخوام همزمان هرکدوم جداگانه یه بخشی از سفارش رو پرینت بگیرند. مثلا ترکیب سفارش من شامل نوشیدنی، غذای اصلی و دسر هست که هرکدوم از اینها در یک بخش تهیه که هرکدام یک پرینتر جداگانه دارن. مشتری یک سفارش کلی میده و میخوام اون اقلام به بخش های مربوطه رفته و پرینت گرفته شوند
در واقع روش کیوسک برای چند پرینتر که قرار هست بطور همزمان عملیات پرینت بگیرن هم کار میکنه؟ اگر آره به چه شکلی؟

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

@arseni44
شما با دستور کیوسک فقط اون دیالوگ باکس رو بالا نمیاری و بدون دریافت مجوز عمل پرینت رو انجام میدی
این که بتونی همزمان از چند پرینتر استفاده کنی رو دیگ باید از جای دیگری پیگیرش باشی
اطلاعی ندارم.

علی رادیکال
علی رادیکال
@Ali_Radikal3

برای بعضی پرینترها
اونایی که تحت شبکه پورت RAW دارن
با PHP بدون نیاز به هیچی میتونی مستقیم پرینت بگیری
// تنظیمات مربوط به IP و پورت پرینتر

    $printer_ip = 'xxx.xxx.xxx.xxx'; // آدرس IP پرینتر را وارد کنید
    $printer_port = 9100;           // پورت پیش‌فرض برای پروتکل RAW

    // اتصال به پرینتر با استفاده از socket
    $socket = fsockopen($printer_ip, $printer_port, $errno, $errstr, 2);  // 2 ثانیه زمان تاخیر
    if (!$socket) {
//        echo "خطا در اتصال به پرینتر: $errstr ($errno)<br>\n";
    } else {
        fwrite($socket, $message);  // ارسال پیام به پرینتر
        fclose($socket);            // بستن اتصال
//        echo "پیام با موفقیت به پرینتر ارسال شد.";
    }

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام