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 相关文章推荐
一个好用的分页函数
Nov 16 PHP
分享PHP入门的学习方法
Jan 02 PHP
PHP的一个基础知识 表单提交
Jul 04 PHP
php编写简单的文章发布程序
Jun 18 PHP
thinkphp微信开发(消息加密解密)
Dec 02 PHP
浅析Yii2 gridview实现批量删除教程
Apr 22 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
PHP中Socket连接及读写数据超时问题分析
Jul 19 PHP
php常用正则函数实例小结
Dec 29 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
PHP PDOStatement::getColumnMeta讲解
Feb 01 PHP
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
Apr 01 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编程开发“虚拟域名”系统
2006/10/09 PHP
PHP脚本的10个技巧(5)
2006/10/09 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
PHP连接Access数据库的方法小结
2013/06/20 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
2014/01/26 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
jQuery拖动图片删除示例
2013/05/10 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
2014/03/06 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
AngularJs Injecting Services Into Controllers详解
2016/09/02 Javascript
js实现截图保存图片功能的代码示例
2017/02/16 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
python使用marshal模块序列化实例
2014/09/25 Python
python中的字典使用分享
2016/07/31 Python
python数据结构之列表和元组的详解
2017/09/23 Python
python的构建工具setup.py的方法使用示例
2017/10/23 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
python生成n个元素的全组合方法
2018/11/13 Python
Python魔法方法功能与用法简介
2019/04/04 Python
python 字符串常用方法汇总详解
2019/09/16 Python
Selenium元素定位的30种方式(史上最全)
2020/05/11 Python
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
UGG英国官方网站:UGG UK
2018/02/08 全球购物
上课睡觉检讨书
2014/01/28 职场文书
销售提升方案
2014/06/07 职场文书
保护环境标语
2014/06/09 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
python开发飞机大战游戏
2021/07/15 Python