2010-06-14 33 views
1

我想加载一个现有的pdf文件,并填充数据库信息。加载文件和一切工作,除了写入数据到加载页面。它不会将文本写入加载的页面。如果我添加一个新页面并使用foreach将绘图应用于所有页面,则所有添加的页面都会被写入,除了已加载的页面。下面是我使用的代码:用Zend Framework在一个加载的pdf文件上绘制文本

$pdf = Zend_Pdf::load('./documents/agreements/_root/gegevens.pdf'); // Load pdf 
$pdf->pages = array_reverse($pdf->pages); // reverse pages 
$pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4); // Add a page (A4) 
$font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA); // Set font 
foreach($pdf->pages as $page) // Apply settings+text to every page (total of 2) 
{ 
    $page->setFont($font, 36); 
    $page->setAlpha(0.25); 
    $page->drawText('LALALALALALALA', 62, 260, 'UTF-8'); 
} 
$pdf->save('./documents/agreements/Gegevens_'.$this->school_id.'.pdf'); // Save file 

回答

1

我解决了这个问题:我创建了一个新的PDF文件使用不同的设置。使用以下设置创建pdf(我使用Acrobat PDFmaker Office COM Addin)来做到这一点。我猜想代码毕竟是工作的,PDF本身就是造成问题的原因。

在字选择另存为PDF 选择 '快速和简单的PDF' 格式

变化 'Adobe PDF转换选项' 设置:

启用 - >转换文档信息
启用 - >制作PDF/A标准
禁用 - >从
禁用创建书签 - >转换评论

注:这对于将文件保存为PDF格式字。其他办公应用程序未经测试。

0

尝试以下操作:

$pdf = Zend_Pdf::load('./documents/agreements/_root/gegevens.pdf'); // Load pdf 
$font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA); // Set font 
foreach($pdf->pages as $pid => $page) // Apply settings+text to every page (total of 2) 
{ 
    $myPage = new Zend_Pdf_Page($page); 
    $myPage->setFont($font, 36); 
    $myPage->setAlpha(0.25); 
    $myPage->drawText('LALALALALALALA', 62, 260, 'UTF-8'); 
    $pdf->pages[$pid] = $page; 
} 
$pdf->save('./documents/agreements/Gegevens_'.$this->school_id.'.pdf'); // Save file 
+0

不幸的是,没有工作。 在PDF中有设置导致页面不可写入的可能性? – 2010-06-15 07:38:20

+0

是的,如果PDF是密码或写保护是可能的,那么你将无法写入它。上述方法可以在我的非受保护的pdf发票模板上正确使用 – Mark 2010-06-15 14:58:57

0

试试这个。

$pdf->pages[i]->drawText('LALALALALALALA', 62, 260, 'UTF-8'); 
相关问题