wkhtmltopdf不保存输入值

时间:2013-05-24 08:47:58

标签: jquery wkhtmltopdf

该页面包含下拉列表,文本输入,日期。当我运行wkhtmltopdf时,它会保存空白。这将是什么工作。它怎么能像下载一样保存。我在哪里可以看到调试结果?感谢。

testpdf.php

echo shell_exec("C:\wkhtmltopdf\wkhtmltopdf.exe http://localhost/bigkpo/po/select.php --debug-javascript C:\Taopix\MediaAlbumWeb\webroot\bigkpo\PO\pdf\PO.pdf");

jquery on submit

$(document).ready(function(){
    //disable not 1st select
    $("#description").attr("disabled","disabled");
    $("#orientation").attr("disabled","disabled");
    $("#page").attr("disabled","disabled");

        //start----------------------compny
        $("select#company").change(function()
            {
            $("#description").empty();
            $("#description").html("<option>wait...</option>");
            var id = $("#company option:selected").attr('value');
                        $.post("./includes/select_type.php", {id:id}, 
                        function(data0){
                        $("#description").removeAttr("disabled");
                        $("#description").html(data0);
                        });
                        });

        //start----------------------page
        $("#description").change(function()
            {
            $("#page").empty();
            $("#page").html("<option>wait...</option>");
            var id2 = $("#description option:selected").attr('value');
                        $.post("./includes/select_producprice_n_showpage.php", {id2:id2},
                        function(data1){
                        $("#page").removeAttr("disabled");
                        $("#page").html(data1);

                        //show price---------------------------
                        $("#productPrice").html(data1);
                        $("#productPrice2").html(data1);
                        });
                        });

        //start----------------------orientation
        $("#page").change(function()
            {
            $("#orientation").empty();
            $("#orientation").html("<option>wait...</option>");
            var id3 = $("#page option:selected").attr('value');
                        $.post("./includes/select_pageprice_n_showrientation.php", {id3:id3},
                        function(data2){
                        $("#orientation").removeAttr("disabled");
                        $("#orientation").html(data2);

                        //show insidepagePrice-----------------
                        $("#insidepagePrice").html(data2);
                        $("#insidepagePrice2").html(data2);
                        });

                        var quantity = $("#qty").val();
                        var id2 = $("#description option:selected").attr('value');
                        $.post("./includes/select_total.php", {id2: id2, id3: id3, quantity:quantity},
                        function(data3){

                        //computation------------------------------
                        $("#total").html(data3);
                        var vat = Math.round(data3 / 1.12 * 0.12).toFixed(2);
                        $("#vat").html(vat);
                        $("#sub").html(data3 - vat);
                        });
                        });


        $("form#select_form").submit(function(){
            var side = $("#select_form").html();
            console.log(side);
            });
            });

