java 请使用poi ,pdfbox

试了以下java的方式还是不错的,poi的问题就是版本匹配问题,能把人迷惑,不过确实可以用,官方网站资料齐全,笔者尝试了以下,虽然可以但是没有使用libreoffice那么方便,所以最后使用go 语言调用libreoffice 最为经济实用。
新增加java转换 在最下面

go nodejs

使用子进程方式可以直接调用libreoffice 和 imagemagick
另外 node 可以使用 pdf2png.js
Install: npm install pdf2png
这个使用ghostscript 来转换,windows下不用安装。但我依然推荐libreoffice 和imagemagick,最好直接调用可执行文件。

c++

以上使用go node 这种方式转换是可行的,如果想少装一个imagemagick,可以使用c 语言的mupdf,这个我发现很多人不知道,使用libreoffice 转换 office文件后成pdf,然后,接下来另外一种选择就是使用mupdf转换pdf成为png图片,接下来着重说明这种方式,show me the code,直接上代码

int main(int argc, char **argv)
{//10 个线程_THREAD_NUM = 10;//exe 输入文件名 输出文件地址if (argc < 3){outjson_string(-1, "more parameter!:lightpdf2png sourcepathname savepath");return EXIT_FAILURE;//exit(0);}char *filename = argv[1]; // argc >= 2 ? argv[1] : "e:\\d.pdf";char *filedir  = argv[2];pthread_t *thread = NULL;fz_locks_context locks;pthread_mutex_t mutex[FZ_LOCK_MAX];char buffer[128];int i,pos;// Initialize FZ_LOCK_MAX number of non-recursive mutexes.for (i = 0; i < FZ_LOCK_MAX; i++){if (pthread_mutex_init(&mutex[i], NULL) != 0)fail("pthread_mutex_init()");}for (i = 0; i < 3; i++)pthread_mutex_init(&_mutex_page[i], NULL);locks.user = mutex;locks.lock = lock_mutex;locks.unlock = unlock_mutex;_ctx = fz_new_context(NULL, &locks, FZ_STORE_UNLIMITED);fz_register_document_handlers(_ctx);char *utf8f = to_utf8(NULL, filename , 0);fz_try(_ctx)_doc = fz_open_document(_ctx, utf8f);fz_catch(_ctx){outjson_string(-1, fz_caught_message(_ctx));//sprintf(buffer, "{'ret':-1,'info':'%s'}", fz_caught_message(_ctx));//fprintf(stdout, buffer);fz_drop_context(_ctx);return EXIT_FAILURE;}//加上后缀get_file_path(filedir, utf8f, _file_flag, "%04d.png");free(utf8f);_page_total = fz_count_pages(_ctx, _doc);if (_page_total > 0){outjson_int(1, _page_total);}else{outjson_int(-1, -1);return EXIT_FAILURE;}fflush(NULL);//fprintf(stderr, "spawning %d threads, one per page...\n", _THREAD_NUM);thread = malloc(_THREAD_NUM * sizeof(pthread_t));for (i = 0; i < _THREAD_NUM; i++){if (pthread_create(&thread[i], NULL, renderer2, _ctx) != 0)fail("pthread_create()");}for (i = 0; i < _THREAD_NUM; i++){if (pthread_join(thread[i], (void **)NULL) != 0)fail("pthread_join");}fprintf(stderr, "trans over!\n");free(thread);//free(_data);// Finally the document is closed and the main thread's// context is freed.fz_drop_document(_ctx, _doc);fz_drop_context(_ctx);return 0;
}

笔者使用mupdf成功地将pdf 多线程快速将pdf 转成png图片,比其他语言都要快很多。使用go,node等语言调用子进程后抓取控制台输出或是使用一个http get方式给主进程通知信息,这样就是在c里面再实现一个http client,不过很容易,我的文章里面有简易httpclient,native,无依赖

python

是可以,不建议使用,如果使用这个,请使用go方式,因为go可以编译成可执行程序,省去了安装python的过程。

