PDA

View Full Version : چاپ صفحه بر روی کاغذ در PHP



mehrvarzan
دوشنبه 01 اسفند 1390, 11:47 صبح
سلام
کی گشتم ولی متاسفانه جواب مناسبی نگرفتم.

چطور میشه یه صفحه رو پرینت کرد که قالب پرینت رو روی برگه A4 بزنه و از خود سایت بگیره.
مثلا جای عکس ها تغییر نکنه سایز متن ها تغییر نکنه.
متاسفانه من روی هر مرورگر میزنم یه جور میزنه.
اندازه DIV که پرینت میشه چند بزارم که روی هر ریزولوشنی ثابت باشه و تاثیری برای چاپ نداشته باشه.
تشکر

buggen
دوشنبه 01 اسفند 1390, 12:42 عصر
سلام

CSS برای پرینت Media Type داره فک کنم به کمک اون مشکلتون حل بشه

mehrvarzan
دوشنبه 01 اسفند 1390, 13:47 عصر
سلام

CSS برای پرینت Media Type داره فک کنم به کمک اون مشکلتون حل بشه

اگه نمونه ای نشون بدید ممنون میشم :)

MMSHFE
دوشنبه 01 اسفند 1390, 15:13 عصر
دوست عزیز، یک راه هست که خیلی دقیق و اصولی جواب میده. من خودم باهاش تابحال برای چندین سایت Report درست کردم. نمونه کد زیر بهتر از هرگونه توضیح هست:


<!-- Copyright محمد مصطفی شهرکی @ http://www.ncis.ir -->
<!doctype html>
<html dir="rtl">
<head>
<title><?php echo TITLE; ?></title>
<meta charset="utf-8"/>
<link href="favicon.ico" rel="shortcut icon" type="image/ico"/>
<style type="text/css">
* {
font-family: Tahoma;
font-size: 8pt;
}
table {
border: solid 0.25mm #000000;
width: 170mm;
}
td, th {
border: solid 0.25mm #000000;
height: 7.5mm;
}
</style>
</head>
<body>
<?php
connect();
$id = mysql_real_escape_string($_GET['stid']);
$student = query("SELECT * FROM `student` WHERE (`id`='{$id}' AND `deleted`='0') ORDER BY `id` LIMIT 1");
if($student && mysql_num_rows($student) > 0) {
$student = mysql_fetch_assoc($student);
$branch = query("SELECT * FROM `branch` WHERE (`id`='{$student['bid']}' AND `deleted`='0') ORDER BY `id` LIMIT 1");
if($branch && mysql_num_rows($branch) > 0) {
$branch = mysql_fetch_assoc($branch);
$grades = query("SELECT * FROM `grade` WHERE (`sid`='{$id}' AND `deleted`='0') ORDER BY `term`,`lid`");
if($grades && mysql_num_rows($grades) > 0) {
echo '<table cellpadding="5px" cellspacing="0px">'.PHP_EOL;
echo '<tr align="center" valign="middle"><td colspan="2" rowspan="3"><img src="'.URL.'/logo.png" style="height: 18mm; width: 9mm;"/></td><th colspan="4">بسمه تعالی</th></tr>'.PHP_EOL;
echo '<tr align="center" valign="middle"><th colspan="4">مرکز آموزش عالی ***</th></tr>'.PHP_EOL;
echo '<tr align="center" valign="middle"><th colspan="4">ریز نمرات '.$student['section'].'</th></tr>'.PHP_EOL;
echo '<tr align="center" valign="middle"><th style="width: 30mm;">شماره دانشجوئی</th><td style="width: 20mm;">'.$student['id'].'</td><th style="width: 30mm;">شماره شناسنامه</th><td style="width: 20mm;">'.$student['idno'].'</td><td colspan="2">&nbsp;</td></tr>'.PHP_EOL;
echo '<tr align="center" valign="middle"><th>نام</th><td>'.$student['name'].'</td><th>تاریخ تولد</th><td>'.$student['bdate'].'</td><th style="width: 40mm;">محل صدور</th><td style="width: 30mm;">'.$student['issue'].'</td></tr>'.PHP_EOL;
echo '<tr align="center" valign="middle"><th>نام خانوادگی</th><td>'.$student['family'].'</td><th colspan="2">رشته - گرایش</th><td colspan="2">'.$branch['name'].'</td></tr>'.PHP_EOL;
echo '<tr align="center" valign="middle"><th>نام پدر</th><td>'.$student['father'].'</td><th colspan="2">تاریخ فراغت از تحصیل</th><td colspan="2">'.$student['gdate'].'</td></tr>'.PHP_EOL;
echo '<tr align="center" valign="middle"><th>ردیف</th><th>نام درس</th><th>نظری</th><th>عملی</th><th colspan="2">نمره</th></tr>'.PHP_EOL;
$id = 0;
while($grade = mysql_fetch_assoc($grades)) {
$lesson = query("SELECT * FROM `lesson` WHERE (`id`='{$grade['lid']}' AND `deleted`='0') ORDER BY `id` LIMIT 1");
if($lesson && mysql_num_rows($lesson) > 0) {
$lesson = mysql_fetch_assoc($lesson);
$id++;
echo '<tr align="center" valign="middle"><td>'.$id.'</td><td>'.$lesson['name'].'</td><td>'.$lesson['theoric'].'</td><td>'.$lesson['practical'].'</td><td colspan="2">'.$grade['grade'].'</td></tr>'.PHP_EOL;
}
}
echo '<tr align="center" valign="middle"><th colspan="3">***</th><th colspan="3">***</th></tr>'.PHP_EOL;
echo '<tr align="center" valign="middle"><th colspan="3">رئیس مرکز</th><th colspan="3">مدیر آموزشی</th></tr>'.PHP_EOL;
echo '</table>'.PHP_EOL;
}
}
}
?>
</body>
</html>
کد فوق، بخشی از سیستم گزارش ریز نمرات دانشجویان هست که برای یک دانشگاه دارم طراحی میکنم. حالا خیلی کدهای PHP اون مهم نیست که چطور اطلاعات رو استخراج میکنه. نکته مهم نحوه استفاده از CSS و خاصیت style برای تعیین ابعاد عناصر برحسب میلیمتر هست. موفق باشید.
موفق باشید.

