【问题标题】:Modifying PDF and reuse embedded font修改 PDF 并重用嵌入字体
【发布时间】:2012-05-23 06:24:40
【问题描述】:

我想用 PHP 修改 PDF 文档。我找到了库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();

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

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


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

【问题讨论】:

    标签: php pdf fpdf embedded-fonts fpdi


    【解决方案1】:

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

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

     AXBTZV+Calibri
    

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

    【讨论】:

    • 这很有趣。现在我必须检查哪些随机字符是。到目前为止的提示 +1。
    • 你说得对,字体叫做QQASDX+Calibri。明天我会检查如何重复使用那个。
    【解决方案2】:

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

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

    【讨论】:

    • 我知道,但这在我的空间案例中没有问题。我只需要添加一些已经在文本中某处的数字。
    • 作为“不是答案”的回复,应该是评论。如果您的回复包含有关如何回收该字体中存在的字符的说明,那当然会有所不同。仅供参考:我只部分同意你的观点,因为可以嵌入整个字体而不仅仅是使用的字母。最后,您给出的建议不是解决方案,应该是评论而不是答案。细节很好,但不完整。恕我直言;)
    猜你喜欢
    • 2019-02-20
    • 2012-10-03
    • 2010-11-13
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 2010-10-12
    • 2015-02-16
    相关资源
    最近更新 更多