2014-05-19 4 views
0

나는 php imagick을 사용하여 이미지를 만들고 pdf로 변환합니다. PHP를 사용하여 imagick. PDF 형식이 enter image description here 같은imagick, php imagick의 pdf에서 페이지 나누기

$image = new Imagick(); 
    $height = 800; //height of the page; 
    $image->newImage(794, $height, "#f5f5f5"); 
    $image->setImageFormat("jpg"); 
    $card = new Imagick('card.jpg'); ; //get single card 

    $l_align = 190; //left alignment 
    for($i=0; $i < 4; $i++) //for creating multiple cards on a page 
    { 
     $image->compositeImage($card, Imagick::COMPOSITE_DEFAULT,10, ($l_align*$i)+10); 
     $image->compositeImage($card, Imagick::COMPOSITE_DEFAULT, 390, ($l_align*$i)+10); 
    } 
    $image->setResolution(72, 72); 
    $image->resetIterator(); 
    $combined = $image->appendImages(true); 


    $image->setImageFormat("pdf"); 
    $combined->writeImages('card.pdf', true); 
    header("Content-Type: application/pdf"); 
    header('Content-Disposition: attachment; filename="card.pdf"'); 

    echo file_get_contents('card.pdf'); 

얻을 무엇인가 :이 코딩. 이제 나는 pdf로 6 장씩 인쇄 할 때마다 페이지 나누기를 원합니다. 나는 imagick을 사용하고있다. 도와주세요. 미리 감사드립니다.

답변

1

이미지를 새 페이지로 추가하는 데 잘못된 기능을 사용하고 있습니다. addImage을 사용해야합니다.이 이미지는 현재 이미지의 맨 아래에 추가하는 append가 아닌 별도의 페이지로 새 이미지를 추가합니다.

이 작업의 예는 다음과 같습니다

$combined = null; 

$images = [ 
    '../../../images/Source1.jpg', 
    '../../../images/Source2.png', 
]; 

foreach ($images as $image) { 
    if ($combined == null) { 
     $combined = new Imagick(realpath($image)); 
    } 
    else { 
     $card = new Imagick(realpath($image)); ; //get single card 
     $combined->addImage($card); 
    } 
} 

$combined->setImageFormat("pdf"); 
$combined->writeImages('./card.pdf', true); 

BTW이 코드 예제에서 일어나는 이상한 물건 - 당신은 심지어 하나 개의 이미지를 추가하려고하고, 그리고 거기에 일을 'resetIterator는'무엇인가 ?

+0

감사합니다. 덕분에 도움이 많이되었습니다. @ Danack –

+0

질문에 답한 경우 언제든지 답변을 수락하십시오. – Danack