01/10/2018, 17:22

PDFTK – công cụ giúp bạn thao tác file PDF

Khi bạn thực hiện các dự án về multimedia, sẽ có lúc bạn sẽ cần làm những thao tác phức tạp trên các file PDF. PDFTK là một command-line tool mạnh giúp cho chúng ta những công việc này. 1. PDFTK giúp được chúng ta những gì? – Trộn các file PDF – Cắt các trang PDF thành một file PDF mới – ...

Khi bạn thực hiện các dự án về multimedia, sẽ có lúc bạn sẽ cần làm những thao tác phức tạp trên các file PDF. PDFTK là một command-line tool mạnh giúp cho chúng ta những công việc này.

1. PDFTK giúp được chúng ta những gì?
– Trộn các file PDF
– Cắt các trang PDF thành một file PDF mới
– Xoay các trang PDF
– Giải mã input(cần có password)
– Mã hóa output
– Điền các PDF forms bằng PDF Data, XFDF Data, Flatten Forms
– Gắn Background Watermark, Foreground Stamp
– Xuất báo cáo của PDF Metrics như là Metadata, Bookmarks, and Page Labels
– Cập nhật PDF Metadata
– Gắn file vào các trang PDF, PDF Document
– Giải nén các file đính kèm trong PDF…..
Và còn rất nhiều chức năng khác, các bạn có thể xem chi tiết tại trang chủ PDFTK

2. Một số thao tác của PDFTK
Mình xin đưa ra ví dụ nối nhiều file PDF thành một file PDF

pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf

Giải thích:
pdftk: đường dẫn đến file pdftk.exe
1.pdf: là file pdf thứ 1
2.pdf: là file pdf thứ 2
3.pdf: là file pdf thứ 3
123.pdf: là file cuối cùng được nối lại từ file 1.pdf, 2.pdf, 3.pdf

PDFTK còn giúp chúng ta nhiều việc khác hay ho hơn. Bạn có thể đọc các ví dụ PDFTK tại đây

3. Dùng PHP thực thi PDFTK

Rất nhiều bạn hỏi mình làm sao thực thi các command-line tool như thế này trong PHP. Câu trả lời đó là hàm exec() của PHP
Sau đây mình xin viết một demo nhỏ nhỏ ghép nhiều file PHP lại thành một file duy nhất

$output = array();
$return_var = 0;
exec("C:MyWebsitespdftk" "C:MyWebsitesfiel1.pdf" "C:MyWebsitesfile2.pdf" "C:MyWebsitesfile3.pdf" output "C:MyWebsitesfinal.pdf", $output, $return_var);

Lưu ý là việc dùng hàm exec() gọi các chương trình ngoài có thể xảy ra lỗi khiến cho chương trình ngoài không thực thi được. Với cách viết như trên bạn sẽ không biết được lỗi gì sẽ xảy ra. Các bạn nên đọc bài viết này để biết cách debug khi mà chương trình ngoài không thực thi được.

Xin hết :)


0