کار با Printer

bahy_my

Active Member
سلام
تو این آموزش قصد داریم توسط php یه رشته رو پرینت کنیم.
برای این کار باید :
1) قصد انجام این کار رو داشت :دی
2) پرینتر مورد نظر رو باز کرد
3) متن رو نوشت
4) متغیری که پرینتر رو باز کرده بست

کد :

PHP:
$printer=printer_open([PRINTER NAME AS STRING]); 
printer_write($printer, $text); 
printer_close($printer);


اگه که به تابع printer_open هیچ مقداری داده نشد ( به صورت رشته ) این تابع پرینتر پیشفرض رو برای استفاده باز می کنه.
برای بستن فعالیت پرینت (abort) هم از تابع زیر استفاده می کنیم :
PHP:
printer_abort($printer);
منبع : مهرآرین - لینک تاپیک
 
آخرین ویرایش:

jhoseini

Member
این دستور واقعاً پرینتر کلاینت رو کنترل میکنه؟ :shock:
وقتی معادلش توی جاوا اسکریپت (سمت کاربر) هست، چرا همچین تابعی رو پاده سازی کردن برای پی اچ پی؟
 

tabib_m

Member
ممنون.
چند تا سؤال:
1- متن مورد نظر، کجای صفحه ی پرینت نوشته میشه؟
2- آیا متن ورودی، میتونه به صورت html باشه؟ یا به عبارت دیگه، آیا پرینتر، عبارات html رو تفسیر میکنه؟ (که بعید میدونم این کار رو بکنه!)
3- اگر تفسیر میکنه، آیا خود پرینتر موتوری برای تفسیر کد ها داره؟ یا از موتور مرورگر نصب شده روی سیستم استفاده میکنه؟
4- چجوری میشه مطالبی که تا به حال وارد پرینتر شده رو به دست آورد؟ (اصلا امکان پذیره یا نه؟)
5- آیا این دستورات، مربوط میشن به پرینتر کلاینت؟ یا سرور؟
6- در صورتی که مربوط میشه به کلاینت، آیا این کار نیاز به وجود دسترسی خاصی داره؟ یا نه؟

باز هم ممنون

موفق باشید
 

bahy_my

Active Member
وقتی معادلش توی جاوا اسکریپت (سمت کاربر) هست، چرا همچین تابعی رو پاده سازی کردن برای پی اچ پی؟
برو از خودشون بپرس :دی... شوخی کردم.. اه قرار باشه php چنین تابع ساده ای رو نداشته باشه که php نیست.

1) در مورد نظمش هیچ چیز نمی تونم بگم !!!... فکر نمی کنم مفسر داشته باشه. ینی فکر می کنم توی اول صفحه پرینت کنه و باقی سفید باشه. اگه پرنتر داشتم امتحان می کردم جوابو می گفتم.
2) بله موافقم فکر نکنم مفسر داشته باشه.
3) -
4) منو توی مقاله ای (eng) که خوندم چیزی ندیدم اما اگه پیدا کردم حتماً می دم. اگرم باشه هموناییه که از توی همین php پرینت شدن.
5) کلاینت. و نیاز به دسترسی خاصی هم نداره... فقط کافیه پرینتر آماده کار باشه !!
در مواردی که گفتین در مورد تفسیر و اینا.
فکر می کنم همون موردی باشه که توی ارسال میل هم وجود داره.
ینی من الان نمی دونم چی کار کنم که مثلاً میل رو با فونت آبی بفرسته.
نمی دونم به چی مر بوط میشه...
احتمالاً دو تاشون از یک مقوله اند :دی.
این چیزایی بود که من می دونستم و باز هم میگم مثل گذشته من منبع خاصی برای حرفام ندارم.
متشکر از استقبالتنو.
*******************
بازم در ضمن :) دی) اگه همون جا هم می پرسیدین جواب می دادم !!!
*******************
همتون رو دوست دارم..
HotHost.ir جان از شما هم تشکر میکنم. ;)
تا بعد خداحافظ
 
آخرین ویرایش:

jhoseini

