Sử dụng SWFTools tách từng trang của file pdf ra swf

SWFTools là một command line tool mạnh dùng chuyển đổi một số định dạng media sang định file của Adobe Flash(SWF). Bạn có thể chuyển từ các loại file như PDF, JPEG, PNG, GIF, WAV, AVI… sang loại file SWF.

Giả sử một ngày nào đó, sếp bạn yêu cầu bạn xây dựng website cho phép người dùng upload và đọc tài liệu online, những công việc bạn cơ bản cần làm là: cho upload bất cứ loại tài liệu và chuyển tài liệu về định dạng swf để người dùng chia sẻ và đọc online.

Theo kinh nghiệm cá nhân của mình (không biết có chuối lắm hay không :D), mình sẽ chuyển tất cả các file do người dùng upload như .doc, .ppt…. về dạng file PDF. Sau đó, mình sẽ tách mỗi trang của file PDF vừa được chuyển đổi ra từng file SWF một. Nếu các bạn chưa tìm được cách chuyển đổi sang định dạng PDF khi người dùng upload, bạn đọc sơ qua bài này để có thêm thông tin.

Bây giờ, mình sẽ trình bày cách bạn chuyển đổi từ PDF qua SWF.

1. Cài đặt SWFTools
Bạn download SWFTools tại đây. Sau đó bạn vào thư mục C:/Program Files/SWFTools, bạn copy 2 file có tên là swfextract.exe và pdf2swf.exe vào thư mục code web của bạn để bạn gọi cho việc chuyển đổi định dạng.

2. Một số cách chuyển đổi
a. Chuyển đổi từ một file PDF ra một file SWF

pdf2swf -f -s bitmap -T 9 input.pdf output.swf

b. Chuyển đổi từ một file PDF ra nhiều file SWF(mỗi SWF là một page)

pdf2swf -f -s bitmap -T 9 input.pdf output%.swf

pdf2swf: là được dẫn tuyệt đối đến file pdf2swf.exe
input.pdf: là đường dẫn tuyệt đối đến file pdf
output.swf: là đường dẫn tuyệt đối xuất file swf
Và -f, -s, bitmap -T, 9 là những option và parameter cho SWFTools. Bạn có thể đọc tại đây để tìm hiểu rõ hơn.
Bạn lưu ý là giữa việc chỉ xuất ra một file và xuất ra nhiều file chỉ có khác nhau dấu %

Ok! Thế là đủ rồi. Bạn có thể kết hợp bài viết chuyển đổi các tài liệu qua pdf, bài viết này và build một swf flash reader để xây dựng một website nho nhỏ dùng chia sẻ và đọc tài liệu online.

Have fun :D