mehrvarzan
دوشنبه 01 اسفند 1390, 16:27 عصر
تشکر دوست عزیز.
من یه نمونه زدم ولی مشکلم اینه که روی هر مرورگر یه جور میزنه. یه مرورگر فونت بزرگتر میزنه یکی کوچیکتر
مشکل بعدی اینه که هر روشی میرم نمیشه که تاریخ ٌ، صفحه و آدرس وب رو از پرینت حذف کرد.

یه مشکل دیگه اینه که مثلا من اندازه متن رو میدم 12 وقتی پرینت میشه با 16 یا 20 پرینت میکنه.

من برای چاپ صفحه توی جاوا اسکریپت این کد ها رو به ترتیب اجرا میکنم

var DocumentContainer = document.getElementById('report_main_table');
var strHtml = "<html>\n<head>\n <link rel=\"stylesheet\" type=\"text/css\" href=\"temp/css/style.css\">\n</head><body><div style=\"testStyle\">\n"
+ DocumentContainer.innerHTML + "\n</div>\n</body>\n</html>";

var WindowObject = window.open('', 'PrintWindow', 'width=750,height=650,top=50,left=50,toolbars=no,s crollbars=yes,status=no,resizable=yes');
WindowObject.document.writeln(strHtml);
WindowObject.document.close();
WindowObject.focus();
WindowObject.print();
WindowObject.close();
$('.print').focus();
$('.print').print();

shahriyar3
دوشنبه 01 اسفند 1390, 18:07 عصر
http://www.alistapart.com/articles/goingtoprint/