我刚开始使用PHP并且无法将我的页面结果打印出来。我从index.php调用下面的页面。如果我在显示器上显示页面看起来没问题,但是当我打印页面并且它不止一页时,页面末尾的部分被切断并继续在第二页上。我正在寻找一种方法,以便当我打印页面时,它将查看该部分(每个项目编号)是否适合该页面中的整个部分(修复描述,常见原因等)。如果没有,则只在下一页打印。
我还包括了CSS文件。基本上它的作用是强制页面宽度适合信纸大小的纸张。提前谢谢。
<?php include_once $_SERVER['DOCUMENT_ROOT'] .
'/fms/includes/helpers.inc.php'; ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Print Repair Form</title>
<link rel='stylesheet' type='text/css' href='/fms/css/letter-size.css' />
</head>
<body>
<div id="page-wrap">
<table>
<tr>
<td rowspan = "3" id="logo"><a href="/fms/"><img src="/fms/images/flex_no_address_256.jpg" /></a></td>
<td rowspan = "3" id="address">Address<br />
City, State Zipcode <br />
Phone number <br />
website address
</td>
<td>
<table>
<tr>
<td id="repairinfo" class="theading" colspan = "2">Repair Detail</td>
</tr>
<tr>
<td><?php htmlout($custno); ?></td>
<td width="100px">WO: <?php htmlout($wonum); ?></td>
</tr>
<tr>
<td><?php htmlout($custname); ?></td>
<td></td>
</tr>
</table>
</td>
</tr>
</table>
<br />
<?php foreach($items as $item): ?>
<table border ="1">
<tr>
<td class="theading">Type of Repair</td>
<td class="theading">Repair ID</td>
<td class="theading">Fault Picture</td>
</tr>
<tr>
<td class="tablepadding"><?php htmlout($item['repairtype']); ?></td>
<td class="tablepadding"><?php htmlout($item['itemno']); ?></td>
<td rowspan="7" align="center">
<img src="/fms/images/wo_items/<?php htmlout($item['filename']); ?>" width="256" />
</td>
</tr>
<tr>
<td class="theading" colspan="2">Repair Description</td>
</tr>
<tr>
<td class="tablepadding" colspan="2"><?php htmlout($item['repairdesc']); ?>
</td>
</tr>
<tr>
<td class="theading" colspan="2">Common Causes</td>
</tr>
<tr>
<td class="tablepadding" colspan="2"><?php htmlout($item['commoncause']); ?>
</td>
</tr>
<tr>
<td class="theading" colspan="2">Preventive Measures and Maintenance</td>
</tr>
<tr>
<td class="tablepadding" colspan="2"><?php htmlout($item['maintenance']); ?>
</td>
</tr>
</table>
<br />
<?php endforeach; ?>
</div>
</body>
</html>
CSS:
* { margin: 0; padding: 0;}
body {
font: 12px/1.4 Georgia, serif;
}
a img {
border: none;
}
#page-wrap {
width: 800px;
margin: 0 auto;
}
table {
width:100%;
}
#logo {
width: 256px;
}
#address {
width: 170px;
}
#repairinfo {
border-bottom: solid 1px;
text-align: center;
}
.theading {
font-weight: bold;
padding: 3px;
}
table tr td.tablepadding {
padding: 3px;
}
答案 0 :(得分:0)
您的问题不是PHP,而是CSS。 您需要包含特定于打印的样式表,因为这与您的计算机显示器样式不同。
这是关于打印CSS的好文章 http://www.webcredible.co.uk/user-friendly-resources/css/print-stylesheet.shtml
在您的html中,打印样式表<link>
元素需要media="print"
属性
然后在您的打印样式表中,您可以指定宽度
答案 1 :(得分:0)
它应该通过CSS而不是PHP实现,尽管你可以使用php以及解决方法,google for css media。
您的打印CSS有一些技巧:http://slodive.com/web-development/css-print-page-tricks/
不能给你具体的细节,因为我没有太多的印刷工作,但它都来测试适合纸张的总高度,并寻找一个措施在PHP(可能是行?)所以如果size大于你设置的大小,它会创建另一个Table。
您也可以使用Javascript,因为您可以检测元素(例如表格)的高度,并在达到最大高度时调用某个函数。
另外我想建议你不要使用表格,如果它不是完全必要的话,这是一个非常老派的方法,修改麻烦,浏览器的行为更多,并且有更多不必要的代码。