tami: zur Info: PDFs zusammenfassen in einem Ordner mit ZF2 - OOP

Beitrag lesen

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