PDA

View Full Version : قالب Print و اصول استاندارد پرینت گرفتن صفحه هات با PHP



کامبیز اسدزاده
یک شنبه 28 خرداد 1391, 11:11 صبح
با سلام مدیران و اساتید محترم...

من این همیشه برام سوال بوده هرچقدر هم جستجو میکنم درست حسابی به جواب نمیرسم.

سوال من این هستش این CMS هایی که قابلیت پرینت گرفتن از هر صفحه رو میدن چطوری هست ؟ به عنوان مثال من چطوری میتونم یک حالت پرینت گرفتن مانند سایت BBC.COM رو که در هر خبری که منتشر میکنه یک نسخه قابل چاپ تولید میکنه که در این نسخه لوگوی سایت همراه با کپی رایت در زیرش چاپ میشه و متن داخلی خبر بسیار مرتب در صفحه برای چاپ ارسال میشه !؟

در ابتدا قالب برای این امکان چطور باید باشد و توابع این روش پرینت گرفتن چیست ؟

البته من همین امکان رو در حالت تبدیل PDF هم نیاز دارم ولی هیی از این موارد نمیدونم.

RAYMOON
یک شنبه 28 خرداد 1391, 16:27 عصر
با سلام دوست خوبم والله من همیشه برای پرینت از صفحات سایتم از این روش استفاده میکنم اینو از یک سی ام اس گرفتم کد جالبی هست
یه نمونه برات میزارم که کارش همینه مثلا یک صفحه خبری داری توی سایت که استایل و خیلی شیک است میخوای دکمه پرینت هم داشته باشه
من میام یک فانکشن تعریف میکنم توی برنامم و ای دی id خبر رو براش میفرستم و فانکشنم هم طبق همون ای دی یک صفحه برام تولید میکنه که ساده با لوگو و کپی رایت بالا و ادرس و لینک پرینت پابن صفحه و به صورت خودکار صفحه پرینت گرفتن ظاهر میشه
برات نمونه کدش رو میزارم امیدوارم بدردت بخوره ولی بازم میگم من ازش استفاده مینم خیلی خوب جواب میده
توی برنامه های من
نموه ساده






