تحويل EPUB إلى PDF

يسمح Aspose.PDF for C++ بسهولة تحويل ملفات EPUB إلى صيغة PDF.

EPUB (اختصار لـ electronic publication) هو معيار كتاب إلكتروني مجاني ومفتوح من المنتدى الدولي للنشر الرقمي (IDPF). الملفات تحمل الامتداد .epub. تم تصميم EPUB للمحتوى القابل لإعادة التدفق، مما يعني أن قارئ EPUB يمكنه تحسين النص لجهاز عرض معين.

يدعم EPUB أيضًا المحتوى ذو التخطيط الثابت. تم تصميم التنسيق كتنسيق فردي يمكن للناشرين وبيوت التحويل استخدامه داخليًا، وكذلك للتوزيع والبيع. إنه يحل محل معيار Open eBook. يتم أيضًا اعتماد نسخة EPUB 3 من قبل مجموعة دراسة صناعة الكتاب (BISG)، وهي جمعية تجارية رائدة في مجال الكتب لأفضل الممارسات المعيارية والبحث والمعلومات والفعاليات، لتغليف المحتوى.

خطوات التحويل:

  1. قم بإنشاء فئة سلسلة لاسم المسار واسم الملف.
  2. قم بإنشاء مثيل للفئة خيارات تحميل Epub.
  3. قم بإنشاء مثيل للفئة المستند مع ذكر اسم الملف المصدر والخيارات.
  4. قم بتحميل الملف واحفظه.

الشفرة التالية توضح لك كيفية تحويل ملفات EPUB إلى تنسيق PDF باستخدام 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;
}

تحويل النص إلى PDF

Aspose.PDF لـ C++ يدعم ميزة تحويل النص العادي وملف النص المسبق التنسيق إلى تنسيق PDF.

تحويل النص إلى PDF يعني إضافة أجزاء من النص إلى صفحة PDF. أما بالنسبة لملفات النصوص، فنحن نتعامل مع نوعين من النصوص: التنسيق المسبق (على سبيل المثال، 25 سطرًا بـ 80 حرفًا لكل سطر) والنص غير المنسق (النص العادي). اعتمادًا على احتياجاتنا، يمكننا التحكم في هذه الإضافة بأنفسنا أو إسنادها إلى خوارزميات المكتبة.

تحويل ملف نصي عادي إلى PDF

في حالة الملف النصي العادي، يمكننا استخدام التقنية التالية:

  1. إنشاء فئة سلسلة لاسم المسار واسم الملف.
  2. قراءة ملف النص المصدر باستخدام قارئ النص
  3. إنشاء كائن وثيقة.
  4. إضافة صفحة إلى مجموعة الصفحات في الوثيقة.
  5. إنشاء كائن جديد من TextFragment وتمرير كائن TextReader إلى المنشئ الخاص به.
  6. إضافة فقرة نصية جديدة في مجموعة الفقرات وتمرير كائن TextFragment.
  7. تحميل وحفظ الملف المدخل.
