PHP生成便于打印的网页

很多新闻和信息站点都提供了一种生成便于打印的网页的方法,所产生的页面的排版布局更有利于打印机的打印输出,这种方法方便了我们从网页上直接打印我们所需的内容,而不必为格式不规整伤脑筋,或者粘贴到文本编辑器中重新排版。然而,我却没看到有多少网站详细解释这些是如何实现的,在这里我提供一小段代码——用PHP来实现生成便于打印的网页并不是像想象的那么难,希望对大家有帮助。

要生成便于打印的网页,需要我们做哪些工作呢?这主要取决于你的网站特点,和你想要生成的版式特征,不过有一些基本处理需要完成:

1、    页宽——生成页面的宽度必须限制,要打印A4的纸,大约网页要在630像素宽。
2、    页面背景色——为了美观,很多网页使用了不同的背景色和背景图片,但是作为要打印的网页,最合适效果的还是白底黑字为好。
3、    广告条——移除页面上的广告
4、    表格的背景色——我们经常在表格中用颜色来强调信息和标题,这些也必须移除。
5、    链接——页面中的超链接也必须改变以使URL可见,例如:<a href=http://www.gbdirect.co.uk/ >GBDirect</a>应显示为GBDirect (http://www.gbdirect.co.uk/)  
6、    菜单——菜单是最难被禁止的,然而如果你的页面是使用模板来构建的话,那么最简单的方法是换用便于打印的没有菜单的模板。

这些生成便于打印页面的所有方法,都是非常简单的,需要实现的时候你可以被下面的代码放到网页中:
<?
//从环境变量中得到文件的相对路径
$page=substr($SCRIPT_NAME,1);

// 显示一个图标并连接到Printer Friendly Pages
// 便于打印页面的生成程序pfp.php
?>
<a href="pfp.php?page=<?=$page?>">;
  <img src="printer.gif" width="36" height="36" border="0"
   alt="Click here to produce a printer friendly page">

<font face="arial, helvetica" size="2">
    Printer Friendly Version
  </font>
</a>    
把当前页面的名称传递到pfp.php程序中,这个程序使用PHP的“file”函数把页面作为一个字符串来处理。当这个页面被载入的时候,程序就可以增加、改写或删除HTML片段。

<?
ereg('^.*/',$SCRIPT_FILENAME,$tmp);
$page_path = substr($tmp[0],0,-1);
?>

<html>

<head>
  <base href="http://<? echo $HTTP_HOST ?>/">
  <meta name="robots" content="no index, no follow">
  <title>Printer Friendly Page</title>
</head>

<body bgcolor="white">

<font face="Arial,Helvetica">

<table border="0" cellpadding="5" cellspacing="0" width="630" >

<tr>
    <td valign="top">
      <?
        // check if the filename for the page exists
        if (!file_exists("$page.inc"))
        {
           echo "<strong>Error - The page <?=$page?>".
                "does not exist on this site.</strong>";
        }
        else
        {
          // 得到页面的内容并把它放到一个字符串中
          $fcontents = join('', file("$page.inc"));

// 忽略颜色属性,转换以'ignore'替代'color'

$fcontents = ereg_replace('color','ignore',$fcontents);

// 去除超链接中的 “_blank”
          $fcontents = ereg_replace('target=\"_blank\"','',$fcontents);

// 替换</a>标记
          $fcontents = ereg_replace('</a>','',$fcontents);

// 显示URL的绝对地址
          $fcontents = ereg_replace('<a[^h]*href="(http://[^"]*)"[^>]*>;([^]*)',
          '<strong>\\2</strong><em>(\\1)</em>',$fcontents);

// 把相对链接转为绝对链接
          $fcontents = ereg_replace(
              '<a[^h]*href="([^"]*)"[^>]*>([^]*)',
       "<strong>\\2</strong><em>(http://$HTTP_HOST/\\1)</em>";,
             $fcontents);

// 背景颜色改回白色
          $fcontents = ereg_replace('<body bgignore','<body bgcolor',  $fcontents);

// if any markers left restore link end element
         $fcontents = ereg_replace('','</a>',$fcontents);

// 输出页面
         echo $fcontents;
       }
      ?>
    </td>
  </tr>

<tr>
    <td align="center"><hr width="90%"></td>
  </tr>

<tr>
    <td align="center">
      <? include("$page_path/footer.inc"); ?>
    </td>
  </tr>