function PrintPage($id) {
global $site_logo, $nukeurl, $sitename, $datetime, $prefix, $db, $module_name,$ThemeSel,$align, $gtset;
if ($gtset == "1") {
nextGenTap(1,0,0);
}
$id = intval($id);
$row = $db->sql_fetchrow($db->sql_query("SELECT title, time, hometext, bodytext, topic, notes FROM ".$prefix."_stories WHERE id='$id'"));
$title = filter($row['title'], nohtml);
$time = $row['time'];
$hometext = codereplace(stripslashes($row['hometext']));
$bodytext = codereplace(stripslashes($row['bodytext']));
$topics = explode(",",$row['topic']);
foreach($topics as $topic){
$row2 = $db->sql_fetchrow($db->sql_query("SELECT topictext FROM ".$prefix."_topics WHERE topicid='$topic'"));
$topictext[] = filter($row2['topictext'], "nohtml");
}
$topictext = implode(",",$topictext);
$notes = filter($row['notes']);
$notes2 = str_replace(" ","_",$notes);
$notes2 = explode(":",$notes2);
foreach($notes2 as $tag){
$tags .= "<i><a href=\"modules.php?name=$module_name&file=tags&tags=$tag\">".str_replace("_"," ",$tag)."</a></i> ";
}
$datetime=nuketimes($time);
$printlink = newslink($id);
echo "<html>
<head><title>$sitename - $title</title>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>";
if (file_exists("themes/$ThemeSel/images/favicon.ico")) {
echo "<link REL=\"shortcut icon\" HREF=\"themes/$ThemeSel/images/favicon.ico\" TYPE=\"image/x-icon\">\n";
}
echo"
<style>
body {font-family:tahoma;font-size:11px}
td {font-family:tahoma;font-size:11px}
a {text-decoration:none;color:#0000ff;}
a:hover {text-decoration:none;color:#FF0000;}
</style>
<base href=\"$nukeurl\">
</head><body onload=\"window.print();\" bgcolor=\"#ffffff\" text=\"#000000\">
<table border=\"0\" align=\"center\" dir=\"$align\" width=\"700\" cellpadding=\"2\" cellspacing=\"1\">
<tr>
<td><img src=\"images/logo.gif\" border=\"0\" width=\"240\" alt=\"\"></td>
<td><b>"._PDATE."</b> $datetime<br /><b>"._PTOPIC."</b> $topictext</td>
</tr><tr><td style=\"border:2px dotted #CCCCCC;\" colspan=\"2\">
<p align=\"justify\" style=\"margin:10px;\">
<span style=\"font-weight:bold;color:#0000ff;font-size:13px;\">$title </span><br /><br />
$hometext<br /><br />
$bodytext</p><br />
$tags<br /><br />
</td></tr><tr><td align=\"center\" height=\"30\" bgcolor=\"#DDDDDD\" colspan=\"2\">
<div style=\"float:right\">"._COMESFROM." :<a href=\"$nukeurl\">$sitename</a> </div>
<div style=\"float:left\">"._THEURL." <a dir = ltr href=\"".newslink($id)."\">$nukeurl<span style=\"direction:ltr;text-align:left;\">$printlink</span></a> </div>
</td></tr></table>
</body>
</html>";
if ($gtset == "1") {
nextGenTap(0,1,0);
}
die();
}

RAYMOON
یک شنبه 28 خرداد 1391, 16:31 عصر
برای پی دی اف هم این نمونه رو ببین بدردت می خوره
من از اینم استفاده میکنم مشکلی نداره





function printpdf($id) {
global $site_logo, $nukeurl, $sitename, $prefix, $db, $module_name,$ThemeSel,$align, $gtset;
$id = intval($id);
$row = $db->sql_fetchrow($db->sql_query("SELECT title, time, hometext, bodytext, topic, notes FROM ".$prefix."_stories WHERE id='$id'"));
$aid = filter($row['aid'], nohtml);
$title = filter($row['title'], nohtml);
$time = $row['time'];
$hometext = codereplace($row['hometext']);
$bodytext = codereplace($row['bodytext']);
$topics = explode(",",$row['topic']);
foreach($topics as $topic){
$row2 = $db->sql_fetchrow($db->sql_query("SELECT topictext FROM ".$prefix."_topics WHERE topicid='$topic'"));
$topictext[] = filter($row2['topictext'], "nohtml");
}
$topictext = implode(",",$topictext);
$notes = filter($row['notes']);
$notes2 = str_replace(" ","_",$notes);
$notes2 = explode(":",$notes2);
foreach($notes2 as $tag){
$tags .= "<i><a href=\"modules.php?name=News&file=tags&tags=$tag\">".str_replace("_"," ",$tag)."</a></i> ";
}
$datetime=nuketimes($time);

require_once('includes/pdf/tcpdf.php');

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

$pdf->SetCreator($sitename);
$pdf->SetAuthor($aid);
$pdf->SetTitle($title);
$pdf->SetSubject($topictext);
$pdf->SetKeywords($notes);
// set default header data
$pdf->SetHeaderData('logo.png', 50, '', '');

// set header and footer fonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

//set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

//set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

//set image scale factor
//$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// set some language dependent data:
$lg = Array();
$lg['a_meta_charset'] = 'UTF-8';
$lg['a_meta_dir'] = 'rtl';
$lg['a_meta_language'] = 'fa';
$lg['w_page'] = 'page';

//set some language-dependent strings
$pdf->setLanguageArray($lg);

// ---------------------------------------------------------

// set font
$pdf->SetFont('dejavusans', '', 10);

// add a page
$pdf->AddPage();

$body = "<b>$title</b><br /><br /><small>$datetime</small><br /><small>"._TOPIC." : $topictext</small><br />$hometext<br />$bodytext<br />$tags";
$pdf->WriteHTML($body, true, 0, true, 0);
$pdf->Ln();
$pdflink = newslink($id);
$note = ""._COMESFROM." :<a href=\"$nukeurl\"> $sitename</a> <br />"._THEURL." <a dir = ltr href=\"".newslink($id)."\">$nukeurl/<span style=\"direction:ltr;text-align:left;\">$pdflink</span></a>";
$pdf->WriteHTML($note, true, 0, true, 0);
$pdf->Output();
die();
//================================================== ==========+
// END OF FILE
//================================================== ==========+
}

کامبیز اسدزاده
یک شنبه 28 خرداد 1391, 20:54 عصر
دست گلت درد نکنه تستش میکنم ببینم تا چه حد کارم راه میفته ممنون :)

asf_pack
پنج شنبه 11 اردیبهشت 1393, 08:17 صبح
سلام دوست عزیز خیلی کد مفیدی بود به کاره من اومد ، اگه بازم ازین نمونه کد سراغ داری بزار