PDF转Epub

功能说明

将PDF文档转换为Epub文档

代码样例

bool ConvertToEpub(const wchar_t* pdf_path, const wchar_t* dest_path) {
    PDF2Epub pdf_to_epub;
    auto open_result = pdf_to_epub.Open(pdf_path);
    if (open_result == PDF2Epub::kOpenSuccess) {
        return pdf_to_epub.Save(dest_path);
}
return false;
}

 

方法:PDF2Epub::Open

  • 方法说明:打开PDF文档
  • 调用参数说明:

参数

类型

必须

说明

file_path

const char*或

const wchar_t*

PDF文档路径。

password

const unsigned char*

密码

password_length

size_t

密码长度

返回类型:

类型

说明

    /**

    * @brief 打开结果

    */

    enum OpenResult {

        kOpenFailed,

        kOpenSuccess,

        kOpenNeedPassword = 4,

    };

打开是否成功。

代码样例

PDF2Epub pdf_to_epub;
unsigned char pwd[100] = {  "123456" };
auto open_result = pdf_to_epub.Open(L"F:\\source\\test.pdf", pwd, 6u);
if (open_result != PDF2Epub::kOpenSuccess) {
    switch (open_result) {
        case PDF2Epub::kOpenFailed:
            std::cerr << "打开文档失败." << std::endl;
            break;
        case PDF2Epub::kOpenNeedPassword:
            std::cerr << "文档需要密码." << std::endl;
        default:
            break;
    }
}

 

方法:PDF2Epub::AddPageRange

  • 方法说明:添加转换页面范围,默认转换全部页面
  • 调用参数说明:

参数

类型

必须

说明

start

unsigned int

起始页面

end

unsigned int

结束页面

step

unsigned int

步进,默认值是1

返回类型:

类型

说明

  Void

代码样例

PDF2Epub pdf_to_epub;
auto open_result = pdf_to_epub.Open(L"F:\\source\\test.pdf");
if (open_result == PDF2Epub::kOpenSuccess) {
    pdf_to_epub.AddPageRange(2u,5u);
}

 

方法:PDF2Epub::SetRegion

  • 方法说明:设置转换页面矩形区域
  • 调用参数说明:

参数

类型

必须

说明

left

float

矩形区域左上角x轴坐标值

top

float

矩形区域左上角y轴坐标值

right

float

矩形区域右下角x轴坐标值

bottom

float

矩形区域右下角y轴坐标值

返回类型:

类型

说明

  Void

代码样例

PDF2Epub pdf_to_epub;
auto open_result = pdf_to_epub.Open(L"F:\\source\\test.pdf");
if (open_result == PDF2Epub::kOpenSuccess) {
    pdf_to_epub.SetRegion(100,300,200,200);
}

 

