【问题标题】:dompdf watermark, image, header and footer issuesdompdf水印、图片、页眉和页脚问题
【发布时间】:2011-06-19 05:52:15
【问题描述】:

我在 codeigniter 中使用 dompdf 作为插件。它完美地生成了pdf。但是有些问题困扰了我好几天。

  1. 我想在生成的 pdf 的每一页中放置一个图像作为标题。我是按照here 给出的教程做的。 但没有进展。我尝试在 pdf 的 sript 所在的同一文件夹中查找所有类型的图像(jpg、png、gif)。它不起作用。然后我尝试设置图像和 css 的路径变量,如http://code.google.com/p/dompdf/wiki/Usage 所示。但我找不到一个很好的例子或教程。如果有人曾经使用过这个,请帮助我。

  2. 我还想在每个页面上添加水印。为此我正在使用

    $pdf->page_text(110, $h - 240, "TRIAL", Font_Metrics::get_font("verdana", "bold"),110, array(0.92, 0.92, 0.92), 0, -58);

这工作正常并生成水印。但是水印来自内容。有什么东西可以改变水印的不透明度。它不会通过改变数组中的参数来改变。

3. 在每一页的末尾(除了最后一页)我想放上文字“continue..”。为此我正在使用

$text = "Continued..";
  $width = Font_Metrics::get_text_width($text, $font, $size);
  $pdf->page_text($w - 16 - $width - 38, $y-15, $text, $font, $size, $color);

它将文本放在每一页中(应该如此)。有没有办法在除最后一页之外的所有页面中放置文本?

  1. 如何设置dompdf的lib文件中没有的字体?

【问题讨论】:

  • 如果有人回答了任何问题,请帮助我

标签: php footer watermark dompdf


【解决方案1】:

1) 您使用的代码到底是什么?听起来您在内联脚本方面取得了成功,而不是图像。所以你的代码可能有问题。

2) 这是内联脚本的问题。它在 HTML 内容之后呈现,这意味着它显示在 HTML 内容之上。通过内联脚本添加文本时曾经有一个不透明度选项,但我不确定它是否正常工作。它已从 0.6.0 代码库中删除。

您可能需要等待下一个版本,其中将包含更多样式选项,可以实现您想要在 HTML 中执行的操作(特别是固定定位和 CSS 翻译)。

3) 我不确定您是否可以在除最后一页之外的每一页上显示页眉。有一个选项可以阻止对象显示,但它似乎只影响后续页面。因此,您必须在最后一页之前将相关代码添加到页面中。

4) 如果要添加字体,您需要能够使用 load_font.php 对其进行解析。您还需要访问可执行文件 ttf2afm (dompdf 0.5.1) 或 ttf2ufm (dompdf 0.6.0)。有instructions on how to load fonts,也可以试试我开发的web-based font prep tool

【讨论】:

  • @Brian,谢谢。是的,我正在使用内联 php 脚本。半小时前我可以通过执行以下操作来解决不透明度问题。
  • 我在下面给出的函数中添加了另外两个参数,位于 cpdf_Adapter.cls.php 的 685 行左右,并在调用函数中传递了相同的参数。函数 page_text($x, $y, $text, $font, $size, $color = array(0,0,0), $adjust = 0, $angle = 0, $blend ="Normal", $opacity = 1.0) { $this->_page_text[] = compact("x", "y", "text", "font", "size", "color", "adjust", "angle", "blend", "不透明度"); .header img 不会出现在每个 pg 中(仅出现在最后 pg 中)。对于第 3 点,你能说一下如何获得总 pg 数和当前 pg#。这样我就可以比较和做。或者发布一个方法
  • @Brian for image 我正在使用 if ( isset($pdf) ) { $path = base_url();//基本路径设置为基本目录,如 codeigniter config $dompdf = new DOMPDF (); $dompdf ->set_base_path($path); $basepath=$dompdf->get_base_path(); $img_w = 1.5 * 72; // 1.5 英寸,以磅为单位 $img_h = 0.9 * 72; // 0.9 英寸,以磅为单位 -- 根据需要更改这些 $pdf->image( $basepath."path_to_folder/logo.png", "png", 30, 30, $img_w, $img_h); } 在这种情况下,图像仅出现在最后一页。我的要求是所有页面
  • 我已经有一段时间没有尝试任何具有文本透明度的东西了。看起来此选项已从 0.6.0 代码库中删除,但我不知道为什么。我们必须进一步调查并可能重新投入的东西。
  • 您的内联脚本在哪里?使用 $pdf->page_text() 添加页面文本是一个全局设置。但是当添加脚本生成的页眉/页脚时,它是一个相对设置。因此,如果您的脚本位于页面末尾,则页眉/页脚只会显示在末尾。将您的内联脚本放在文档的开头,并且您的页眉/页脚应该出现在所有页面上。
【解决方案2】:

确保 DOMPDF_ENABLE_PHP 在 dompdf_config.inc.php ~line 173 in 0.6.2 中设置为 true 请注意,如果有任何未经过滤的内容来自不受信任的来源到 pdf,这会带来潜在的安全风险。

/**
 * Enable inline PHP
 *
 * If this setting is set to true then DOMPDF will automatically evaluate
 * inline PHP contained within <script type="text/php"> ... </script> tags.
 *
 * Enabling this for documents you do not trust (e.g. arbitrary remote html
 * pages) is a security risk.  Set this option to false if you wish to process
 * untrusted documents.
 *
 * @var bool
 */
define("DOMPDF_ENABLE_PHP", true);

【讨论】:

    猜你喜欢
    • 2012-03-07
    • 2012-02-26
    • 1970-01-01
    • 2015-04-03
    • 2021-10-15
    • 1970-01-01
    • 2013-09-05
    • 2012-10-29
    • 2019-10-04
    相关资源
    最近更新 更多