PHP生成便于打印的网页


Posted in PHP onOctober 09, 2006

很多新闻和信息站点都提供了一种生成便于打印的网页的方法,所产生的页面的排版布局更有利于打印机的打印输出,这种方法方便了我们从网页上直接打印我们所需的内容,而不必为格式不规整伤脑筋,或者粘贴到文本编辑器中重新排版。然而,我却没看到有多少网站详细解释这些是如何实现的,在这里我提供一小段代码——用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) 

PHP 相关文章推荐
php 在线打包_支持子目录
Jun 28 PHP
php学习之运算符相关概念
Jun 09 PHP
php 中英文语言转换类
Sep 07 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
PHP简单日历实现方法
Jul 20 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
Aug 10 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
PHP实现字母数字混合验证码功能
Jul 11 PHP
PHP使用ajax的post方式下载excel文件简单示例
Aug 06 PHP
Yii框架通过请求组件处理get,post请求的方法分析
Sep 03 PHP
php设计模式之适配器模式原理、用法及注意事项详解
Sep 24 PHP
PHP4实际应用经验篇(5)
Oct 09 #PHP
数据库的日期格式转换
Oct 09 #PHP
PHP个人网站架设连环讲(四)
Oct 09 #PHP
用PHP+java实现自动新闻滚动窗口
Oct 09 #PHP
如何将数据从文本导入到mysql
Oct 09 #PHP
PHP个人网站架设连环讲(三)
Oct 09 #PHP
杏林同学录(九)
Oct 09 #PHP
You might like
php替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
如何解决CI框架的Disallowed Key Characters错误提示
2013/07/05 PHP
PHP 错误处理机制
2015/07/06 PHP
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
初识JQuery 实例一(first)
2011/03/16 Javascript
js实现在页面上弹出蒙板技巧简单实用
2013/04/16 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
图解Sublime Text3使用技巧
2015/12/21 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
浅谈javascript中的三种弹窗
2016/10/21 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
json数据传到前台并解析展示成列表的方法
2018/08/06 Javascript
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
python自动格式化json文件的方法
2015/03/11 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
python之PyMongo使用总结
2017/05/26 Python
Django admin实现图书管理系统菜鸟级教程完整实例
2017/12/12 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
python使用opencv resize图像不进行插值的操作
2020/07/05 Python
银行演讲稿范文
2014/01/03 职场文书
2014年道德讲堂实施方案
2014/03/05 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
上班迟到检讨书
2015/05/06 职场文书
老干部座谈会主持词
2015/07/03 职场文书