在使用javascript打印之前,将Html div数据转换为pdf

在使用javascript打印之前,将Html div数据转换为pdf,javascript,Javascript,嗨,我想用javascript打印特定div中的数据,但当我点击打印页面时,我的设计在打印预览窗口中发生了变化,我不想这样,所以我想在打印数据之前,我必须将该数据转换为pdf文件。我该怎么做? 这是打印功能 <script> function print_precription() { var prtContent = document.getElementById("print-page"); var WinPrint = windo

嗨,我想用javascript打印特定div中的数据,但当我点击打印页面时,我的设计在打印预览窗口中发生了变化,我不想这样,所以我想在打印数据之前,我必须将该数据转换为pdf文件。我该怎么做?
这是打印功能

<script>
    function print_precription()
    {
        var prtContent = document.getElementById("print-page");
        var WinPrint = window.open('', '', 'left=0,top=0,width=800,height=900,toolbar=0,scrollbars=0,status=0');
        WinPrint.document.write(prtContent.innerHTML);
        WinPrint.document.close();    
        WinPrint.focus();
        WinPrint.print();
        WinPrint.close();
    }
</script>

函数打印说明()
{
var prtContent=document.getElementById(“打印页”);
var WinPrint=window.open(“”,’left=0,top=0,width=800,height=900,toolbar=0,scrollbars=0,status=0');
WinPrint.document.write(prtContent.innerHTML);
WinPrint.document.close();
WinPrint.focus();
print.print();
WinPrint.close();
}
这是我要打印的Div

<div class="post-feed1" id="print-page" >
    <h3 id="postsheading" class="post-heading">Prescription </h3>
    <div class="prescription-mainbox" >
        <div class="prescription-header" >
            <div class="doc-bio" >
                <?php 
                    $array=get_prescription_details();
                    $array=mysqli_fetch_array($array);
                ?>
                <h4 class="h-name"><?php echo $array['hospital']; ?></h4>
                <h5 class="d-name">Dr.<?php echo $array['dname']; ?></h5>
                <h5 class="d-spec"><?php echo $array['specilization']; ?></h5>
                <h5 class="d-no"><?php echo $array['doc_officeno']; ?></h5>
            </div>
        </div>                        
        <div class="patient-bio">
            <h5 class="p-name">Name : <?php echo $_SESSION['fname']." ".$_SESSION['lname']; ?></h5>
            <h5>Age : <?php echo $_SESSION['pat_age']; ?></h5>
            <div class="date">
                <label>Date :<?php  echo $array['AppointmentDate'];   ?></label> 
            </div>
            <form method="POST" action="#">
                <div class="form-div">
                    <ul class="list_medicine" id="medicine_list">
                        <li>Medicine List</li>
                        <li>Instructions</li>
                        <br >
                        <?php 
                            $medicinelist=fetch_medicine();
                            while($rs=mysqli_fetch_array($medicinelist)){
                                $med=$rs['medicine'];
                                $ins=$rs['description'];
                                echo "<li class='medi'>$med</li>";
                                echo "<li class='instruction'>$ins</li><br>";
                            }
                        ?>
                    </ul>
                </div>
            </div>
        </div><!--End of form-div------------>
        <div class="print-save-button">
            <input class="button"  type="submit" onclick="print_precription()" value="Print Prescription" />
        </div>
    </form>
    <!--  </div> End of prescription-main------------>
</div><!--End of feeds -->

处方
博士
姓名:
年龄:
日期:
  • 药品目录
  • 指示


  • “打印”和“转换为PDF”应该是相同的,因为可以很容易地打印成PDF。因此,如果用户需要,实际上
    window.print()
    会将打印内容转换为PDF格式

    您所需要的只是一些好的打印CSS,然后将其用于打印到纸张或PDF


    还有一些应用程序(例如)使用服务器安装Chromium和打印样式表,并在服务器上打印到PDF打印机。这样,您就可以使用廉价的内置功能从HTML/CSS站点生成PDF,而无需依赖第三方服务或任何附加库。

    弹出窗口的内容不受主窗口CSS的影响。您必须显式导入样式:

    function print_precription()
    {
        var prtContent = document.getElementById("print-page");
        var WinPrint = window.open('', '', 'left=0,top=0,width=800,height=900,toolbar=0,scrollbars=0,status=0');
        WinPrint.document.write('<link href="css/print-style.css" type="text/css" rel="stylesheet" media="screen,print">');
        WinPrint.document.write(prtContent.innerHTML);
        WinPrint.document.close();  
        WinPrint.focus();
        WinPrint.print();
        WinPrint.close();
    }
    
    函数打印说明()
    {
    var prtContent=document.getElementById(“打印页”);
    var WinPrint=window.open(“”,’left=0,top=0,width=800,height=900,toolbar=0,scrollbars=0,status=0');
    WinPrint.document.write(“”);
    WinPrint.document.write(prtContent.innerHTML);
    WinPrint.document.close();
    WinPrint.focus();
    print.print();
    WinPrint.close();
    }
    
    一个更简单的方法是确保您的CSS规则以适合您内容的任何方式应用于打印媒体。@Pointy我已经做到了这一点,我在这里为打印和屏幕制作了单独的CSS文件,但打印样式表不起作用,一直到IE6,尽管它们远非完美。如果打印样式表不起作用,则这应该是您处理的问题。将一些HTML+CSS转换为PDF不是一件容易的事情。我在打印样式表中做的与在普通样式表中做的相同。也许您应该创建另一个问题,并至少包括打印时未应用样式的CSS和HTML的某些部分。在看不到实际CSS的情况下,很难提供任何帮助。但是,如果没有应用样式表,那么它看起来就不正确。@Pointy你是对的,但它在我将样式应用于打印和屏幕时不起作用media@Pointy“如果没有应用样式表”…那么您会遇到与任何其他问题无关的其他问题“转换为PDF/打印”任务…