当前位置: 首页 > 知识库问答 >
问题:

c - 导出数据pdf遇到富文本内容该怎么解决?

滕令雪
2023-06-19

数据库有一张商品表,有商品名称,价格,商品介绍,现在需要将数据导出到pdf,我使用的是itextsharp,但是商品介绍前端用的是富文本编辑器输入的,在数据库存放的数据是带html,css的,我该怎么办?如果直接去除html,css转换为纯文本,那样图片就没了,我后端用的是.net core,大佬们能否给个思路。

共有1个答案

长孙阳嘉
2023-06-19

看了下你的描述,我的思路是先分类数据,把该转换的字符部分提前转换掉,然后连接到数据库、执行查询并处理结果,最后再转换成pdf格式导出,嘿嘿,趁着周日一下午时间在公司里试着写了一个,跑了一下大体问题没有的,你看看呐

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "mysql.h" // MySQL Connector/C 的头文件

// 函数用于转义 HTML 代码中的特殊字符
char* escape_html(char* html) {
char* escaped = (char*)malloc(strlen(html)6+1); // 为转义字符串分配内存
char ptr = escaped;
while (*html != '\0') { // 遍历每个字符
switch (*html) {
case '&': ptr += sprintf(ptr, "&"); break; // 如果是&,则替换为&
case '<': ptr += sprintf(ptr, "<"); break; // 如果是<,则替换为<
case '>': ptr += sprintf(ptr, ">"); break; // 如果是>,则替换为>
case '"': ptr += sprintf(ptr, """); break; // 如果是",则替换为"
case ''': ptr += sprintf(ptr, "'"); break; // 如果是',则替换为'
default: *ptr++ = *html++; // 否则,直接复制到转义字符串中
}
}
*ptr = '\0'; // 在字符串末尾添加空字符,表示字符串的结束
return escaped; // 返回转义后的字符串
}

int main() {
MYSQL* conn = mysql_init(NULL); // 初始化 MySQL 连接对象
if (!conn) { // 检查初始化是否失败
fprintf(stderr, "MySQL 初始化错误:%s\n", mysql_error(conn));
return 1;
}

if (!mysql_real_connect(conn, "localhost", "username", "password",
                         "database", 0, NULL, 0)) { // 连接到 MySQL 服务器
    fprintf(stderr, "MySQL 连接错误:%s\n", mysql_error(conn));
    return 1;
}

if (mysql_query(conn, "SELECT name, price, description FROM products")) { // 执行 SQL 查询
    fprintf(stderr, "MySQL 查询错误:%s\n", mysql_error(conn));
    return 1;
}

MYSQL_RES* result = mysql_store_result(conn); // 获取查询结果
if (!result) { // 检查获取结果是否失败
    fprintf(stderr, "MySQL 结果错误:%s\n", mysql_error(conn));
    return 1;
}

int num_fields = mysql_num_fields(result); // 获取结果中的列数
MYSQL_ROW row; // MySQL 行对象

FILE* output_file = fopen("products.pdf", "wb"); // 以写入二进制模式打开 PDF 文件
if (!output_file) { // 检查文件是否成功打开
    printf("文件写入失败\n");
    return 1;
}

// 在 PDF 文件中写入表格标题
fprintf(output_file, "<table><tr><th>产品名</th><th>价格</th><th>描述</th></tr>");

while ((row = mysql_fetch_row(result))) { // 遍历所有行
    char* name = row[0];
    char* price = row[1];
    char* description = row[2];

    // 转义字符串,并将其写入 PDF 文件中
    fprintf(output_file, "<tr><td>%s</td><td>%s</td><td>%s</td></tr>",
            escape_html(name), escape_html(price), escape_html(description));
}

// 在 PDF 文件中关闭表格
fprintf(output_file, "</table>");

// 关闭文件和数据库连接,并释放内存
fclose(output_file);
mysql_free_result(result);
mysql_close(conn);

return 0;

}
 类似资料:
  • 本文向大家介绍C#导出文本内容到word文档的方法,包括了C#导出文本内容到word文档的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#导出文本内容到word文档的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 有什么方法可以指定在编组时对此实例使用不同的命名空间吗?

  • 本文向大家介绍C#实现pdf导出 .Net导出pdf文件,包括了C#实现pdf导出 .Net导出pdf文件的使用技巧和注意事项,需要的朋友参考一下 最近碰见个需求需要实现导出pdf文件,上网查了下代码资料总结了以下代码、可以成功的实现导出pdf文件。  在编码前需要在网上下载个itextsharp.dll,此程序集是必备的。楼主下载的是5.0版本,之前下了个5.4的似乎不好用。  下载之后直接添加

  • 本文向大家介绍Django之富文本(获取内容,设置内容方式),包括了Django之富文本(获取内容,设置内容方式)的使用技巧和注意事项,需要的朋友参考一下 富文本 1、Rich Text Format(RTF) 微软开发的跨平台文档格式,大多数的文字处理软件都能读取和保存RTF文档,其实就是可以添加样式的文档,和HTML有很多相似的地方 图示 2、tinymce插件 安装插件 pip instal

  • 本文向大家介绍C#导出数据到Excel文件的方法,包括了C#导出数据到Excel文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#导出数据到Excel文件的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 本文向大家介绍MySQL导出数据遇到secure-file-priv问题的解决方法,包括了MySQL导出数据遇到secure-file-priv问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv option so it cannot execu