Php 从网页打印旋转文本
我运行一个web应用程序,为用户生成一些报告。对于其中一个报告,我需要打印旋转90度的文本。我已经尝试了很多方法,但还没有找到一种正确打印的方法。我可以用下面的css类在弹出窗口上显示90度旋转的文本,但当它像往常一样发送到打印机时,文本会旋转到正常形式并打印出来。我理解打印机无法按浏览器上显示的方式打印的原因,但有什么方法可以做到这一点吗?这个站点的脚本语言是PHP 更新:我可以打印静态页面上旋转的文本,但在弹出窗口上无法打印旋转的文本。实际上,现在我需要帮助打印CSS样式完整的页面 编辑:如果我只能在客户端使用Mozilla Firefox的情况下通过Firefox打印,这将非常有用Php 从网页打印旋转文本,php,javascript,html,firefox,printing,Php,Javascript,Html,Firefox,Printing,我运行一个web应用程序,为用户生成一些报告。对于其中一个报告,我需要打印旋转90度的文本。我已经尝试了很多方法,但还没有找到一种正确打印的方法。我可以用下面的css类在弹出窗口上显示90度旋转的文本,但当它像往常一样发送到打印机时,文本会旋转到正常形式并打印出来。我理解打印机无法按浏览器上显示的方式打印的原因,但有什么方法可以做到这一点吗?这个站点的脚本语言是PHP 更新:我可以打印静态页面上旋转的文本,但在弹出窗口上无法打印旋转的文本。实际上,现在我需要帮助打印CSS样式完整的页面 编辑:如
.rotate{
-webkit-transform: rotate(-90deg);
-moz-transform: rotate(-90deg);
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
width:400;
height:400;
}
这是弹出窗口显示文本的方式以及我希望打印文本的方式
非常感谢 您可以使用PHP生成旋转文本的图像,然后将其打印出来。 图像最酷的地方在于它根本不依赖于浏览器。有一些解决方案(本线程中已经提到)可以工作,但只在少数最新浏览器上测试。只要浏览器可以打印图像,这个解决方案就不关心浏览器,只关心支持PHP5的服务器 下面是您的PHP文件(image_gen.PHP)的外观:
<?php
// create a 100*100 image
$im = imagecreatetruecolor(100, 100);
// Write the text
$textcolor = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
imagestringup($im, 3, 40, 80, $_GET['text'], $textcolor);
header('Content-type: image/png');
// Save the image
imagepng($im);
imagedestroy($im);
?>
看
此文件将文本作为get参数垂直打印,如下所示:
它返回垂直打印的文本图像。因此,您可以在要打印的主HTML文件中执行此操作:
<img src = "image_gen.php?text=Hello world">
请注意:示例代码中指定的值只是示例值、文本和颜色,请根据您的目的进行更改
这就是将图像插入HTML文件的方式。现在,当您打印该图像时,必须按原样打印图像,即使用垂直文本
在这里,我拍摄了一张打印出来的照片,向大家展示了它的实际工作原理,我知道文本并不清晰可见,但你可以看出它是垂直的
希望对…有帮助。嗯。。。这对我有用。。。测试日期:
- Firefox 23(Win7,OSX)
- Chrome 28(Win7、OSX)
- Safari 6(OSX)
media=“print”
中禁用它们
我使用了以下示例文档,它是一个方便的数据URI:
data:text/html,%3Cp%20style=%22%20-webkit-transform:%20rotate%28-90deg%29;%20transform:%20rotate%28-90deg%29;%20border:%201px%20solid%20red;%20padding:%201ex;%20width:%20100px;%20%22%3Etest%20rotate%3C/p%3E
这应该行得通。
已在铬合金中测试了以下各项:
<script type="text/javascript">
var printWindow = window.open();
printWindow.document.write('<style type="text/css">\
.rotate{\
-webkit-transform: rotate(-90deg);\
-moz-transform: rotate(-90deg);\
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);\
width:400;\
height:400;\
}\
</style>\
<div class="rotate">Rotated Content</div>');
printWindow.print();
</script>
var printWindow=window.open();
printWindow.document.write('\
.轮换{\
-webkit变换:旋转(-90度)\
-moz变换:旋转(-90度)\
过滤器:progid:DXImageTransform.Microsoft.BasicImage(旋转=3)\
宽度:400\
身高:400\
}\
\
旋转内容“);
printWindow.print();
(注意,我用反斜杠来逃避进入。)
如果您希望只使用一个不可见的打印框(用户单击一个按钮并显示一个打印对话框),请使用iframe。请注意Opera(可能在他们切换到WebKit工具之前)不喜欢这种情况。如果文本在屏幕上显示时旋转,但在打印时不旋转,则可能是CSS仅应用于
屏幕,而不是打印媒体
确保在
标记中将媒体
属性值设置为全部
:
<link rel="stylesheet" type="text/css" href="style.css" media="all">
您还可以有两个专用CSS文件,一个用于计算机屏幕,另一个用于打印,这样您可以进行更多控制:
<link rel="stylesheet" type="text/css" href="style.css" media="screen">
<link rel="stylesheet" type="text/css" href="style-print.css" media="print">
有关媒体
属性的更多信息:
干杯 你是说弹出窗口吗?也就是说,你的意思是它不总是可见的吗?@MrLister感谢你注意到“rotaion”:)是的,它是一个弹出窗口,当点击此网页上的打印按钮时可见。是的,然后你需要使它在打印时始终可见,正如用户2641697所说。打印程序不知道按下按钮的情况。你试过了吗?@BenedictLewis:我对旋转文本显示没有问题,但问题是旋转打印。
<link rel="stylesheet" type="text/css" href="style.css" media="screen">
<link rel="stylesheet" type="text/css" href="style-print.css" media="print">