修改PDF并重用嵌入字体

时间:2012-05-23 06:24:40

标签: php pdf fpdf embedded-fonts fpdi

我想用PHP修改PDF文档。我发现libs FPDFFPDI允许创建和修改PDF文件。这是我非常简单的代码:

<?php
require_once('include/fpdf.php');
require_once('include/fpdi.php');

// initiate FPDI
$pdf = new FPDI();
// add a page
$pdf->AddPage();
// set the sourcefile
$pdf->setSourceFile('input.pdf');
// import page 1
$page1 = $pdf->importPage(1);
// insert the page
$pdf->useTemplate($page1);

// now write some text above the imported page
$pdf->AddFont('calibri');
$pdf->SetFont('calibri','',11);
$pdf->Write(0, "This is just a simple text");

header("Content-Type: application/pdf");
$pdf->Output();

效果很好,但是我看到插入的文本添加了类似于系统字体的引用而不是已经嵌入的字体。我怎样才能简单地重用嵌入字体?

如果这不可能,libs随时可以指向第三个免费的lib。


我知道我可以使用已经使用的字符,但在我的特殊情况下这不是问题。我已检查过所有可能的字符都用于正确的区分大小写。

2 个答案:

答案 0 :(得分:5)

我敢打赌,导入的PDF页面中的嵌入字体不会被称为calibri。 (仅限小写的PDF格式的字体拼写是非常罕见的。)

我还打赌,PDF不会将Calibri嵌入为全套。它很可能只是一个子集。作为子集,fontname将由随机的6个字母大写前缀+原始字体名称组成,如下所示:

 AXBTZV+Calibri

您必须找到确切的名称并尝试使用此功能。 (但是,我不确定你的PHP库是如何工作的,如果它可以做到这一点,以及它是否能够以正确的方式处理PDF文本编写代码的修改。给我带来Gimme和我很可能做的事情。它在文本编辑器中,但是......)

答案 1 :(得分:0)

重复使用PDF中的字体几乎是不可能的,因为只存储PDF中使用的字符。因此,如果您从未在PDF模板中使用大写W并希望使用一个文本添加文本,则无法显示该文本。

这不能回答你的问题,而是告诉你根本不要尝试。