打印图片,为什么这么难

时间:2014-03-24 16:09:31

标签: php google-chrome printing imagick

在我相信之前我已经问了这个问题,但我遇到了更多问题。我有一个在本地服务器上运行的Web应用程序。当用户向图像添加销售时,将生成包含所有销售的页面。

这包括图像,图像数量根据销售量的不同而变化。这些图像可以在横向和纵向之间变化。为了打印图像,必须将它们全部旋转为纵向,因此我使用PHP和Imagick来检测宽度和高度并相应地旋转它们。

因此,这是一个示例页面,其中有5张图像可供打印。

<div class="print_container" id="print_container" style="display: block;">
    <div data-type="KR">
        <img onload="c++;count_loaded();" id="LKR_6_0" data-quantity="2" onclick="disable_print(this,'print_container')" src="http://localhost:1234/ppa/php/generateimage.php?imgname=C:/xampp/htdocs/ppa/data/images/20140324/0/039.JPG&amp;restraint=width" class="">
        <img onload="c++;count_loaded();" id="LKR_6_1" data-quantity="2" onclick="disable_print(this,'print_container')" src="http://localhost:1234/ppa/php/generateimage.php?imgname=C:/xampp/htdocs/ppa/data/images/20140324/0/039.JPG&amp;restraint=width" class="">
        <img onload="c++;count_loaded();" id="LKR_7_0" data-quantity="2" onclick="disable_print(this,'print_container')" src="http://localhost:1234/ppa/php/generateimage.php?imgname=C:/xampp/htdocs/ppa/data/images/20140324/0/040.JPG&amp;restraint=width" class="">
        <img onload="c++;count_loaded();" id="LKR_7_1" data-quantity="2" onclick="disable_print(this,'print_container')" src="http://localhost:1234/ppa/php/generateimage.php?imgname=C:/xampp/htdocs/ppa/data/images/20140324/0/040.JPG&amp;restraint=width" class="">
        <img onload="c++;count_loaded();" id="LKR_13_0" data-quantity="3" onclick="disable_print(this,'print_container')" src="http://localhost:1234/ppa/php/generateimage.php?imgname=C:/xampp/htdocs/ppa/data/images/20140324/2/039.JPG&amp;restraint=width" class="">
    </div>
</div>

正如您所看到的,我链接到PHP文件并从那里返回图像。最好的方法是检测相同的图像是否正在旋转,只是为重复实例而不是多次旋转,但这是目前的问题。

以下是生成图像的代码:

<?php
//Need to add code to generate image if unable to load
try {
    $im = new Imagick();
    $im->readImage($_GET['imgname']);
    $im->setImageFormat("jpg");

    $d = $im->getImageGeometry();
    $w = $d['width'];
    $h = $d['height'];

    if (isset($_GET['restraint'])) {
        if($_GET['restraint'] == "width") {
            if ($w > $h) {
                $im->rotateImage(new ImagickPixel(), 90);
            }
        } elseif ($_GET['restraint'] == "height") {
            if ($w < $h) {
                $im->rotateImage(new ImagickPixel(), 90);
            }
        }
        header("Content-Type: image/jpeg");
        print $im->getImage(); 
        $im->clear(); 
        $im->destroy(); 
    }
} catch (Exception $e) {
    die('Error when creating a image: ' . $e->getMessage());
}
?>

以上所有内容似乎都运行良好,但是当我可以使用谷歌浏览器打印图像时,有时打印预览会失败,我不介意,因为我会禁用它,因为它没有意义。但是使用系统打印对话框打印也不起作用,它只是不打印并且没有错误。所以我假设问题是相关的......?

是否可以将TOO MUCH数据发送到打印作业? P.S我的打印通过WiFi连接,如果这有什么区别?

0 个答案:

没有答案