PDA

View Full Version : چاپ



mostafa612003
یک شنبه 22 مهر 1386, 20:41 عصر
چگونه می توانیم در javascript دستور چاپ را بنویسیم؟

خیلی متشکرم

mrrajabi
دوشنبه 23 مهر 1386, 22:08 عصر
document.write('متن مورد نظر');

neopersia
دوشنبه 23 مهر 1386, 23:44 عصر
فکر میکنم منظور دوستمون این بود:

window.print()

mostafa612003
دوشنبه 07 آبان 1386, 11:09 صبح
خیلی متشکرم
خوب اگر من یک دکمه در صفحه ام بگذارم تا با کلیک بر روی آن صفحه چاپ شود،آن دکمه هم چاپ میشود
ولی من نمی خواهم که دکمه چاپ شود آیا راهی برای این کار وجود دارد؟
خیلی متشکرم

mrrajabi
دوشنبه 07 آبان 1386, 13:38 عصر
خوب اگر من یک دکمه در صفحه ام بگذارم تا با کلیک بر روی آن صفحه چاپ شود،آن دکمه هم چاپ میشود
ولی من نمی خواهم که دکمه چاپ شود آیا راهی برای این کار وجود دارد؟
یعنی چه؟منظورتون چیه؟
شما وقتی روی صفحه دکمه بذارین خب چاپ میشه دیگه.کاری که میخواهین بکنیدو دقیق بگین.

Folaani
دوشنبه 07 آبان 1386, 14:05 عصر
قبلا این سوال مطرح شده بود درجایی.
با روشهای مختلفی میشه قسمتهایی رو که نمیخوایم چاپ بشن، موقع چاپ مستثنی کنیم.
شما دقیقا چی میخواید؟ فقط همون دکمه مشکل داره؟ در اینصورت میتونید بعد از کلیک با جاوااسکریپت محوش کنید!!

mostafa612003
دوشنبه 07 آبان 1386, 18:46 عصر
من یک سری اطلاعات در یک صفحه دارم پایین این اطلاعات یک دکمه گذاشتم که با کلیک بر روی آن فقط اطلاعات صفحه پرینت شوند اما دکمه پرینت می شود.
حالا چه جوری می تونم که دکمه را محو کنم؟
متشکرم

Folaani
سه شنبه 08 آبان 1386, 19:11 عصر
ببین عزیز جان من پرینتر ندارم اما این کد رو با Print to file تست کردم. ضمنا تست فقط در فایرفاکس (ورژن ۱.۵) انجام شده:


<html>
<head>
<title>Print test</title>
<script>
function prn() {
document.getElementById('prn_btn').style.visibilit y='hidden';
print();
setTimeout("document.getElementById('prn_btn').style.visibilit y='visible'", 3000);
}
</script>
</head>
<body bgcolor="#DDDDDF">
<h1>Contents</h1>
<button id="prn_btn" style="visibility: visible;" onClick="prn();">Print this page without this button</button>
</body>
</html>

کاری که انجام میشه اینه: وقتی روی دکمه کلیک میکنی تابع prn اجرا میشه. در این تابع ابتدا دکمه محو میشه، بعد فرمان چاپ صفحه صادر میشه، بعد یک دستور تایمر صادر میشه که باعث میشه بعد از چاپ شدن صفحه دکمه مجددا پدیدار بشه (تا مثلا برای چاپهای احتمالی بعدی آماده باشه).
البته این روش زیاد اصولی نیست ولی بهرحال کار میکنه. علت اون دستور تایمر آخر هم فقط این هست که دکمه دوباره برگرده سرجاش و کاربر بتونه ازش استفاده کنه؛ وگرنه اگر دردسر ساز باشه یا واقعا بهش نیازی نباشه میشه برداشتش تا باگ و ناسازگاری احتمالی بوجود نیاد در موارد خاص.
اما اگر در اینترنت اکسپلورر هم این صفحه رو تست کردی و خوب کار کرد مشکل چندانی نیست. فقط باید دید صفحات خیلی حجیم و پیچیده (که پردازششون برای چاپ زمان زیادی ممکنه ببره) مشکلی با مقدار تایمر (در حال حاضر ۳۰۰۰ میلی ثانیه - ۳ ثانیه) نداشته باشن، و اگر دارن زمان رو میشه زیاد کرد. بهرحال این کد رو حتما با یک چاپگر واقعی تست کن و یک صفحهء عکس دار و پیچیده رو باهاش تست کن تا مطمئن تر بشی.
توجه کن که روی یک سیستم قوی ممکنه این زمان رو بشه خیلی کمتر هم کرد، ولی لزوما این زمان برای یه سیستم ضعیف (مثل پنیتوم تری بنده) کافی نیست.
ضمنا میشه با یک راه جایگزین دیگه هم دکمه رو برگردوند. فرضا وقتی روی صفحه کلیک بشه دکمه دوباره مریی بشه. اما خب راه چندان جالبی بنظر نمیاد، چون لابد یه جایی هم باید این نکته رو برای کاربر نوشت دیگه!!
نکتهء بعدی اینکه اگر بخوای دکمه به طور کلی از ساختار صفحه حذف بشه میتونی بجای ویژگی استایل visibility از ویژگی استایل display استفاده کنی (مقدارش میتونه برای حذف دکمه none بشه و برای برگرداندن مقدار خالی). البته فکر نمیکنم نیازی بهش پیش بیاد؛ مگر اینکه وجود جای خالی دکمه هم ساختار چاپ مورد نظر شما رو بهم بزنه.

Folaani
سه شنبه 08 آبان 1386, 19:26 عصر
راستی یک راه دیگه فکر میکنم استفاده از استایل مخصوص چاپ هست. درواقع حالا که متوجه شدیم این روش کمی پیچیده و غیراصولی از آب درمیاد شاید بهتر باشه از روش استایل استفاده کنی.
توضیح اینکه در روش استایل یک فایل استایل مخصوص چاپ صفحه داریم که برای چاپ از اون استایل استفاده میشه. به این روش میشه در اون استایل دکمه رو بصورت محو شده تعیین کرد.
اما چون بقیهء ساختار نمایشی (بقیهء اجزاء صفحه) هم اگر استایل داشته باشن باید در این استایل هم احتمالا تکرار بشن، بنده فکر کردم شاید استفاده از جاوااسکریپت رو ترجیح بدید.
تازه جاوااسکریپت یک اشکال دیگه هم داره و اون اینکه اگر کاربر بدون استفاده از این دکمه صفحه رو چاپ کنه، دکمه چاپ میشه!
بنده روش تعیین استایل رو یادم نیست و قبلا در یک فروم دیگر مطرح شده بود و دیده بودم، وگرنه برات میذاشتم. یه کم بگردی احتمالا سریع پیدا میکنی.

Folaani
شنبه 12 آبان 1386, 21:57 عصر
اینهم روش استایل CSS
ساده و اصولی!



<html>
<head>
<title>Print test</title>
<style type="text/css">
@media print { #no_print { visibility: hidden; } }
</style>
</head>
<body bgcolor="#808080">
<h1>Contents</h1>
<button id="no_print" onClick="print();">Print this page without this button</button>
</body>
</html>



از قضا بنده در رفرنس سی اس اس ۲.۱ که بتازگی مطالعهء آنرا شروع کردم به این امکان برخورد کردم و آنرا تست کردم. خب طبیعی است که بیاد این تاپیک افتادم!!
البته شاید (یا احتمال زیاد!) هم از بحث این تاپیک بیاد مطالعهء رفرنس سی اس اس افتادم که مدتها بود قصد آنرا داشتم.
بهرحال؛ موفق باشید!