void ConvertTextToPDF()
{
    std::clog << "Text to PDF convert: Start" << std::endl;
    String _dataDir("C:\\Samples\\Conversion\\");
    String infilename("sample.txt");
    String outfilename("TextToPDF.pdf");

    // Read the source text file
    String content = System::IO::File::ReadAllText(_dataDir + infilename);

    // Instantiate a Document object by calling its empty constructor
    auto document = MakeObject<Document>();

    // Add a new page in Pages collection of Document
    auto page = document->get_Pages()->Add();

    // Create an instance of TextFragmet and pass the text from reader object to its constructor as argument
    auto text = MakeObject<TextFragment>(content);

    // Add a new text paragraph in paragraphs collection and pass the TextFragment object
    auto paragraphs = page->get_Paragraphs();
    paragraphs->Add(text);

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

تحويل ملف نصي مهيأ مسبقاً إلى PDF

تحويل النص المهيأ مسبقاً يشبه النص العادي ولكن تحتاج إلى اتخاذ بعض الإجراءات الإضافية مثل ضبط الهوامش، نوع الخط وحجمه. من الواضح أن الخط يجب أن يكون ثابت العرض (على سبيل المثال Courier New).

اتبع هذه الخطوات لتحويل النص المهيأ مسبقاً إلى PDF باستخدام C++:

  1. إنشاء كائن Document عن طريق استدعاء منشئه الفارغ.
  2. ضبط الهوامش اليسرى واليمنى لتحسين العرض.
  3. إنشاء كائن Document وإضافة صفحة جديدة في مجموعة Pages.
  4. تحميل وحفظ ملف الصورة المدخل.
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");
    // قراءة ملف النص كصفيف من السلاسل
    auto lines = System::IO::File::ReadAllLines(_dataDir + infilename);

    // إنشاء كائن Document عن طريق استدعاء منشئه الفارغ
    auto document = MakeObject<Document>();

    // إضافة صفحة جديدة في مجموعة Pages من Document
    auto page = document->get_Pages()->Add();

    // ضبط الهوامش اليسرى واليمنى لتحسين العرض
    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++)
    {
        // التحقق مما إذا كانت السطر يحتوي على حرف "تغذية الصفحة"
        // انظر 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();
        // ضبط الهوامش اليسرى واليمنى لتحسين العرض
        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
        {
        // إنشاء مثيل لـ TextFragment و
        // تمرير السطر إلى منشئه كوسيطة
        auto text = MakeObject<TextFragment>(line);

        // إضافة فقرة نصية جديدة في مجموعة الفقرات وتمرير كائن TextFragment
        page->get_Paragraphs()->Add(text);
        }
    }

    // حفظ ملف PDF الناتج
    document->Save(_dataDir + outfilename);
    std::clog << "Performatted Text to PDF convert: End" << std::endl;
}

تحويل XPS إلى PDF

Aspose.PDF for C++ يدعم ميزة تحويل ملفات XPS إلى تنسيق PDF. تحقق من هذه المقالة لحل مهامك.

نوع ملف XPS يرتبط أساسًا بمواصفات الورق XML من قبل شركة مايكروسوفت. مواصفات الورق XML (XPS)، كانت تعرف سابقًا بالاسم الرمزي Metro وتشمل مفهوم التسويق لمسار الطباعة من الجيل التالي (NGPP)، وهي مبادرة مايكروسوفت لدمج إنشاء المستندات وعرضها في نظام التشغيل Windows.

من أجل تحويل XPS إلى PDF باستخدام Aspose.PDF لـ C++، قمنا بتقديم فئة تسمى XpsLoadOption والتي تُستخدم لتهيئة كائن LoadOptions. لاحقًا، يتم تمرير هذا الكائن كوسيط أثناء تهيئة كائن Document ويساعد محرك عرض PDF في تحديد تنسيق إدخال المستند المصدر.

يوضح مقطع الشفرة التالي عملية تحويل ملف XPS إلى تنسيق PDF باستخدام 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;
}

تحويل XML إلى PDF

يستخدم تنسيق XML لتخزين البيانات المنظمة. هناك عدة طرق لتحويل XML إلى PDF في Aspose.PDF.

تحويل XSL-FO إلى PDF

  1. إنشاء فئة سلسلة لاسم المسار واسم الملف.
  2. إنشاء كائن XslFoLoadOption.
  3. تعيين استراتيجية معالجة الأخطاء.
  4. إنشاء كائن وثيقة. احفظ ملف الصورة المدخلة.
void Convert_XSLFO_to_PDF()
{
    std::clog << "XSL-FO to PDF convert: Start" << std::endl;
    String _dataDir("C:\\Samples\\Conversion\\");
    String infilenameXSL("c:\\samples\\employees.xslt");
    String infilenameXML("c:\\samples\\employees.xml");

     String outfilename("XMLFOtoPDF.pdf");
    // Instantiate XslFoLoadOption object
    auto options = new XslFoLoadOptions(infilenameXSL);
    // Set error handling strategy
    options->ParsingErrorsHandlingType = XslFoLoadOptions::ParsingErrorsHandlingTypes::ThrowExceptionImmediately;
    // Create Document object
    auto document = MakeObject<Document>(infilenameXML, options);
    document->Save(_dataDir + outfilename);
}