hi tami,
im Ordner mit den PDF-Ordnern:
<?php
// Zend and ZendPdf and Rob must be in same Directory:
$basePath = 'D:\xampplite\htdocs\ZFTest';
// autoload und namespaces
require_once $basePath . "/Zend/Loader/StandardAutoloader.php";
$loader = new Zend\Loader\StandardAutoloader(array('autoregister_zf' => true));
$loader->register();
$loader->registerNamespace('ZendPdf', $basePath . '/ZendPdf');
$loader->registerNamespace('Rob', $basePath . '/Rob');
use ZendPdf\PdfDocument;
use Rob\SumPdfsInFolders;
//choose foldernames (in same directory as this php-script)
$folderNames = array("Ausgang","Eingang","Fremd");
new SumPdfsInFolders($folderNames);
Im Basefolder (Zend, ZendPdf) im Ordner Rob mit Dateinamen "SumPdfsInFolders.php":
<?php
namespace Rob;
use ZendPdf\PdfDocument;
//takes folderslist and puts all pdfs of each folder in one pdf named as the folder
// documents must all be plain, no links to mailadresses, links do not work with ZendPdf at End of 2014
class SumPdfsInFolders {
//filelist of folders
private $_fileNames = array();
//will be object - PdfDocument
private $_mergedPage = NULL;
private function _message($message) {
echo "message: " . $message . "\n";
}
//walk filenames an clone
private function _walkAndClone() {
foreach ($this->_fileNames as $fileName) {
$this->_clonePageAndAdd($fileName);
}
}
//clone page and append to merge-document
private function _clonePageAndAdd($fileName) {
$tmpPdf = PdfDocument::load($fileName);
foreach($tmpPdf->pages as $page){
$clonedPage = clone $page;
$this->_mergedPdf->pages[] = $clonedPage;
}
}
public function __construct($folderNames) {
foreach ($folderNames as $folderName) {
$this->_mergedPage = new PdfDocument();
$this->_fileNames = glob($folderName . "/*.pdf");
$this->_walkAndClone();
$this->_mergedPage->save($folderName . '.pdf');
$this->_message($folderName . " created");
}
}
}
Wie im Kommentar geschrieben, funktioniert das nicht, wenn in den PDFs Links drinne sind wie mailto: über einer Mailadresse. Das muss man dann erst mit nem PDF-Drucker drucken.
mfg
tami