1

我想用 PHP 修改 PDF 文档。我找到了允许创建和修改 PDF 文件的库FPDFFPDI 。这是我非常简单的代码:

<?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();

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

如果该库无法做到这一点,请随时将我指向第三个免费库。


我知道我可以只使用已经使用过的字符,但这在我的特殊情况下没有问题。我检查了所有可能的字符都以正确的大小写敏感度使用。

4

2 回答 2

5

我敢打赌,您从导入的 PDF 页面中嵌入的字体不会被调用calibri。(PDF 中字体名称的小写拼写非常罕见。)

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

 AXBTZV+Calibri

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

于 2012-07-05T20:03:34.607 回答
0

在 PDF 中重用字体几乎是不可能的,因为只存储了 PDF 中使用的字符。因此,如果您从未W在 PDF 模板中使用过大写字母,并且想用一个添加文本,那么它就无法显示。

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

于 2012-05-23T06:49:18.263 回答