43 comments

  1. Mình đang phải làm web đọc được file pdf trên web, đọc được bài này của bạn thật tốt cho mình quá, cám ơn bạn nhiều. Bạn cho mình hỏi một chút về việc sử dụng câu lệnh này như nào được không? “pdf2swf -f -s bitmap -T 9 input.pdf output.swf”
    Cám ơn bạn rất nhiều

    1. &1″ ,$output, $return_var);
      print_r($output);
      ?>

      Em dùng PHP nhưng viết đúng như anh nhưng nó không thực hiện gì mặc dù không có lỗi

      1. $output = array();
        $return_var = 0;
        exec(“D:\thietkeweb\AppServ\www\Text\modules\pdf2swf.exe -f -s bitmap -T 9 D:\thietkeweb\AppServ\www\Text\uploads\19121.pdf D:\thietkeweb\AppServ\www\Text\uploads\19121.swf 2>&1” ,$output, $return_var);
        print_r($output);

  2. Bạn dùng cmd để gõ lệnh. Các thông số thì theo bài viết mình đã ghi. Có gì thắc mắc bạn cứ comment

    1. Cám ơn bạn đã trả lời, mình có một thắc mắc là nếu mình dùng lệnh này thì chỉ có thể chuyển một file hay là chuyển toàn bộ các file pdf mà mình có. Mình thực hiện lệnh trên ở máy mình, còn máy khách hàng thì sao, khách hàng sao biết câu lệnh này để chuyển đổi. Mỗi lần chuyển lại phải thực hiện lại câu lệnh này?

      1. Bạn dùng ngôn ngữ gì thì bạn dùng ngôn ngữ đó thực thi command-line mỗi khi người dùng upload file pdf

        1. Vậy là mình phải viết một câu lệnh để thực thi command-line này mỗi khi người dùng up file lên à, mình dùng php. Vậy phải tìm hiểu tiếp rồi. Cám ơn bạn nhiều

        2. Mình quên không hỏi bạn, vậy cài đặt trên máy mình rồi lấy 2file như bạn nói, vậy trên máy khách hàng thì sao? Có cần cài đặt không hay chỉ cần có 2 file đó trong thư mục code của mình là được??

          1. Mình cũng không nhớ rõ. Bạn thử mượn máy một người quen test thử xem.

  3. c:\> Program file\easyPHP1-7\www\quanly\quanly\folder1\pdf2swf.exe -f -s bitmap 9 Program File\easyPHP1-7\www\quanly\quanly\foldel2\images Program File\easyPHP1-7\www\quanly\quanly\foldel2\images
    Mình viết câu lệnh như vậy và báo lỗi như dưới đây
    “Program is not recognizaed as an internal or external command, operable program or bacth file”
    Mình sai chỗ nào mà không thực thi được vậy, bạn có thể chỉ giùm mình không, nếu có thể xin nick yahoo của bạn để mình dễ hỏi hơn. Cám ơn bạn nhiều.

  4. c:\>” Program file\easyPHP1-7\www\quan ly\quanly\folder1″\pdf2swf.exe -f -s bitmap 9 c\Program file\easyPHP1-7\www\quan ly\quanly\folder\images\input.pdf c\Program files\easyPHP1-7\www\quan ly\quanly\folder\images\output.swf

    mình gõ vậy thử trên cmd trước thì báo lỗi

    error: Do you want output to go to web_vb\images\input.pdf or to web_vb\images\output.pdf
    Vậy là sao bạn?

    1. Mình không biết viết vậy đã đúng chưa, còn đường dẫn thì chuẩn không sai tẹo nào đâu bạn ạ. Mình cho file pdf output ra swf trên cùng một thư mục.

        1. rắc rối thật :D, có người nói với mình là không làm được, nhưng mình thấy các trang khác làm được thì tại sao mình lại không làm được nhỉ. Mình tìm hiểu rất nhiều và thấy cách của bạn là hợp lý nhất, nên mình muốn theo đuổi tới cùng, nhưng không được sự ủng hộ lắm :D

          1. Bạn cứ yên tâm. Kỹ thuật này được sử dụng không chỉ những website nước ngoài mà ngay cả ở Việt Nam cũng nhiều site sử dụng rồi.
            Mình đã thực hiện một project sử dụng kỹ thuật này.
            Bạn hãy dùng cmd gõ lệnh và cần xem lại các điều sau:
            1. Bạn kiểm tra lại đường dẫn đã đúng hay chưa.
            2. Nếu trong đường dẫn bạn có khoảng trắng thì bạn bỏ vào dấu nháy đôi bạn nhé(“). Ví dụ: “C:\ABC\Khoang trang\pdf2swf”.
            3. Xem các thông số đã đủ và đúng chưa.

            Cố lên bạn nhé! Chúc bạn thành công

  5. Chỉ cần c:\>” Program file\easyPHP1-7\www\quan ly\quanly\folder1″\pdf2swf.exe -f -s bitmap 9 c\Program file\easyPHP1-7\www\quan ly\quanly\folder\images\input.pdf c\Program files\easyPHP1-7\www\quan ly\quanly\folder\images\output.swf là chuyển được thôi ah
    Bạn cho mình demo đi

  6. Ban oi , cho minh hoi chut ,
    minh thuc hien = dos cua winxp thi no ok .
    nhung khi dung exec() cua php thi no k duoc .

    Giup minh voi

  7. ban co the demo giup minh cai path giong nhu tren duoc k ?
    Host cua minh dung linux , thi path the nao ? public_html/…
    Giup minh voi :
    /*exec(“C:\MyWebsites\pdftk” “C:\MyWebsites\fiel1.pdf” “C:\MyWebsites\file2.pdf” “C:\MyWebsites\file3.pdf” output “C:\MyWebsites\final.pdf”, $output, $return_var);*/

  8. Minh viet y nguyen nhu the nay , nhưng nó không báo lỗi gì hết trơn,mà cũng k tạo cho mình file swf :
    /*
    $output = array();
    $return_var = 0;

    exec(“/public_html/viewhtml/swf/pdf2swf.exe -f -s bitmap -T 9 /public_html/viewhtml/swf/test.pdf /public_html/viewhtml/swfoutput2.swf 2>&1”,$output, $return_var);
    print_r($output);

    */

  9. /*
    $output = array();
    $return_var = 0;

    exec(“/public_html/viewhtml/swf/pdf2swf.exe -f -s bitmap -T 9 /public_html/viewhtml/swf/test.pdf /public_html/viewhtml/swf/output2.swf 2>&1”,$output, $return_var);
    print_r($output);
    */

    1. Bạn kiểm tra quyền thực hiện command nha. Khi bạn mở command prompt(màn hình dos) lên gõ, bạn là administrator của máy. Khi bạn thực thi bằng exec, bạn là Internet User. Bạn kiểm tra xem Internet user có quyền thực thi command prompt(màn hình dos) không

    1. Bạn bị “Permission denied”. Mình đã nói ở trên rồi đó bạn. Bạn kiểm tra lại quyền thực thi command prompt(màn hình dos). Bạn phải share quyền execute cho Internet User. Mình dùng Windows 2003 server nên mình sẽ share quyền cho IIS user. Mình không dùng Linux, nên không rõ trên Linux là user gì tương ứng. Bạn google thử xem.

  10. Minh hỏi bọn host thì nó bảo host k support .exe
    Còn :
    Bạn phải share quyền execute cho Internet User.
    Cai nay minh k hieu lam.

  11. Bạn cho mình hỏi:

    – Bạn có thuê hẳn server riêng không bạn? Nếu bạn chỉ thuê host thôi để đặt source code web thì không phát triển được ứng dụng như thế này được.
    – Thứ 2 là bạn đang sử dụng SWFTool version dành cho Linux hay bạn sử dụng version cho Windows?

  12. minh la sinh vien , thi lam gi co xien` theo han con server rieng.
    Tai sao host lai k phat trien dc vay ban.

  13. Vấn đề cũng đơn giản thôi:
    – Thứ 1: hosting sẽ ngăn bạn thực thi file exe. Nếu họ cho phép người thuê hosting thực thi file exe ==> hacker cũng sẽ upload được file exe chứa virus lên host họ và thực thi file exe có virus đó ==> thì chuyện gì sẽ xảy ra?
    – Những site dạng này đòi hỏi xử lý nặng, chiếm dụng CPU nhiều. Mình giả sử có 200 người cùng vào site của bạn upload và chuyển PDF sang SWF thì server của người cho thuê hosting chỉ có ngủm cù nèo ==> những site cùng nằm trên hosting với bạn cũng ngủm theo.
    – Ngoài ra thuê hosting bạn sẽ bị giới hạn nhiều thứ bạn cần để thực hiện điều này

  14. mình hỏi bạn chút :
    Khi user upload pdf lên , sao mình k cho họ xem = file pdf luôn mà phải convert nó tới flash swf.

  15. khi minh download version danh cho linux , thi minh k biet cai dat như thế nào để lấy được 2 file này swfextract.exe và pdf2swf.exe

  16. Mình cũng đang nghiên cứu về làm 1 web ASP.net đọc tài liệu Online. Mình cũng đã tìm hiểu về cách chuyển này nhưng vì mình lập trình còn gà nên chưa làm được. Bạn nào có 1 ProJect nhỏ về Upload và chuyển qua SWF ko. Mình xin cảm ơn rất rất nhiều nếu được các bạn chia sẻ. Thân

Leave a Reply

Your email address will not be published. Required fields are marked *