增加java 转换使用libreoffice

    public static boolean convertOffice2PDF(String in, String outpdf){long start = System.currentTimeMillis();String cmd;String osName = System.getProperty("os.name");if (osName.contains("Windows")) {cmd = "cmd /c start soffice --headless --invisible --convert-to pdf:writer_pdf_Export " + in+ " --outdir " + outpdf;}else {cmd = "libreoffice --headless --invisible --convert-to pdf:writer_pdf_Export " + in+ " --outdir " + outpdf;}boolean flag = executeCommand(command);long end = System.currentTimeMillis();logger.debug("用时:{} ms", end - start);return flag;}public static boolean executeCommand(String cmd) {logger.debug("convert2PDF cmd : {}", cmd);Process process;try {process = Runtime.getRuntime().exec(cmd);// } catch (IOException e) {logger.error(" convert {} error", command, e);return false;}int exitStatus = 0;try {exitStatus = process.waitFor();// 0 is ok} catch (InterruptedException e) {logger.error("error of convert2PDF {}", command, e);return false;}if (exitStatus != 0) {logger.error("convertOffice2PDF {}", exitStatus);} else {logger.debug("convertOffice2PDF ok {}", exitStatus);}process.destroy(); logger.info("the process over\n");return true;}  

office 转pdf中文乱码问题:

1、查看fonts目录:

cat /etc/fonts/fonts.conf | grep fon
得知字体存放位置如:/usr/share/fonts

2: 拷贝字体

把Windows下的字体C:\Windows\Fonts下的宋体,如 simsun.ttc,上传到/usr/share/fonts下

智慧讲台:office 文件 pdf 文件 转成 png图片相关推荐

  1. office 转 pdf文件

    找过很多地方都找不到用php实现"office 转 pdf文件"的,最后只能用Linux命令行来做了.如下: 主要就是centos+libreoffice+unoconv+Xvfb ...

  2. java flexpaper_java web word文件 pdf文件在线预览源码(flexpaper)

    [实例简介]java web word文件 pdf文件在线预览源码 经过测试 [实例截图] [核心代码] BrowsenOnline html, body{ height:100%; } body { ...

  3. 超详细教程-爬取网站内容生成HTML文件/pdf文件

    效果展示: 下载的PDF文件 PDF文件的内部展示 实现逻辑: 使用urllib爬取网页,获取该url的响应内容 利用BeautifulSoup选取响应中你需要的节点 拼接数据 保存HTML文件 使用 ...

  4. PDF怎么转换成jpg图片

    PDF怎么转换成jpg图片?在日常工作中,PDF文件是一种非常常用的格式类型.文件存储安全性高,可以保护用户文件的内容,文件的转换也很方便.支持多种文件类型,可自由切换.有的朋友还是比较习惯查阅图片格 ...

  5. PDF怎样转换成JPG图片 PDF转换为JPG图片教程

    随着网络技术的飞速发展和网络的普及,互联网多方位的渗透我们的生活.一些论坛网站上面,PDF高质量的帖子异彩纷呈,吸引着大家的目光.如果我们需要某个PDF文件转换成图片时,那么,PDF怎么转换成JPG图 ...

  6. PDF怎样转换成JPG图片 PDF转换为JPG图片教程 1

    随着网络技术的飞速发展和网络的普及,互联网多方位的渗透我们的生活.一些论坛网站上面,PDF高质量的帖子异彩纷呈,吸引着大家的目光.如果我们需要某个PDF文件转换成图片时,那么,PDF怎么转换成JPG图 ...

  7. pdf如何转换成jpg图片?

    pdf如何转换成jpg图片?PDF(Portable Document Format)是一种常见的文件格式,由Adobe Systems创建.与其他文档格式相比,它具有固定页面布局和跨平台兼容性等优点 ...

  8. PDF怎么转换成JPG图片?大家赶快学起来!

    PDF怎么转换成JPG图片?PDF文件对我们来说可能是日常中用得最多的一种文件了,有时候我们在看PDF文件时,有些重点内容,我们经常会截图保存下来,但是截图的内容有时候可能会残缺不全,而且截图的画质可 ...

  9. PDF怎么转换成jpg图片保存?简单几步就能解决。

    在我们的日常工作和生活中,我们经常会和别人在线传输各种文件.但是在传输Word文档.Excel表格.PPT等格式的文件时,文件内容排版和布局容易出现变化.因此,人们在传输文件时一般都将文件转换为PDF ...

最新文章

  1. 【转】基于Android Fragment功能的例子
  2. 基于struts2,hibernate的小javaweb项目
  3. Android中Activity总结
  4. RHEL7 - 从命令行管理文件
  5. 如何使用shell脚本快速排序和去重文件数据
  6. axios跨域携带cookie_vue 本地调试跨域---带cookies(axios)
  7. cookie、session、sessionid 与jsessionid之间的关系
  8. shell制表与脚本运行进度条写法
  9. wordpress 自定义_WordPress自定义帖子类型:它是什么以及如何创建?
  10. Eclipse\myeclipse加载项目building workspace过久
  11. sqlserver自定义函数
  12. mysql preparedstatement 批量update_Statement和PreparedStatement批量更新
  13. MultipartFile transferTo() FileNotFound 拒绝访问
  14. apache 启动失败错误排查
  15. 间谍用GAN生成“红发美女”!潜入美国政坛,全网广钓政客
  16. 作为一本书,我是如何把别的Java系列卷死的!
  17. ansys经典界面分析工字钢_ansys工字钢实例分析.doc
  18. Android自定义相机
  19. msfvenom基本介绍
  20. 如何下载台湾硕博论文

热门文章

  1. 最全ARM汇编伪指令
  2. Java电子书平滑翻页效果_(转载)Android 平滑和立体翻页效果1
  3. ruby和python比较_为什么说Ruby比Python容易阅读
  4. 采用python语言实现猜数游戏_用python实现猜数游戏
  5. 分析师:Apple不会在2022年发布OLED iPad Air
  6. 华为又有大动作!继鸿蒙之后,即将发布全新操作系统OpenEuler欧拉
  7. 最便宜iPad曝光 苹果给力了!
  8. 一加9 Pro高清渲染图曝光:后置四摄加持哈苏logo真香
  9. 最狠的钉子户手机!最后一款已战斗5年,还能继续...
  10. “删库跑路”这件事情真的发生了 ,还是技术总监干的!