2009-02-13 34 views
5

Hiện nay tôi có thể tạo ra các file PDF từ hình ảnh trong Imagick với chức năng nàyTạo hai trang pdf với Imagick

$im->setImageFormat("pdf"); 
$im->writeImage("file.pdf"); 

Và nó có thể lấy nhiều trang với imagick như thế này

$im = new imagick("file.pdf[0]"); 
$im2 = new imagick("file.pdf[1]"); 

Nhưng là nó có thể lưu hai đối tượng hình ảnh vào hai trang không? (ví dụ về những gì tôi đang nghĩ, nó không thể như thế này)

$im->setImageFormat("pdf"); 
$im->writeImage("file.pdf[0]"); 

$im2->setImageFormat("pdf"); 
$im2->writeImage("file.pdf[1]"); 

Trả lời

13

Tôi biết điều này là quá hạn lâu, nhưng kết quả này đã xuất hiện khi tôi đang cố gắng làm điều tương tự. Đây là cách bạn tạo một tệp PDF nhiều trang bằng PHP và Imagick.

$images = array(
    'page_1.png', 
    'page_2.png' 
); 
$pdf = new Imagick($images); 
$pdf->setImageFormat('pdf'); 
if (!$pdf->writeImages('combined.pdf', true)) { 
    die('Could not write!'); 
} 
+1

Có cách nào để thực hiện điều này từ các đốm màu hình ảnh (trái ngược với các tệp hình ảnh) không? – dicroce

+0

Thao tác này sẽ tạo một trang pdf bằng cách sử dụng hình ảnh cuối cùng trong mảng –

1

Điều này có hiệu quả không?

$im->setImageFormat("pdf"); 
$im->writeImage("file1.pdf"); 

$im2->setImageFormat("pdf"); 
$im2->writeImage("file2.pdf"); 

exec("convert file*.pdf all.pdf"); 
+0

Điều này trả về lỗi Phân đoạn. Mặc dù rất hay: S –

+0

convert file1.pdf file2.pdf all.pdf cũng không hoạt động –

0

Tôi không biết php hoặc thư viện Imagick này, nhưng nếu gọi một chương trình bên ngoài là chấp nhận được tôi có thể giới thiệu các chương trình pdfjoin để kết nối các file pdf.

Nó có phụ thuộc vào pdflatex, vì vậy nếu đây là thứ bạn định chạy trên máy chủ, bạn có thể phải cài đặt thêm công cụ cao su, nhưng kết quả cuối cùng từ pdfjoin là rất tốt, vì vậy tôi nghĩ nó sẽ có giá trị nó.

1

CAM::PDF là giải pháp Perl tinh khiết cho thao tác PDF cấp thấp như thế này. Bạn có thể sử dụng công cụ dòng lệnh appendpdf.pl hoặc thực hiện theo cách lập trình như sau:

sử dụng CAM :: PDF; $ doc1 = CAM :: PDF-> mới ('file1.pdf'); $ doc2 = CAM :: PDF-> mới ('file2.pdf'); $ doc1-> appendPDF ($ doc2); $ doc1-> cleanoutput ('out.pdf');

Nếu bạn có thể tìm ra cách làm cho ImageMagick ghi thành chuỗi thay vì tệp (tôi không phải là chuyên gia ImageMagick ...) thì bạn tiết kiệm một số chi phí hiệu năng bằng cách giữ nguyên tất cả trong Perl.

(Tôi là tác giả của CAM :: PDF. Đây là phần mềm miễn phí: GPL + Nghệ thuật kép cấp phép).

1

câu trả lời chấp nhận được không làm việc cho tôi, kết quả là, nó luôn luôn tạo ra một pdf trang (hình ảnh cuối cùng từ constructor), để làm cho công việc này tôi đã có để có được mô tả tập tin đầu tiên, như thế này:

$images = array(
    'img1.png', 'img2.png' 
); 
$fp = fopen('combined.pdf', 'w'); 
$pdf = new Imagick($images); 
$pdf->resetiterator(); 
$pdf->setimageformat('pdf'); 
$pdf->writeimagesfile($fp); 
fclose($fp); 
Các vấn đề liên quan