Hướng dẫn build eBook đa định dạng (AZW, EPUB, MOBI, PRC)

Thảo luận trong 'Ebook truyện dịch' bắt đầu bởi Decepticon, 30/10/14.

  1. Decepticon

    Decepticon Thành viên kích hoạt

    Được thích:
    266
    Các phần mềm được sử dụng trong bài viết:
    - Aspose.Words Expres: https://www.mediafire.com/file/1l4l3u7xkp3shbb
    - Calibre: http://calibre-ebook.com/download_portable
    - Kindlegen: https://www.softpedia.com/get/Authoring-tools/Help-e-book-creators/KindleGen.shtml
    - Notepad++ 6.5.5: https://www.mediafire.com/file/8jl7qozxf3lp6ge

    Dưới đây là cách build eBook đa định dạng từ source HTML tạo bởi Word kết hợp Notepad++ của Decepticon

    Ưu điểm:
    - Nhanh hơn Calibre rất nhiều, đặc biệt với những truyện >1000 chương Calibre bó trym nhưng cách này thì ko.
    - Ebook tạo ra sẽ có mục lục NCX cực prồ giành riêng cho Kindle for Android/iOS.

    Nhược điểm:
    - Hơi thủ công tý :P


    Bước 1: Creating Raw ePub (Tạo ePub thô)
    Sau khi có source HTML eBook với phần lõi là Decepticon Form, các bạn convert nó thành ePub thô bằng Aspose.Words Express
    [​IMG]

    Bước 2: Tuning the ePub
    Đổi đuôi .epub sang .zip rồi giải nén. Tiếp đến vô thư mục OEBPS chỉnh sửa 3 file sau:

    1/ styles.css
    Thay toàn bộ styles.css bằng đoạn code sau:
    HTML:
    /***********************************************/
    /* Styles for document saved to a stream */
    /* Generated by Aspose.Words for .NET 10.2.0.0 */
    /***********************************************/
    
    body { font-family:'Times New Roman', serif }
    h1, h2, p { margin:0pt }
    h1 { color:#990000; font-size:1.40em; font-weight:normal; margin:0.20em 0em; page-break-after:avoid; page-break-before:always; text-align:center }
    h2 { color:#0099cc; font-size:1.40em; font-style:normal; font-weight:normal; margin:0.20em 0em 1.40em; page-break-after:avoid; page-break-before:always; text-align:center }
    
    .PMsoTitle { color:#ff0000; font-size:1.44em; margin:0.12em 0em 0em; text-align:center }
    .PMsoNormal { font-size:1em }
    .PMsoToc1 { font-size:1em; margin:0.16em 0em; text-align:center }
    .PMsoToc2 { font-size:1em; margin:0.12em 0em; text-indent:12pt }
    .PHeading0 { font-size:1.2em; margin:0.16em 0em 12pt; page-break-before:always; text-align:center }
    .PDeStyle { font-size:1.2em; margin:0.20em 0em 0.48em; text-indent:14.4pt }
    .FiLi { font-size:1.2em; margin:0.20em 0em 0.48em }
    span.Dropcap { font-size: 3em; font-weight: bold; float: left; margin-top: -0.27em; margin-right: 0.05em; margin-bottom: -0.25em }
    
    Các bạn thay color, font, font-size, in nghiêng/in đậm... của các Style (Title, Heading, Toc...) tùy theo sở thích nhé, dropcap thì tự tìm hiểu ta lười lém.
    2/ untitled.html
    Mở untitled.html bằng N++ các bạn sẽ thấy tất cả nội dung bị dồn vào một dòng duy nhất nên load rất lâu, cẩn phải fix lại, một số code rác không cần thiết cũng nên replace cho dễ nhìn.
    Đặc biệt, dưới mỗi Heading (H0, H1, H2...) sẽ là một dòng bị thụt vào giữa rất chi khốn nạn, chả hiểu thằng Aspose tự sướng thêm làm cái éo gì.

    Nếu làm ebook từ De Form các bạn chỉ việc chạy macro Fix_Untitled.html cho N++ có sẵn, còn không thì replace thủ công thế này:

    Find (chọn Regular Expression)Repalce
    1/ Fix liền dòng>(<[ph])>\n\1
    ([ph]>)<\1\n<
    ...............
    2/ Fix thụt dòng{Xóa text-align:center ở dòng bị thụt vào giữa}
    style="margin-bottom:14pt; text-align:center">>
    ...............
    3/ Fix URL<a href=<a style="text-decoration: none !important;" href=
    ...............
    4/ Fix code rác{Bỏ qua cũng được}
    ; text-decoration:underline(trống)
    style="margin-bottom:14pt">>
    <span>([^\n]+)</span>\1
    3/ filename.opf
    Thay toàn bộ từ đầu cho đến <manifest> bằng đoạn code sau:
    Mã:
    <?xml version="1.0" encoding="utf-8"?><package xmlns="http://www.idpf.org/2007/opf" version="2.0" unique-identifier="uid">
    <metadata xmlns:opf="http://www.idpf.org/2007/opf" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <dc:title>Tên_Truyện</dc:title>
    <dc:creator>Tên_Tác_Giả</dc:creator>
    <dc:identifier id="uid">Aspose</dc:identifier>
    <dc:language>en-US</dc:language>
    <dc:contributor opf:role="bkp">Aspose.Words for .NET 10.2.0.0</dc:contributor>
    <meta name="generator" content="Aspose.Words for .NET 10.2.0.0" />
    <meta name="cover" content="cover" />
    </metadata>
    <manifest>
    <item id="cover" href="Cover.jpg" media-type="image/jpeg" />

    Bước 3A: Finishing the ePub (bỏ qua nếu ko đọc ePub)
    Đóng gói lại như cũ chúng ta sẽ có 1 ePub hoàn chỉnh, đọc ngon lành trên PC.
    Cơ mà nếu source HTML quá nặng Android/iOS sẽ ko load được, khi đó các bợn bắt buộc phải convert sang định dạng MOBI (xem Bước 4) hoặc loại ePub có source HTML chia nhỏ bằng Calibre.

    Bước 3B: Convert OPF to MOBI
    - Đổi tên và vị trí thư mục Kindlegen sao cho đường dẫn tới kindlegen.exe là C:\Kindlegen\kindlegen.exe
    - Tạo một New Text Document nội dung như dưới rồi đổi tên thành Kindlegen.bat (đuôi .bat ko phải .txt nữa nhé)
    HTML:
    @echo off
    set /p file="Nhap duong dan file: " %=%
    set /p num="Nhap che do nen (0, 1 hoac 2): " %=%
    C:\Kindlegen\kindlegen.exe %file% -c%num%
    - Chạy Kindlegen.bat, kéo-thả filename.opf vào cửa sổ command, Enter...
    Kết quả ta sẽ được 1 ebook .MOBI có mục lục NCX như của Bigbang (mục lục 1 hay 2 lớp là do thiết kế ban đầu của các vị, ko liên quan đến ta)

    [​IMG]

    Bước 4: Unpack MOBI to AZW3 + PRC
    Thực tế MOBI do 2 thằng AZW3 và PRC ghép lại với nhau (MOBI 10MB = AZW3 4MB + PRC 3MB + HMTL 3MB), đó là lý do vì sao nó lại nặng như vậy
    Để có eBook nhỏ, nhẹ, xì tin các bợn nên tách nó thành AZW3 và PRC dùng cho mục đích khác nhau. AZW3 chất lượng y hệt MOBI, hoạt động tốt trên Kindle for Android/PC còn PRC cùi bắp thì... khỏi phải nói (ai sài iPorn ráng mà chịu)

    Cách làm: Cài đặt plugin Kindle Unpack cho Calibre, chọn Split KF8/MOBI.... Thời gian Unpack khá lâu, mất tận... 3 giây.

    Kindle Unpack: http://www.mobileread.com/forums/showthread.php?t=171529
    [​IMG]
     
    Chỉnh sửa cuối: 12/5/22
    babylong10 thích bài này.
  2. Decepticon

    Decepticon Thành viên kích hoạt

    Được thích:
    266
    Update 2017

    1/ Với file siêu nặng cỡ 2000c trở lên các bạn phải chia html làm đôi mới chạy được kindlegen.
    Cách chia xem thảo luận từ #91 trở đi nhá
    http://banlong.us/posts/718697/


    2/ Mặc định Kindle chỉ có lè tè vài font, muốn nhúng thêm font mới xem bài viết này
    http://banlong.us/posts/531435/

     
    Chỉnh sửa cuối: 29/3/17
  3. comeback

    comeback Thành viên kích hoạt

    Được thích:
    5,294
    1. source html sang Calibre mới chia nhỏ. Đâu nhất thiết phải epub rồi mới mobi, trực tiếp từ html cho gọn.
    2. Ta test rồi, các soft đọc epub trên Android phải chia nhỏ mới load nhanh được.(Ở đây ko phải do phần cứng, mà chuẩn chung của định dạng epub)
     
  4. Decepticon

    Decepticon Thành viên kích hoạt

    Được thích:
    266
    Mở file HTML loại save as từ Word bằng Calibre cực kỳ lâu, chia nhỏ còn lâu hơn nữa, file >20Mb thì khỏi phải nói, đơ máy là rất bt.. do đó ta mới nghĩ ra biện pháp củ chuối này.

    Còn HTML làm bằng script của Bigbang thì chưa test. Lão thử làm eBook Sủng Mị full xem. Tính thời gian từ khi covert HTML sang Mobi độ nén c1 và c2 là bao nhiêu lâu
     
    Chỉnh sửa cuối: 5/10/15
  5. comeback

    comeback Thành viên kích hoạt

    Được thích:
    5,294
    HTML save as từ Word thì ta chưa thử bao giờ nên cũng chả biết. Cơ mà làm từ Word thì làm prc cho nhanh. Chủ yếu ta làm mobi = kindlegen do có nhúng font, text shadow, dropcap..
    Với file HTML của ta làm thì import vào Calibre tầm 2-3 phút tùy truyện nặng nhẹ, chuyển sang epub thì tầm 5 phút.
    HTML sang mobi h2 bằng kindlegen thì 30' - 1h (máy ta cùi cpu 2 nhân). Với máy i5 hay i7 chắc là nhanh.
    p/s: Lão có file html từ word thì up lên ta thử chứ lâu rồi ko làm word wen mất rồi.:baby3:
     

Thành viên đang xem bài viết (Users: 0, Guests: 0)