方法:PDF2Epub::GetIgnoreImage

    • 方法说明:获取忽略页面中的图片,默认为否

    返回类型:

    类型

    说明

      Bool

    是否忽略页面中的图片

    代码样例
    
    PDF2Epub pdf_to_epub;
    auto open_result = pdf_to_epub.Open(L"F:\\source\\test.pdf");
    if (open_result == PDF2Epub::kOpenSuccess) {
    pdf_to_epub.SetIgnoreImage(true);
    if (pdf_to_epub.GetIgnoreImage()) {
        std::cout << "忽略图片." << std::endl;
    }
    }
    

     

    方法:PDF2Epub::GetImageOfEntirePage

    • 方法说明:获取是否将每一页转换为一张图片,默认为否
              • 返回类型:

    类型

    说明

      bool

    是否将每一页转换为一张图片

    代码样例
    
    PDF2Epub pdf_to_epub;
    auto open_result = pdf_to_epub.Open(L"F:\\source\\test.pdf");
    if (open_result == PDF2Epub::kOpenSuccess) {
    pdf_to_epub.SetImageOfEntirePage(true);
    if (pdf_to_epub.GetImageOfEntirePage()) {
        std::cout << "整个页面转换为图片." << std::endl;
    }
    }
    

     

    方法:PDF2Epub::GetImageDpi

    • 方法说明:获取文档中图片的DPI
                • 返回类型:

    类型

    说明

      float

    DPI值

    代码样例
    
    PDF2Epub pdf_to_epub;
    auto open_result = pdf_to_epub.Open(L"F:\\source\\test.pdf");
    if (open_result == PDF2Epub::kOpenSuccess) {
        std::cout <<“DPI:”<< pdf_to_epub.GetImageDpi() << std::endl;
    }
    

     

    方法:PDF2Epub::SetIgnoreImage

    1. 方法说明:设置忽略页面中的图片
    2. 调用参数说明:

    参数

    类型

    必须

    说明

    ignore_image

    bool

    忽略页面中的图片

    返回类型:

    类型

    说明

      Void

    代码样例
    
    PDF2Epub pdf_to_epub;
    auto open_result = pdf_to_epub.Open(L"F:\\source\\test.pdf");
    if (open_result == PDF2Epub::kOpenSuccess) {
    pdf_to_epub.SetIgnoreImage(true);
    }
    

     

    方法:PDF2Epub::SetImageOfEntirePage

    • 方法说明:设置是否将每一页转换为一张图片
    • 调用参数说明:

    参数

    类型

    必须

    说明

    image_of_entire_page

    Bool

    是否将每一页转换为一张图片

    返回类型:

    类型

    说明

      Void

    代码样例
    
    PDF2Epub pdf_to_epub;
    auto open_result = pdf_to_epub.Open(L"F:\\source\\test.pdf");
    if (open_result == PDF2Epub::kOpenSuccess) {
    pdf_to_epub.SetImageOfEntirePage(true);
    }
    

     

    方法:PDF2Epub::SetImageDpi

    • 方法说明:设置转换后图片的DPI
    • 调用参数说明:

    参数

    类型

    必须

    说明

    dpi

    float

    图片的DPI

    返回类型:

    类型

    说明

      Void

    代码样例
    
    auto open_result = pdf_to_epub.Open(L"F:\\source\\test.pdf");
    if (open_result == PDF2Epub::kOpenSuccess) {
    pdf_to_epub.SetImageDpi(90);
    }
    

     

    方法:PDF2Epub::GetIgnoreLink

      • 方法说明:获取是否忽略页面中的超链接

    返回类型:

    类型

    说明

      bool

    是否忽略页面中的超链接

    代码样例
    
    PDF2Epub pdf_to_epub;
    auto open_result = pdf_to_epub.Open(L"F:\\source\\test.pdf");
    if (open_result == PDF2Epub::kOpenSuccess) {
    pdf_to_epub.SetIgnoreLink(true);
    if (pdf_to_epub.GetIgnoreLink()) {
        std::cout << "忽略超链接." << std::endl;
    }
    }
    

     

    方法:PDF2Epub::SetIgnoreLink

    • 方法说明:设置是否忽略页面中的超链接
    • 调用参数说明:

    参数

    类型

    必须

    说明

    ignore_link

    bool

    是否忽略页面中的超链接

    返回类型:

    类型

    说明

      Void

    代码样例
    
    PDF2Epub pdf_to_epub;
    auto open_result = pdf_to_epub.Open(L"F:\\source\\test.pdf");
    if (open_result == PDF2Epub::kOpenSuccess) {
    pdf_to_epub.SetIgnoreLink(true);
    }
    

     

    方法:PDF2Epub::SetCoverImage

    • 方法说明:设置是否忽略页面中的超链接
    • 调用参数说明:

    参数

    类型

    必须

    说明

    cover_image_file

    const wchar_t*或

    const char*

    图片路径

    image_format

    /**

    * @brief 图片格式

    */

    enum CoverImageFormat {

        kCoverImageFormatJpeg, /**< @brief JPEG 格式 */

        kCoverImageFormatPng,  /**< @brief PNG 格式 */

    };

    图片格式

    返回类型:

    类型

    说明

      Void

    代码样例
    
    PDF2Epub pdf_to_epub;
    auto open_result = pdf_to_epub.Open(L"F:\\source\\test.pdf");
    if (open_result == PDF2Epub::kOpenSuccess) {
    pdf_to_epub.SetCoverImage(L"F:\\output\\cover.jpeg",kCoverImageFormatJpeg);
    }
    

     

    方法:PDF2Epub::Save

    • 方法说明:保存转换的文档
    • 调用参数说明:

    参数

    类型

    必须

    说明

    dest_path

    const char*或

    const wchar_t*

    目标文件路径

    progress

    Progress

    保存进度通知对象,默认为空

    返回类型:

    类型

    说明

      Void

    代码样例
    
    PDF2Epub pdf_to_epub;
    auto open_result = pdf_to_epub.Open(L"F:\\source\\test.pdf");
    if (open_result == PDF2Epub::kOpenSuccess) {
    pdf_to_epub.SetCoverImage(L"F:\\output\\cover.jpeg",kCoverImageFormatJpeg);
    pdf_to_epub.Save(L"F:\\output\\test.epub");
    }