【问题标题】:Clean HTML page to pdf [duplicate]将 HTML 页面清理为 pdf [重复]
【发布时间】:2014-04-16 06:19:39
【问题描述】:

我有一个干净的 HTML 页面。我需要将其打印(下载)为 pdf 文件。我在互联网上搜索过。但是每个人都提供了一些插件和库。没有这些我能做到吗?我的意思是如何使用 php 代码下载为 pdf 格式。我正在使用 codeigniter

<table><tr>
<td>Name</td>
<td><?php echo $name;?></td>
</tr></table>

这就是我的代码的样子。 $name 值将是动态的

【问题讨论】:

  • PDF 和 HTML 是两种截然不同的野兽。大多数现代浏览器都可以原生呈现 PDF,但它们使用的引擎与 HTML 呈现引擎完全不同。我这样说是为了让您知道您不能只是即时切换到“PDF 模式”。 PDF 是一种几乎与 HTML 一样古老的二进制文件格式,看起来完全不像 HTML。 PDF 规范是开放的,因此您绝对可以使用 PHP 编写它,但除非您很无聊(像我一样),否则您将需要一些时间来阅读 1300 多页。仅使用经过验证的真实库确实要容易得多。对于 PHP,我经常使用 FPDF fpdf.org

标签: html codeigniter pdf-generation


【解决方案1】:

我认为您将不得不通过插件/库路线。不确定 PHP 是否原生提供 PDF 生成功能。

我曾使用过一个不错的开源库来生成 PDF,但如果您不熟悉 XSLT,它的学习曲线会很陡峭。它叫XSL-FO

Apache FOP 是我用过的不错的 FO 处理器。

here 是一个教程链接,我刚刚在 Google 上搜索了将 XSL-FO 与 PHP 结合使用。这是我遇到的第一个链接,我相信您可以找到许多其他可能比这个更好的链接。

【讨论】:

    【解决方案2】:

    使用 dompdf 创建 html 页面到 pdf 的简单方法

    你的 dom pdf 库

    <?php defined('BASEPATH') OR exit('No direct script access allowed');
    /**
     * CodeIgniter PDF Library
     *
     * Generate PDF's in your CodeIgniter applications.
     *
     * @package         CodeIgniter
     * @subpackage      Libraries
     * @category        Libraries
     * @author          Chris Harvey
     * @license         MIT License
     * @link            https://github.com/chrisnharvey/CodeIgniter-PDF-Generator-Library
     */
    
    require_once(dirname(__FILE__) . '/dompdf/dompdf_config.inc.php');
    
    class Pdf extends DOMPDF
    {
        /**
         * Get an instance of CodeIgniter
         *
         * @access  protected
         * @return  void
         */
        protected function ci()
        {
            return get_instance();
        }
    
        /**
         * Load a CodeIgniter view into domPDF
         *
         * @access  public
         * @param   string  $view The view to load
         * @param   array   $data The view data
         * @return  void
         */
        public function load_view($view, $data = array())
        {
            $html = $this->ci()->load->view($view, $data, TRUE);
    
            $this->load_html($html);
        }
    }
    

    你可以下载dompdf文件夹

    将 int 放入库文件夹

    https://github.com/dompdf/dompdf

    像这样调用的控制器

           $data['etc_data'] =     $this->model->data($id); 
          $data['evn_etc_data'] =  $this->model->ext_data($id);
          $this->load->view('pdf',$data);     
          $this->load->view('pdf',$data);
          $this->load->library('pdf');
          $this->pdf->load_view('pdf',$data);
          $this->pdf->render();
          $this->pdf->stream("test.pdf");
    

    你的看法是这样的

    <?php print_r($etc_data);?>
    <?php print_r($evn_etc_data);?>
    

    //这里写你的html代码和你的逻辑 否则你可以看到这个链接实现基于帮助器

    https://github.com/EllisLab/CodeIgniter/wiki/PDF-generation-using-dompdf

    【讨论】:

    • html代码在哪里写? ? 之后
    • 鉴于您可以根据您的要求编写注意:此处外部 css 不起作用,您应该编写内联 css 或嵌入式 css
    【解决方案3】:

    您可以为此使用 window.print 函数。

    <script type="text/javascript">
    $(document).ready(function(){
    
    $('#pdf').click(function(){
    
       printDiv();
        function printDiv() {
    
        var printContents = $(".content").html();
    
     var originalContents = document.body.innerHTML;
     document.body.innerHTML = printContents;
     window.print();
     document.body.innerHTML = originalContents;
     }
    
    
    
    });
    });
    
    </script>
    

    其中内容是 div 类名。您可以创建该 div 的 pdf。

    【讨论】:

    • 这不是打印到 pdf。我们甚至可以使用普通的 javascript 来做到这一点
    猜你喜欢
    • 2013-04-09
    • 2023-03-07
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    相关资源
    最近更新 更多