محمد رضا
4 سال پیش توسط محمد رضا مطرح شد
10 پاسخ

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

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


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش آپدیت شد
1

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


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 4 سال پیش مطرح شد
0

توی گفتو گوی زیر لینکی وجو داره که مثل شما گفته شده ب خاطر امنیتش ممکن نیست ولی بحثی شده راجب استفاده از پرت و 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 4 سال پیش مطرح شد
0

سلام
@salar.mohammad2013

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

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


جلال ملک پور دهنوی
تخصص : بیگینر
@malekpoor68 3 سال پیش آپدیت شد
0

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


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 3 سال پیش مطرح شد
0

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


Arseni44
تخصص : برنامه نویس
@arseni44 1 سال پیش مطرح شد
0

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


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 1 سال پیش مطرح شد
1

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


Arseni44
تخصص : برنامه نویس
@arseni44 1 سال پیش آپدیت شد
0

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


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 1 سال پیش مطرح شد
0

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


علی رادیکال
@Ali_Radikal3 1 ماه پیش مطرح شد
1

برای بعضی پرینترها
اونایی که تحت شبکه پورت 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 "پیام با موفقیت به پرینتر ارسال شد.";
    }

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

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