Mengonversi EPUB ke PDF

Aspose.PDF for C++ memungkinkan Anda dengan mudah mengonversi file EPUB ke format PDF.

EPUB (singkatan dari electronic publication) adalah standar buku elektronik gratis dan terbuka dari International Digital Publishing Forum (IDPF). File memiliki ekstensi .epub. EPUB dirancang untuk konten yang dapat diatur ulang, yang berarti bahwa pembaca EPUB dapat mengoptimalkan teks untuk perangkat tampilan tertentu.

EPUB juga mendukung konten tata letak tetap. Format ini dimaksudkan sebagai format tunggal yang dapat digunakan oleh penerbit dan rumah konversi secara internal, serta untuk distribusi dan penjualan. Ini menggantikan standar Open eBook. Versi EPUB 3 juga didukung oleh Book Industry Study Group (BISG), sebuah asosiasi perdagangan buku terkemuka untuk praktik terbaik standar, penelitian, informasi, dan acara, untuk pengemasan konten.

Langkah-langkah konversi:

  1. Buat String Class untuk nama jalur dan nama file.
  2. Buat instance dari kelas EpubLoadOptions.
  3. Buat instance dari kelas Document dengan menyebutkan nama file sumber dan opsi.
  4. Muat dan Simpan file input.

Berikut cuplikan kode berikut menunjukkan cara mengonversi file EPUB ke format PDF dengan C++.

void ConvertEPUBtoPDF()
{
    std::clog << "EPUB to PDF convert: Start" << std::endl;
    String _dataDir("C:\\Samples\\Conversion\\");
    String infilename("aliceDynamic.epub");
    String outfilename("epub_test.pdf");
    auto options = MakeObject<EpubLoadOptions>();
    try {
    auto document = MakeObject<Document>(_dataDir + infilename, options);
    document->Save(_dataDir + outfilename);
    }
    catch (System::Exception ex) {
    std::cerr << ex->get_Message() << std::endl;
    }
    std::clog << "EPUB to PDF convert: End" << std::endl;
}

Konversi Teks ke PDF

Aspose.PDF untuk C++ mendukung fitur mengonversi teks biasa dan file teks pra-format ke format PDF.

Mengonversi teks ke PDF berarti menambahkan fragmen teks ke halaman PDF. Adapun file teks, kita berurusan dengan 2 jenis teks: pra-formatting (misalnya, 25 baris dengan 80 karakter per baris) dan teks tidak berformat (teks biasa). Bergantung pada kebutuhan kita, kita dapat mengontrol penambahan ini sendiri atau mempercayakannya kepada algoritma perpustakaan.

Konversi file teks biasa ke PDF

Dalam hal file teks biasa, kita dapat menggunakan teknik berikut:

  1. Buat Kelas String untuk nama path dan nama file.
  2. Baca file teks sumber menggunakan TextReader
  3. Instansiasi Objek Document.
  4. Tambahkan Page ke koleksi halaman dokumen.
  5. Buat objek baru dari TextFragment dan berikan objek TextReader ke konstruktor-nya.
  6. Tambahkan paragraf teks baru dalam koleksi paragraf dan berikan objek TextFragment.
  7. Muat dan Simpan file input.
void ConvertTextToPDF()
{
    std::clog << "Konversi Teks ke PDF: Mulai" << std::endl;
    String _dataDir("C:\\Samples\\Conversion\\");
    String infilename("sample.txt");
    String outfilename("TextToPDF.pdf");

    // Baca file teks sumber
    String content = System::IO::File::ReadAllText(_dataDir + infilename);

    // Instansiasi objek Document dengan memanggil konstruktor kosongnya
    auto document = MakeObject<Document>();

    // Tambahkan halaman baru ke koleksi Pages dari Document
    auto page = document->get_Pages()->Add();

    // Buat instance dari TextFragment dan berikan teks dari objek pembaca ke konstruktor-nya sebagai argumen
    auto text = MakeObject<TextFragment>(content);

    // Tambahkan paragraf teks baru dalam koleksi paragraf dan berikan objek TextFragment
    auto paragraphs = page->get_Paragraphs();
    paragraphs->Add(text);

    // Simpan file PDF yang dihasilkan
    document->Save(_dataDir + outfilename);
    std::clog << "Konversi Teks ke PDF: Selesai" << std::endl;
}

Mengonversi file teks yang sudah diformat ke PDF

Mengonversi teks yang sudah diformat mirip dengan teks biasa, tetapi Anda perlu melakukan beberapa tindakan tambahan seperti mengatur margin, tipe dan ukuran font. Jelas bahwa font tersebut harus monospace (misalnya Courier New).

Ikuti langkah-langkah ini untuk mengonversi teks yang sudah diformat ke PDF dengan C++:

  1. Instansiasi objek Document dengan memanggil konstruktor kosongnya.
  2. Atur margin kiri dan kanan untuk presentasi yang lebih baik.
  3. Instansiasi objek Document dan tambahkan halaman baru dalam koleksi Pages.
  4. Muat dan Simpan file gambar input.
