首页 > 其他分享 >pdf转word/text后换行问题

pdf转word/text后换行问题

时间:2024-06-02 09:01:45浏览次数:18  
标签:薄氏 薄姬 word text 刘邦 pdf out

pdf转word/text后换行问题

pdf转为word/text,或者从pdf复制一段文字,这段文字有很多换行(其实就相当于一行一段):

野史里说,楚汉争霸时期,高祖刘邦大败。

薄氏还是个姑娘的时候叫薄姬,逃难的时候占领了一个
无人居住的民宅。忽然有一天看见一个浑身是血,穿着盔甲
拿着兵器的男人闯进了自己的屋子,这个人就是刘邦。

薄姬听到后面有追兵,就把刘邦的盔甲和兵器藏了起
34

来。然后放了一大桶洗澡水。
这个只是野史,可信度不高,但是说明了薄氏的低微出
身。

  

于是,简单处理了下:

void pdfnewlineremove::onBtnProcessClicked()
{
    const QString newLine("\r\n");

	// mFileAbsPaths: 选择的多个待处理文件
    for (int i = 0; i < mFileAbsPaths.size(); i++) {
        QString filePath = mFileAbsPaths.at(i);
        qDebug() << "filePath: " << filePath;

        QFileInfo fInfo(filePath);
        QString fName = fInfo.baseName();
        qDebug() << "fName: " << fName;

        QString newFilePath(filePath);
		// 创建转换后的文件
        newFilePath.replace(fName, fName + "_new");
        qDebug() << "newFilePath: " << newFilePath;

        QFile newFile(newFilePath);
        if (!newFile.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) {
            MsgBoxUtil::warning(this, tr("无法创建新文件!"));
            return;
        }

		// 原文件编码:"utf-8",Windows换行(\r\n)
        QTextStream out(&newFile);
        out.setCodec("utf-8");

        // process
        QFile file(filePath);
        if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
            MsgBoxUtil::warning(this, tr("无法创建新文件!"));
            return;
        }

        QTextStream in(&file);
        in.setCodec("utf-8");
        bool isNewLine = true;
        while (!in.atEnd()) {
            QString line = in.readLine();
            if (line.isEmpty()) { // 空行
                continue;
            }

            // 页码
            QRegExp re("\\d*");
            if (re.exactMatch(line)) {
                qDebug() << "page: " << line;
                continue;
            }

            if (isNewLine && ui->checkBoxToHtml->isChecked()) {
                out << "<p>";
                isNewLine = false;
            }

            out << line;
			// 核心逻辑:如果某一行以“。”、“?”……等结尾,认为一段结束
			// 可进一步完善
            if (line.endsWith("。") || line.endsWith("?") || line.endsWith("!") ||
                    line.endsWith("」") || line.endsWith("”") ||
                    line.endsWith(".") || line.endsWith("?") ||
                    line.endsWith("!") || line.endsWith("\"")) {
                if (ui->checkBoxToHtml->isChecked()) {
                    out << "</p>";
                }
                out << newLine;
                isNewLine = true;
            }
        }
        file.close();
        newFile.close();
    }

    MsgBoxUtil::information(this, "转换完成!");
}

 

 作为制作电子书的我来说,勉强够用了。效果:

<p>野史里说,楚汉争霸时期,高祖刘邦大败。</p>

<p>薄氏还是个姑娘的时候叫薄姬,逃难的时候占领了一个无人居住的民宅。忽然有一天看见一个浑身是血,穿着盔甲拿着兵器的男人闯进了自己的屋子,这个人就是刘邦。</p>

<p>薄姬听到后面有追兵,就把刘邦的盔甲和兵器藏了起来。然后放了一大桶洗澡水。</p>

<p>这个只是野史,可信度不高,但是说明了薄氏的低微出身。</p>

  

https://github.com/RockyChing/qt_play/blob/main/qt_project/epub/pdfnewlineremove.cpp

标签:薄氏,薄姬,word,text,刘邦,pdf,out
From: https://www.cnblogs.com/rockyching2009/p/18226758

相关文章

  • 宝塔搭建wordexpress及WP搬家教程
     一、安装宝塔 yuminstall-ywget&&wget-Oinstall.shhttps://download.bt.cn/install/install_6.0.sh&&shinstall.shed8484bec 面板安装成功后,通过bt命令修改面板安全入口、用户名、密码。 云主机放行面板端口 登录bt面板,极速安装LNMP   ......
  • <context:component-scan> 标签
    <?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springfra......
  • 在 .NET8 应用程序中将HTML页面转换为 PDF
    在.NET8应用程序中将HTML页面转换为PDF2024年5月31日ExpertPDFHtmlToPdfConverter19.0.0解锁了性能提升和下一代功能,实现了无缝的HTML到PDF转换。ExpertPDFHtmlToPdfConverter是由OutsideSoftware开发的.NET库,它使程序员......
  • sensitive-word 敏感词 v0.16.1 新特性支持字典内存资源释放
    敏感词系列sensitive-word-admin敏感词控台v1.2.0版本开源sensitive-word-adminv1.3.0发布如何支持分布式部署?01-开源敏感词工具入门使用02-如何实现一个敏感词工具?违禁词实现思路梳理03-敏感词之StopWord停止词优化与特殊符号04-敏感词之字典瘦身05-敏感词之DFA......
  • Go-知识并发控制Context
    Go-知识并发控制Context1.介绍2.实现原理2.1接口定义2.2Deadline()2.3Done()2.4Err()2.5Value()3.空context4.cancelCtx4.1Done()4.2Err()4.3cancel()4.4WithCancel4.5例子4.6总结5.timerCtx5.1Deadline5.2cancel5.3WithDeadline5.4WithTimeout5.......
  • C#使用PdfPig分割合并PDF
    使用打印机扫描双面文档后,页码是交错且倒置的,因此想到使用C#获取PDF页面后重新排列,组成符合预期的PDF文件。基本思想就是分别获取2个PDF文档的页码,然后根据页码规则重新生成PDF文件。经查询发现PdfPig库能够轻松实现PDF文件重新排列,该类库基于Apache-2.0license,GitHub上有1.5kS......
  • Word文档自动化
    准备链接:https://pan.baidu.com/s/1M-5JV5zgzAojXsYNYbkg2g?pwd=5qqg提取码:5qqg文件内容展示2023年日历表打印版本.docx2023年学习计划.xlsx要求将2023年学习计划.xlsx中的内容添加到2023年日历表打印版本.docx对应的日期表格中。代码#bywyw-starfromdocx......
  • 【专题】2022年智慧城市白皮书报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=32732本白皮书对智慧城市的发展历程进行了归纳和总结,分析了发展实践中的新变化和新内涵,并提出了一系列新的智慧城市建设理念、架构和建议。阅读原文,获取专题报告合集全文,解锁文末29份智慧城市相关行业研究报告。其目的在于为建设新型智慧城市提供......
  • 【专题】2022母婴行业洞察报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33430我国出生人口数量在2022年为956万人,比去年减少了10%。多种因素影响了这一趋势,包括育龄人口减少、生育观念改变以及婚育年龄推迟。然而,与此同时,由于母婴人群消费水平不断提高,以及精细化喂养逐渐成为育儿的主流方式,我国母婴市场产业规模持续增长......
  • 民国漫画杂志《时代漫画》第36期.PDF
    时代漫画36.PDF:https://url03.ctfile.com/f/1779803-1248636233-8a4a9d?p=9586(访问密码:9586)《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。ps:资源来源网络!......