【问题标题】:dompdf - scale the pdf to fit pagedompdf - 缩放 pdf 以适合页面
【发布时间】:2015-07-03 03:26:47
【问题描述】:

所以我使用 dompdf 创建 html 的 pdf。这真的很好,唯一的问题是当 html 太大并且 dompdf 在两页上创建它时。有没有办法在 dompdf 或 html 中仅将其缩放到一页?

我们将不胜感激! 谢谢!

这是我的配置和创建 pdf 的代码。

define("DOMPDF_ENABLE_HTML5PARSER", true);
define("DOMPDF_ENABLE_FONTSUBSETTING", true);
define("DOMPDF_UNICODE_ENABLED", true);
define("DOMPDF_DPI", 120);
define("DOMPDF_ENABLE_REMOTE", true);

require_once 'dompdf/dompdf_config.inc.php';

$dompdf = new \DOMPDF();
$dompdf->load_html($html);
$dompdf->set_paper("a4", "portrait");
$dompdf->render();
$dompdf->stream("page.pdf", array("Attachment" => 0));  

【问题讨论】:

  • html 太大?你有截图告诉我们在当前条件下运行了什么。
  • html由一个大的jpg开头和jpg下面的可变文本组成。文本有时可能很长,所以如果 dompdf 可以将所有内容缩放成漂亮的 pdf,那就太好了。你几乎可以使用 dpi 设置来做到这一点。所以现在我有一个pdf预览和一个选择框,您可以在其中选择dpi,直到它适合页面。如果 dom pdf 可以通过设置自动执行此操作会很好
  • 如果您可以忍受设定大小的倍数,那么我之前在这里概述了一种方法:stackoverflow.com/q/26691304/264628
  • 使用您的方法,您可以通过使用不同的 dpi 设置循环渲染过程直到获得单个页面来执行类似的操作。
  • 听起来很有趣你有一个例子我将如何完成这样的事情吗?

标签: php html pdf dompdf


【解决方案1】:

抱歉,DOMPDF 中没有设置来执行此操作。
为了满足您的需求,您必须使用 CSS 文件来自定义图像大小或文本字体大小

【讨论】:

    【解决方案2】:

    DOMPDF 在 CSS 和表格方面存在一些问题。最佳做法是避免单元格或行跨度,并且不使用外部 css 文件。也只支持一组有限的 css 规则。查看完整的CSSCompatibility list

    要解决您的问题,您是否尝试将img 的内联样式设置为style="max-width:100%; max-height:100%;"

    这是一个在一个页面内缩放大图像 (4,256px × 2,832px) 的完整示例:

    <?php 
    $html = <<< LOL
    <html>
    <head>
    </head
    <body>
    <div width="100%"><img style="max-width:100%; max-height:100%;" src="http://www.norrbottenbigband.com/upload/images/norrbotten-big-band_hq.jpg"> </div>
    
    </body>
    </html>
    LOL;
    
    define("DOMPDF_ENABLE_HTML5PARSER", true);
    define("DOMPDF_ENABLE_FONTSUBSETTING", true);
    define("DOMPDF_UNICODE_ENABLED", true);
    define("DOMPDF_DPI", 120);
    define("DOMPDF_ENABLE_REMOTE", true);
    //define("DOMPDF_ENABLE_JAVASCRIPT", true);
    //define("DOMPDF_ENABLE_CSS_FLOAT", true);
    
    require_once 'dompdf_config.inc.php';
    
    $dompdf = new \DOMPDF();
    $dompdf->load_html($html);
    $dompdf->set_paper("a4", "portrait");
    $dompdf->render();
    $dompdf->stream("page.pdf", array("Attachment" => 0)); 
    

    如果上述方法都不起作用,请尝试将输出 pdf 放入 div 中,并将 div 设置为特定大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-08
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      • 2021-10-30
      相关资源
      最近更新 更多