php表单

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
    <link rel="stylesheet" type="text/css" href="css/styles.css">
    </head>

    <body>

    <?php include "./includes/select.class.php"; ?>

    <div id="wraper">

    <div id="header">
    </div>

    <div id="content">
        <div class="contenthead">
            <img src="css/img/kdi.jpg" align="left" /> 
            <h1> PURCHASE <br> ORDER </h1>
            <table align="right">
                <tr>
                <td><b> Date: </b>  </td> <td>&nbsp; <?php echo date('jS \of F Y'); ?></td>
                </tr>
                <tr>
                <td><b> Ref Number: </b> </td> <td> &nbsp; 271 </td>
                </tr>
            </table>
        </div>

        <div class="contentbody">
        <form id="select_form" action="testpdf.php" method="post">

            <table width="900px">
            <thead>
                <tr align="left">
                    <th class="boldlabel" colspan="3"> Company Name:<br>
                            <select id="company">
                                <?php echo $opt->ShowCategory(); ?>
                            </select>
                    </th>
                    <th class="boldlabel" colspan="2"> <b>  Ship to:    </b> 
                </tr>
                <tr>
                    <td width="110" align="center" class="boldlabel"> QTY </td>
                    <td width="110" align="center" class="boldlabel"> UOM </td>
                    <td width="456" align="center" class="boldlabel"> Description </td>
                    <td width="100" align="center" class="boldlabel"> UNIT PRICE </td>
                    <td width="100" align="center" class="boldlabel"> TOTAL </td>
                </tr>
            </thead>

            <tbody>
                <tr class="top row">
                    <td width="100" align="center"> <input id="qty" type="text" name="qty" style="width: 50px; text-align:center"  align="middle"> </td>
                    <td align="center"> <select>
                                            <option> PC </option>
                                            <option> BOX</option>
                                            <option> PACK</option>
                                        </select>
                                        </td>
                    <td align="left">   <select id="description"></select>  </td>
                    <td align="center"> <label id="productPrice"></label>   </td>
                    <td align="center"> <label id="productPrice2"></label>  </td>
                </tr>
                <tr class="side">
                    <td align="center">&nbsp;   </td>
                    <td align="center">&nbsp;   </td>
                    <td align="left">   <select id="page"></select>
                    </td>
                    <td align="center"> <label id="insidepagePrice"></label>    </td>
                    <td align="center"> <label id="insidepagePrice2"></label>   </td>
                </tr>
                <tr class="side">
                    <td align="center">&nbsp;   </td>
                    <td align="center">&nbsp;   </td>
                    <td align="left">  <select id="orientation"></select>   </td>
                    <td align="center">         </td>
                    <td align="center">         </td>
                </tr>
                <tr class="bottom row">
                    <td align="center">&nbsp;   </td>
                    <td align="center">&nbsp;   </td>
                    <td align="center">         </td>
                    <td align="center">         </td>
                    <td align="center">         </td>
                </tr>

                <tfoot>
                <tr>
                    <td colspan="3">&nbsp;  </td>
                    <td class="leftfoot" align="left"> <b> subtotal </b></td>
                    <td class="rightfoot" align="center"> <label id="sub"></label></td>
                </tr>
                <tr>
                    <td colspan="3">&nbsp;  </td>
                    <td class="leftfoot" align="left"><b> 12% VAT </b></td><br />
                    <td class="rightfoot" align="center">  <label id="vat"> </label> </td>
                </tr>
                <tr>
                    <td colspan="3">&nbsp;  </td>
                    <td class="buttomleftfoot" align="left"> <b> Total Amount </b></td>
                    <td class="buttomrightfoot" align="center"> <label id="total"> </label> </td>
                </tr>
                </tfoot>
            </tbody>
            </table>

            <div class="contentfoot">
            <table width="900px">
            <tr>
            <td width="194"> Requested by: <br> <input type="text" name="qty" style="width: 200px; text-decoration:underline"  align="middle"> </td>
            <td width="476">&nbsp;  </td>
            <td width="214"> Noted by: <br> _____________________ </td>
            </tr>
            <tr>
            <td colspan="1">&nbsp;  </td>

                    <td>
                        <input type="button" value="    Print    ">
                        <br>
                        <input type="submit" value="  Submit  " name="submit"/>
                    </td>
            </tr>
            </table>
            </form>
        </div>
    </div>
        <script type="text/javascript" src="./scripts/jquery-1.8.2.js"></script>
        <script type="text/javascript" src="scripts/process.js"> </script>
</div>
</body>
</html>

3 个答案:

答案 0 :(得分:0)

您可以使用以下设置来允许呈现JavaScript内容。

--enable-javascript
--javascript-delay

有关更多选项,请参阅文档

https://code.google.com/p/wkhtmltopdf/wiki/Usage

您应该能够像这样将参数添加到shell_exec命令中 还可以尝试将所有参数放在一行并添加扩展名

echo shell_exec("C:\Taopix\MediaAlbumWeb\webroot\wkhtmltopdf\wkhtmltopdf.exe http://localhost/bigkpo/po/select.php C:\Taopix\MediaAlbumWeb\webroot\pdf\google.pdf --enable-javascript --javascript-delay 500");

这将启用javascript并在创建屏幕捕获之前等待500毫秒。 您可以添加--debug-javascript以获取有关页面上可能出错的调试输出。

<强>更新
从我可以从您的代码中推断出,您想要创建一个打印屏幕,以便从用户创建当前选定值的某种收据。 您将无法在用户显示的浏览器中从页面创建屏幕截图,这不是wkhtmltopdf的工作方式。

您需要存储用户选择的值,然后完全重建服务器端的页面,或者在客户端提供自动化以填充字段,以便wkhtmltopdf可以创建正确的屏幕截图,这需要一些重要的重新分解。我无法再帮助你了。

答案 1 :(得分:0)

要确保您可以使用表单中的内容转换整个页面,这是一项相当大的努力。你实际上必须做一些服务器端处理来重新生成包含内容的页面,然后传递给wkhtmltopdf。

使用网络服务并让访问者点击返回PDF的链接可能要少得多。看看pdfmyform

答案 2 :(得分:0)

当谈到DOM文档和select语句时,你通常必须自己调整数据。

我的最终解决方案是将预期值与所有可用的<option>值进行比较,然后将setAttribute(&#34; selected&#34;,true)进行比较......

这是我能够解决这个问题的唯一方法(在PHP中)。