我正在使用FPDF / FPDI来构建PDF模板系统。一个PDF用作背景,并在其中定义了许多可编辑区域(存储在数据库中)。可编辑区域可以是图像,文本或两者,但这不是我的问题,只是一些背景。
某些背景(FPDI源PDF)PDF或“模板”包含嵌入字体,我希望能够实现两件事,并且想知道这是否可行。
要清楚我想重复使用这些字体,不只是将它们应用于导入的页面,而是提供以其中一种嵌入字体呈现新文本的选项。
任何指针都会非常感激。
答案 0 :(得分:1)
首先是字体和PDF。 如果我没记错的话,当字体被包含到PDF中时,可以包含所有字体,或者只是嵌入实际使用的字符面的字体的子集。一些PDF'压缩'工具可以从pdf文件中删除未使用的字体字形。 (有人可以确认/反驳这个吗?)
对于FPDF(它是我使用的库),我不认为它可以在'编辑'模式下打开PDF。它可以简单地打开PDF并将其用作背景 - 实际上是文档的图像。快速查看提供的脚本似乎没有显示将打开PDF文件的脚本(除了可以获取文档上的元信息的脚本)。
PDF库还有其他选项。我在下面的演示中看到的TCPDF的演示表明,TCPDF可能具有更多的内置功能FPDF。可能值得一看这个图书馆吗? http://suburbanchicagophp.org/archives/75
答案 1 :(得分:0)
我是原始问题提问者,但我丢失了我的临时账号,因此无法发表评论(如果可以的话,管理员请合并)。
只是澄清一下。
由于FPDI网站上详述的兼容性问题,我们选择使用FPDF over over TCPDF,因为FPDI是其中的核心组件,丢弃的FPDI不是一种选择。
我们使用FPDI从模板文档中提取页面,然后我们将文本和图像(在数据库中使用Web UI定义)放在每个页面的顶部,因此用法与FPDI允许的完全一样。
我在这个董事会上发现了另一个问题,询问是否从pdf文件中提取嵌入字体,提问者是因为侵犯版权的活动,这是一个很大的假设。
How can I extract fonts from a PDF file with Perl?
我们的模板将来自我们的设计师,我们希望在模板pdf中重新使用(而不是提取)字体。
所以这些是我们的字体,我们只是不希望这个pdf通过编辑的每台机器不仅要有嵌入的字体,还要选择和嵌入正确的字体。它导致了字体的双重甚至三重处理,并且可能有些猜测工作。
上述帖子中的一个回复是一个非常有用的方向,它是一个可以累积嵌入字体的Perl模块,这正是我需要在UI字体列表中显示嵌入字体。
现在我需要测试源(模板)pdf中嵌入的字体是否被传递到新的pdf,我认为它们必须是,所以必须有一种合理的方式来重用它们。
我确切地说,如果有人对此有任何反馈或了解,那么我会非常感谢您回复完整性。
P.S。一些编辑器会创建压缩的pdf文档并删除一些未使用的字体是正确的,但是对我们来说这是一个简单的请求,不要使用编辑器执行此操作,否则您将不得不重新嵌入字体。
答案 2 :(得分:0)
为了进一步说明这一点,Zend_PDF将允许这个确切的功能,枚举然后重用PDF中嵌入的字体,但它不适用于v1.4之后的PDF,v1.4 pdf但是Zend工作得非常好:
例如,Zend_PDF中可以使用以下内容,然后可以按名称重用字体:
public static function GetFontList($background)
{
$pdf = Zend_Pdf::load($background);
$fonts = array();
// Get all document fonts
$fontList = $pdf->extractFonts();
foreach ($fontList as $font)
{
$fontName = $font->getFontName(Zend_Pdf_Font::NAME_POSTSCRIPT, 'en', 'UTF-8');
$fonts[] = $fontName;
}
return $fonts;
}
希望这会对某些人有所帮助,但是我需要比1.4更高的pdf版本,所以我想我想修改FPDI。