</table>

</font>

</body>
</html>
这样便于打印的页面就生成了,希望对大家能有帮助。

(译自PHPBulider/Mark Spink)

(0)

相关推荐

  • cakephp打印sql语句的方法

    本文实例讲述了cakephp打印sql语句的方法.分享给大家供大家参考.具体实现方法如下: 将以下语句复制到你的代码中,可以打印出在这之前所有的sql语句: $sources = ConnectionManager::sourceList(); if (!isset($logs)): $logs = array(); foreach ($sources as $source): $db =& ConnectionManager::getDataSource($source); if (!$db-

  • php+mysqli实现将数据库中一张表信息打印到表格里的方法

    本文实例讲述了php+mysqli实现将数据库中一张表信息(包括表头)打印到表格里的方法.分享给大家供大家参考.具体如下: 这段代码将就看吧.需要学习基础知识.代码如下: 复制代码 代码如下: <?php $mysqli = new MySQLi("localhost","root","123456","liuyan"); if(!$mysqli){  die($mysqli->error); } function

  • PHP打印输出函数汇总

    本篇文章一直来学习PHP中所有用于输出信息的函数,分类比较来学习其相同点与不同点,掌握日常开发中必备的技巧. 开发就一定需要调试代码,而PHP调试代码不能像iOS那种编译器语言可以通过Xcode这样的开发软件来单步调试,因此开发PHP的人员通常会通过输出函数打印相关提示信息来调试代码. PHP中常用的打印输出的函数一步步讲解 echo echo函数可以同时输出多个字符串,带多个参数,但并不要求使用圆括号,也没有返回值.但是,如果带上圆括号也没有问题的,因此函数本就需要圆括号的: echo '标哥

  • 用在PHP里的JS打印函数

    auto=1立即PRINT,否则timeOut毫秒后PRINT,如printPage(0,5000): function printPage($auto=1,$timeOut=10000) { if ($auto == 1) { echo " < SCRIPT LANGUAGE="JavaScript" > < !-- Begin if (window.print) { window.print(); } else { alert('No printer d

  • php打印输出棋盘的实现方法

    本文实例讲述了php打印输出棋盘的两种实现方法.分享给大家供大家参考.具体实现方法如下: 例子1,代码如下: 复制代码 代码如下: <?php /**  * 隔行隔列换色  * string fun_table(int $rows=9,int $cols=9)  * $rows 表示行数 必须为整数 并且必须在1-20之间  * $cols 表示列数 必须为整数 并且必须在1-20之间  */ function fun_table($rows=9,$cols=9){  if ($rows<1

  • php打印一个边长为N的实心和空心菱型的方法

    本文实例讲述了php打印一个边长为N的实心和空心菱型的方法.分享给大家供大家参考.具体分析如下: 实心菱型计算方法: $n:边长 $i:当前行,0开始 $rows:总行数 上部 前面空格数=$n-$i-1 字符数=$i*2+1 下部 前面空格数=$i-$n+1 字符数=($rows-$i)*2-1 使用 str_pad 可以减少for/while等循环 复制代码 代码如下: /**  * 打印实心菱型  * @param  int    $n 边长,默认5  * @param  String $

  • PHP遍历并打印指定目录下所有文件实例

    复制代码 代码如下: <?php//功能:遍历并打印指定目录下所有文件 function scan_dir($dir_name,$dir_flag=1) { static $FILE_COUNT=1;                //记录文件数目 初值为1 目录名称不记 $FILE_COUNT--;                       //每调用一次scan_dir()函数自减1 @$dir_handle=opendir($dir_name);     //抑制错误信息显示  便于自定

  • PHP云打印类完整示例

    本文实例讲述了PHP云打印类.分享给大家供大家参考,具体如下: 一个项目需求要几百台电脑都有打印功能,本来是想用网络打印机的,后来发现没有网络打印机,就自己动手写一个打印类算了. 类实现想法是:先把要打印的数据都收集起来,在用js调用window打印函数.目前就使用于IE. 类提供打印排队功能.(PS,说白了就是一条一条读取数据) class Wprint{ //收集打印代码 private $data = array(); //处理打印代码 private $handle; public fu

  • PHP生成便于打印的网页

    很多新闻和信息站点都提供了一种生成便于打印的网页的方法,所产生的页面的排版布局更有利于打印机的打印输出,这种方法方便了我们从网页上直接打印我们所需的内容,而不必为格式不规整伤脑筋,或者粘贴到文本编辑器中重新排版.然而,我却没看到有多少网站详细解释这些是如何实现的,在这里我提供一小段代码--用PHP来实现生成便于打印的网页并不是像想象的那么难,希望对大家有帮助. 要生成便于打印的网页,需要我们做哪些工作呢?这主要取决于你的网站特点,和你想要生成的版式特征,不过有一些基本处理需要完成: 1.    

  • C#条码生成及打印实例代码

    本文实例为大家分享了C#条码生成及打印的方法,供大家参考,具体内容如下 string BarcodeString = "13043404455";//条码 int ImgWidth = 520; int ImgHeight = 120; //打印按钮 private void button1_Click(object sender, EventArgs e) { //实例化打印对象 PrintDocument printDocument1 = new PrintDocument();

  • 基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作

    在很多项目里面,对条形码和二维码的生成和打印也是一种很常见的操作,在Web项目里面,我们可以利用JS生成条形码和二维码的组件有很多.本文引入两个比较广泛使用的JS组件,用来处理条形码和二维码的生成处理,并介绍如何利用CLODOP组件实现内容的打印输出. 生成条形码使用组件JsBarcode,生成二维码使用组件qrcodejs. 1.条形码的生成 条码的作用一般在一些商品标签上,方便使用条码枪快速.准确录入信息. 如下所示是一种条形码 这里条形码生成使用了JsBarcode组件进行处理,它支持很多

  • iReport生成pdf打印的实例代码

    先下载ireport版本 ,我下载的是 iReport-5.0.4  编辑模板  employees_identity_print_templet @RequestMapping("printEmpPdf") @ResponseBody public Result printEmpPdf(HttpServletRequest request,HttpServletResponse response, Parameter parameter){ Result result=Result.

  • PHP将整个网站生成HTML纯静态网页的方法总结

    复制代码 代码如下: <?php //在你的开始处加入 ob_start(); ob_start(); //以下是你的代码 //在结尾加入 ob_end_clean(),并把本页输出到一个变量中 $temp = ob_get_contents(); ob_end_clean(); //写入文件 $fp = fopen('文件名','w'); fwrite($fp,$temp) or die('写文件错误'); ?> 这只是最基本的方法,还不是很实用,因为网站是要更新的,要定期重新生成HTML

  • jsPDF生成pdf后在网页展示实例

    复制代码 代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <title>jsPDF</title> <script type="text/javascript" src="jspdf.js"></script> <s

  • Python实现打印实心和空心菱形

    1.打印实心菱形 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识. 方法一: a = int(input("请输入菱形每条边星星的个数:")) b = a c = a for i in range(1, a + 1): # 先打印正三角,由空格和*根据规律组成 print(" " * (b - 1), "*" * (2 *

  • asp.net中的“按需打印”(打印你需要打印的部分) 实现代码

    过程很简单: 首先在asp.net页面中设定开始打印和结束打印的标记,为了确保该标记不在网页浏览时显示,我们采用"<!-- HTML注释 -->"的方式.比如:<!--startprint-->和<!--endprint-->. 接着写相关的JavaScript代码,具体代码见后. 如果不想打印按钮也被打印出来,注意将打印按钮包含在<!--startprint-->和<!--endprint-->之外. 相关代码: 复制代码

  • 用javascript实现页面打印的三种方法

    前一段时间听朋友说起过打印网页的一些方法,在安静的夜晚,听着歌曲无意间发现了几段代码,帖出来跟大家分享一下. 因为我从来没有打印过网页,而且也没有打印机,具体的效果也不是很清楚,测试打印成PDF是正常的,就第二种在弹出设置窗口比第一跟第三种方法多了点. 注意:第二种方法的控件需要IE5.5+的支持,而且因为使用了控件,如果客户端IE的安全性设置过高,将无法正常运行.  特别提示  运行本例代码,如果已经安装了打印机,将直接调用打印机打印页面,否则提示安装打印机. 1.用window对象的prin

  • 使用Java把文本内容转换成网页的实现方法分享

    先以简单的文件读写实现为基础,FileHelper类中的readFile方法用于读取文件内容,writeFile方法用于向文件中写入内容. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; public class FileHelper { public static String readFile(String f

随机推荐