【问题标题】:Why don't the images fully display when I convert HTML to PDF with Perl's HTML::HTMLDoc?当我使用 Perl 的 HTML::HTMLDoc 将 HTML 转换为 PDF 时,为什么图像不能完全显示?
【发布时间】:2011-02-01 22:48:06
【问题描述】:

我需要从我创建的 HTML 中创建一个 PDF 文件 usign rrdcgi。此页面包含 PNG 格式的详细信息和图表。我使用 Perl 模块 HTML::HTMLDoc 编写了以下代码,以使用保存的 HTML 文件创建 PDF 文件。图片的大小宽度为 1048,高度为 266,但在创建 PDF 文件时,图片并没有从右侧完整显示。

#!/usr/bin/perl

use strict;
use warnings;

use HTML::HTMLDoc;

my $filename = shift;
my $htmldoc = new HTML::HTMLDoc();

$htmldoc->set_input_file($filename);
$htmldoc->no_links();
$htmldoc->landscape();
$htmldoc->set_jpeg_compression('50');
$htmldoc->best_image_quality();
$htmldoc->color_on();
$htmldoc->set_right_margin('1', 'mm');
$htmldoc->set_left_margin('1', 'mm');
$htmldoc->set_bodycolor('#FFFFFF');
$htmldoc->set_browserwidth('1000');
my $pdf = $htmldoc->generate_pdf();
$pdf->to_file('foo.pdf');

我需要以下方面的帮助:

如何在页面上显示完整的图像。

非常感谢您对 Perl 代码的任何帮助。

【问题讨论】:

  • 你有两个不同的问题。
  • 我已经为单个查询编辑了我的问题。

标签: html perl pdf


【解决方案1】:

看看HTML::HTMLDoc documentation:

set_browserwidth($width)

以像素为单位指定浏览器宽度。 浏览器宽度用于缩放 图像和像素测量时 生成 PostScript 和 PDF 文件。 不影响字体大小 文本。默认浏览器宽度为 680 大致对应于a的像素 96 DPI 显示。

请注意 您的图像和表格大小相等 小于或等于浏览器宽度, 或者您的输出将重叠或 在某些地方截断

您说图像的宽度为 1048,但您在浏览器宽度上指定了 1000:

$htmldoc->set_browserwidth('1000');

尝试增加 browserwidth 参数以适应您的图像。

【讨论】:

    猜你喜欢
    • 2013-07-03
    • 2019-12-04
    • 1970-01-01
    • 2019-07-01
    • 2010-11-10
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    相关资源
    最近更新 更多