Member
ینی من الان نمی دونم چی کار کنم که مثلاً میل رو با فونت آبی بفرسته.
این به header ایمیل بستگی داره
PHP:
$mail_head="";
$mail_head .= "MIME-Version: 1.0\r\n";
$mail_head .= "Content-type: text/html; charset = utf-8 \r\n";
$mail_head .= "From: eMagazine <".$mail_from.">\r\n";
$mail_head .= "To: <".$mail_addr.">\r\n";
$mail_head .= "X-Priority: 1\r\n";
$mail_head .= "X-MSMail-Priority: High\r\n";
$mail_head .= "X-Mailer: My Server";
با این header محتوای ایمیلتون html در نظر گرفته میشه و ..
البته ربطی به این تاپیک نداره، اما نوشتم دیگه، ببخشید بابا،...
dash2.gif


در مورد تابعی که معرفی کردید هم..
اینجا تست کردم
با این محتوا:
PHP:
<?php
$text = "
<h1>Test for h1</hr>
<h4> this is test for h4</h4>
<div style='color:red'>this is test for style</div>";
$handle = printer_open("HP Deskjet D1360");
printer_write($handle, $text);  
printer_close($handle);  
?>
خروجی:
کد:
Fatal error: Call to undefined function: printer_open() in /home/iranphp/public_html/DESK/print.php on line 9

و اینکه، فکر میکنم اینجا میگن این تابع رو سرور باید کار کنه، چون ...
The printer name. If no parameter was given it tries to open a connection to the default printer (if not specified in php.ini as printer.default_printer, PHP tries to detect it).



بازم در ضمن :) دی) اگه همون جا هم می پرسیدین جواب می دادم !!!
کجا؟!
164.gif


بازم شرمنده از بابت توضیحی که راجه به mail.header دادم اون بالا
chase.gif
 

siavashmusic

Active Member
به طرز بسیار بدی از لینکی که گذاشتید Server not found
میشه دید !!!!
4 پست ارسال شد ما که نفهمیدیم اصلا مبنا چی هست شما اگه گرفتی یه توضیحی برای ما بدید
 

tabib_m

Member
بازم در ضمن :) دی) اگه همون جا هم می پرسیدین جواب می دادم !!!
همون طور که سیاوش خان گفتن، server not found!


در مورد تابعی که معرفی کردید هم..
اینجا تست کردم
با این محتوا:
کد PHP:
<?php
$text = "
<h1>Test for h1</hr>
<h4> this is test for h4</h4>
<div style='color:red'>this is test for style</div>";
$handle = printer_open("HP Deskjet D1360");
printer_write($handle, $text);
printer_close($handle);
?>
خروجی:
کد:

Fatal error: Call to undefined function: printer_open() in /home/iranphp/public_html/DESK/print.php on line 9
این نشون دهنده ی اینه که extension مربوطه ، نصب و یا فعال نشده.

The printer name. If no parameter was given it tries to open a connection to the default printer (if not specified in php.ini as printer.default_printer, PHP tries to detect it
این هم میگه که در صورتی که ورودی ای برای تابع مورد نظر (printer_open) وارد نشه، تابع به صورت اتوماتیک ، میره سراغ چاپگ پیش فرض دستگاه.


و اما در کل، این صفحه کمک خیلی خوبی میتونه بکنه... :)

توابع به درد بخوری داره، اما خوب ، تا آدم بخوات یه چیز مرتب و درست و حسابی تحویل بده، جونش بالا میات :دی

موفق باشید.
 

jhoseini

Member
این نشون دهنده ی اینه که extension مربوطه ، نصب و یا فعال نشده.
کدوم dll رو باید فعال کنم؟ من php_printer.dll رو تو dll ها پیدا نمیکنم
164.gif


این هم میگه که در صورتی که ورودی ای برای تابع مورد نظر (printer_open) وارد نشه، تابع به صورت اتوماتیک ، میره سراغ چاپگ پیش فرض دستگاه.
میدونم فارسیش چی میشه
271.gif
، منظورم اینه که منطقی نیست چاپگر پبشفرض کلاینت تو php.ini ست بشه

اصلاً من ضرورت وجود همچین تابعی رو درک نمیکنم، مگر اینکه تو سرور های محلی بخایم به واسطه php یه printer رو share کنیم، یا چیزی شبیه به این :neutral:


یه توضیحی بدید که این کد داره چیکار میکنه
PHP:
function getPrinter($SharedPrinterName) {
    global $REMOTE_ADDR;
    $host  =  getHostByAddr($REMOTE_ADDR); // اینجا داره آدرس وبسایت مربوط به ای پی بازدید کننده رو پیدا میکنه؟ یعنی چی؟
    return "\\\\".$host."\\".$SharedPrinterName;
}
$handle  =  printer_open(getPrinter("Eltron"));
 
آخرین ویرایش:

tabib_m

Member
کدوم dll رو باید فعال کنم؟ من php_printer.dll رو تو dll ها پیدا نمیکنم
همین php_printer.dll، اگر نیست، باید نصبش کنی...

میدونم فارسیش چی میشه، منظورم اینه که منطقی نیست چاپگر پبشفرض کلاینت تو php.ini ست بشه
درسته...
چیزی که نوشته این رو میگه که "اگر توی php.ini ، چاپگر پیشفرض تعیین نشده باشه، به صورت اتوماتیک این کار انجام میشه!"
یعنی احتمالا: ما صرفا میتونیم فقط یک اسم به php به عنوان printer به صورت پیشفرض معرفی کنیم. حتی اگر چاپگر مذکور، به صورت چاپگر پیشفرض در دستگاه طرف انتخاب نشده باشه! که در نهایت این مسئله منافاتی با کلاینت بودن چاپگر نداره... البته صرفا یک جور برداشته.

البته
با دقتی که توی کامنت های راهنمای php کردم، متوجه شدم که printer یا باید روی خود سرور باشه، یا این که توسط کلاینت، share شده باشه... که باز هم درایورهای چاپگر باید روی سرور نصب شده باشن :) ، یعنی فوقش میشه از این دستورات توی شبکه های محلی استفاده کرد :)
( حیف که سواد ندارم :( )


یه توضیحی بدید که این کد داره چیکار میکنه
خوب طبیعتا وقتی شما میخوای یک پرینتر که توی شبکه share شده رو فراخوانی کنی، اینجوری فراخوانی میکنی:
کد:
\\computerName\printerName

اگر یک نفر میخوات از یک برنامه ی php که توی یک شبکه نصب هست استفاده کنه، و به وسیله ی اون برنامه میخوات از پرینتری که روی دستگاه خودش نصب هست، استفاده کنه، طبیعتا لازمه ی معرفی چاپگر مربوطه این هست که اول اسم کامپیوتر طرف، و دنباله ی اون، اسم چاپگر نوشته بشه.
خوب این کد داره همون کار رو میکنه دیگه! :)

موفق باشید.
 

bahy_my

Active Member
:neutral:
در مورد هاستم شرمنده ( ... من دیگه نمی خوام ناشکری کنم اما.... --- -- --- شانس ...اااااااه )
1) ممنون بابت هدر... اونم خیلی خیلی ممنون !
2)
این نشون دهنده ی اینه که extension مربوطه ، نصب و یا فعال نشده.
این هم میگه که در صورتی که ورودی ای برای تابع مورد نظر (printer_open) وارد نشه، تابع به صورت اتوماتیک ، میره سراغ چاپگ پیش فرض دستگاه.
( ممنون !)

3) در مورد ضرورت وجود این تابع .... نمی دونم چی بگم !!!!!!!!!!!
از راهنماییها منم ممنونم. نبودم که قبل جواب بدم. اگه چیزی ناکامل مونده شرمنده... من الان به طور کامل در حالت هنگم . دارم می زنم تو سر خودم با این....
من فعلاً برم.
:sad:
راستی ... هر کی پرینتر داره یه تست کنه همه ی ابهامات رو رفع کنه :دی
:sad:
خدافظ
**********************
بازم شرمنده : 30 ثاینه پیش زدم سایتم نیومد.. الان اومد.... احتمالاً به دلیل تغییرات سروره.. چون من قبلاً هم یه سایت رو این سرور داشتم مشکلی نبوده.. الان شاید داره یه تغییراتی میده... بازم ببخشید... ربطی به موضوع تایپک نداشت اما چون گفته شد منم گفتم....
بازم خیلی خیلی شرمنده.
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا