TCPDF图像质量问题

Kri*_* O. 8 image tcpdf

我正在使用TCPDF来生成PDF文档,我正在尝试在标题中添加徽标,但是我的图像质量有问题,后来我发现,还有缩放.

使用TCPDF插入PDF文档的图像存在质量损失和尺寸问题.我不太在乎尺寸,因为我可以改变它,但我无法恢复图像的质量.

我尝试过的:

  • TCPDF扩展和质量问题
  • tcpdf:图像质量差
  • 我还将标题转换为HTML代码,同样的质量降级发生.
  • 删除了所有其他选项,$pdf->Image()并将所有内容保留为默认值 - 图像大小增加到(大概)原始大小,但质量问题相同.

这是我用来插入图片的代码:

$this->Image("../images/logo.jpg", 8, 10, 35, '', 'JPG', '', 'T', false, 0, '', false, false, 0, false, false, false);
Run Code Online (Sandbox Code Playgroud)

这是createPDF()功能的开始:

$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetCreator('PHP TC-PDF Generator');
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(8, 50, 8); // page margins
$pdf->SetAutoPageBreak(TRUE, 30);
$pdf->setImageScale(1);
$pdf->setFontSubsetting(true);
$pdf->SetFont('helvetica', '', 12, '', true);
$pdf->AddPage();
$pdf->setTextShadow(array('enabled'=>false));
Run Code Online (Sandbox Code Playgroud)

还有其他建议吗?

替代方案:我愿意使用任何其他PDF生成器更改TCPDF,如果它支持HTML表格并且可以插入质量更好的图像.

对你的帮助表示感谢.

tox*_*lot 9

要使图像更大,请增加定义的宽度.您似乎使用的默认单位为mm,因此您指定的宽度为35 mm.如果您想要更大的图像,请将该数字更改为所需的宽度.

要获得更高质量的图像,请从更大的图像开始.您可能必须尝试,但尝试1.53 1倍大.如果你把它做得太大,那么在缩放时它可能看起来很不稳定.

我会用PNG.PNG格式更适合具有文本和纯色的图像,就像您在那里一样.但是如果要使用JPG,请尝试使用SetJPEGQuality()方法提高图像质量.我相信默认值是75.

缩放

如果指定尺寸,则不使用图像比例值.如果您不想显式指定大小,请使用setImageScale()方法相应地设置比例因子.因此,如果您将图像的大小设置为所需大小的1.53倍,请将比例设置为1.53.

注意: setImageScale()文档中的描述具有误导性,IMO.它与将像素转换为用户单元没有任何关系.该转换由内部脚本处理.

缩放级别

请注意,无论您做什么,图像在所有缩放级别都不会很好.您可以使用SetDisplayMode()方法设置初始缩放级别.TCPDF默认为页面宽度,在大多数现代台式机和笔记本电脑上将超过100%.

图片尺寸

传递给Image()方法的维使用定义的用户单位(默认为mm).虽然dpi和ppi之间存在一些技术差异,但它们仅适用于打印.

所以为了我们的目的:

72 pixels = 72 points = 1 inch = 2.54 cm = 25.4 mm
Run Code Online (Sandbox Code Playgroud)

因此,如果您想要40毫米宽的图像,请尝试创建173像素宽的图像.

40 mm * 72 px / 25.4 mm * 1.53 scale factor
Run Code Online (Sandbox Code Playgroud)

矢量图像

如果图像质量非常重要,则应考虑使用其中一种矢量格式.检查TCPDF手册中的ImageSvg()ImageEps()方法.


脚注

  1. 我发现在100%变焦时,当原始图像比所需尺寸大1.53倍时,质量会有明显改善.当我第一次开始摆弄TCPDF和图像质量时,我偶然发现了1.53的数字.但是,从来没有任何解释这个数字的来源.我相信我终于想通了.Adobe Reader默认使用110 ppi的分辨率,TCPDF创建72 dpi的文档.110 / 72 = 1.53