void ConvertPreFormattedTextToPdf()
{
    std::clog << "Performatted Text to PDF convert: Start" << std::endl;
    String _dataDir("C:\\Samples\\Conversion\\");
    String infilename("rfc822.txt");
    String outfilename("TextToPDF.pdf");
    // Baca file teks sebagai array string
    auto lines = System::IO::File::ReadAllLines(_dataDir + infilename);

    // Instansiasi objek Document dengan memanggil konstruktor kosongnya
    auto document = MakeObject<Document>();

    // Tambahkan halaman baru dalam koleksi Pages pada Document
    auto page = document->get_Pages()->Add();

    // Atur margin kiri dan kanan untuk presentasi yang lebih baik
    page->get_PageInfo()->get_Margin()->set_Left(20);
    page->get_PageInfo()->get_Margin()->set_Right(10);
    page->get_PageInfo()->get_DefaultTextState()->set_Font(FontRepository::FindFont(u"Courier New"));
    page->get_PageInfo()->get_DefaultTextState()->set_FontSize(12);

    for (int index = 0; index < lines->get_Length(); index++)
    {
        // periksa apakah baris mengandung karakter "form feed"
        // lihat https://en.wikipedia.org/wiki/Page_break
        auto line = lines->idx_get(index);
        if (line.StartsWith(u"\x0c"))
        {
        if (document->get_Pages()->get_Count() > 3) break;
        page = document->get_Pages()->Add();
        // Atur margin kiri dan kanan untuk presentasi yang lebih baik
        page->get_PageInfo()->get_Margin()->set_Left(20);
        page->get_PageInfo()->get_Margin()->set_Right(10);
        page->get_PageInfo()->get_DefaultTextState()->set_Font(FontRepository::FindFont(u"Courier New"));
        page->get_PageInfo()->get_DefaultTextState()->set_FontSize(12);
        }
        else
        {
        // Buat instance TextFragment dan
        // masukkan baris ke dalam konstruktornya sebagai argumen
        auto text = MakeObject<TextFragment>(line);

        // Tambahkan paragraf teks baru dalam koleksi paragraf dan masukkan objek TextFragment
        page->get_Paragraphs()->Add(text);
        }
    }

    // Simpan file PDF hasil
    document->Save(_dataDir + outfilename);
    std::clog << "Performatted Text to PDF convert: End" << std::endl;
}

Konversi XPS ke PDF

Aspose.PDF untuk C++ mendukung fitur mengonversi file XPS ke format PDF. Periksa artikel ini untuk menyelesaikan tugas Anda.

Jenis file XPS terutama terkait dengan Spesifikasi Kertas XML oleh Microsoft Corporation. Spesifikasi Kertas XML (XPS), sebelumnya diberi nama kode Metro dan menggantikan konsep pemasaran Jalur Cetak Generasi Berikutnya (NGPP), adalah inisiatif Microsoft untuk mengintegrasikan pembuatan dan penayangan dokumen ke dalam sistem operasi Windows-nya.

Untuk mengonversi XPS ke PDF dengan Aspose.PDF untuk C++, kami telah memperkenalkan kelas bernama XpsLoadOption yang digunakan untuk menginisialisasi objek LoadOptions. Kemudian, objek ini dilewatkan sebagai argumen selama inisialisasi objek Document dan ini membantu mesin rendering PDF untuk menentukan format input dokumen sumber.

Cuplikan kode berikut menunjukkan proses mengonversi file XPS ke format PDF dengan C++.

void ConvertXPStoPDF()
{
    std::clog << "XPS to PDF convert: Start" << std::endl;
    String _dataDir("C:\\Samples\\Conversion\\");
    String infilename("sample.oxps");
    String outfilename("XPStoPDF.pdf");
    auto options = MakeObject<XpsLoadOptions>();
    try {
        auto document = MakeObject<Document>(_dataDir + infilename, options);
        document->Save(_dataDir + outfilename);
    }
    catch (System::Exception ex) {
        std::cerr << ex->get_Message() << std::endl;
    };
    std::clog << "XPS to PDF convert: Finish" << std::endl;
}

Mengonversi XML ke PDF

Format XML digunakan untuk menyimpan data terstruktur. Ada beberapa cara untuk mengonversi XML ke PDF di Aspose.PDF.

Mengonversi XSL-FO ke PDF

  1. Buat Kelas String untuk nama jalur dan nama file.
  2. Instansiasi objek XslFoLoadOption.
  3. Atur strategi penanganan kesalahan.
  4. Instansiasi Objek Dokumen.
  5. Save file gambar input.
void Convert_XSLFO_to_PDF()
{
    std::clog << "Konversi XSL-FO ke PDF: Mulai" << std::endl;
    String _dataDir("C:\\Samples\\Conversion\\");
    String infilenameXSL("c:\\samples\\employees.xslt");
    String infilenameXML("c:\\samples\\employees.xml");

     String outfilename("XMLFOtoPDF.pdf");
    // Membuat objek XslFoLoadOption
    auto options = new XslFoLoadOptions(infilenameXSL);
    // Menetapkan strategi penanganan kesalahan
    options->ParsingErrorsHandlingType = XslFoLoadOptions::ParsingErrorsHandlingTypes::ThrowExceptionImmediately;
    // Membuat objek Dokumen
    auto document = MakeObject<Document>(infilenameXML, options);
    document->Save(_dataDir + outfilename);
}