格式转换工具

格式转换工具

1.wkhtmltopdf html文件或者网页链接 转换成 PDF
wkhtmltopdf -s A4 网页链接地址 /tmp/xxx.pdf

2.wkhtmltoimage HTML文件或者HTML网页链接 转换成 图片

3.libreoffice word、excel、ppt 转换成 PDF
docker exec libreoffice_1 /bin/bash -c 'soffice --headless --invisible --convert-to pdf ./222.docx

4.ImageMagick pdf 转 图片 , 图片转pdf, 图片合并,生成gif动画,图片缩放等
使用详解: http://www.jeepxie.net/article/418459.html

5.pdf2htmlEX 将PDF文件转换成HTML文件
docker run -it --rm -v " + 宿主机目录 + ":/pdf bwits/pdf2htmlex-alpine pdf2htmlEX --zoom 1.3 " + 文件名称

注意: 这里有个 docker 命令: -t 如果 用程序调用,如 go php 等 需要去除 -t 选项

还有个坑: doc 文件 使用office word 预览没有任何问题,但是转换(libreoffice)就是一堆乱码

  • 原文内容:
    1. Date: Tue, 03 Mar 2020 14:35:55 +0800
    2. MIME-Version: 1.0
    3. Content-Type: multipart/related;
    4. boundary="--87F676F1C54A089C2C910E566B444102_MULTIPART_MIXED";
    5. type="text/html"
    6. X-MimeOLE: Produced By Mht File Maker v1.0 beta
    7. This is a multi-part message in MIME format.
    8. ----87F676F1C54A089C2C910E566B444102_MULTIPART_MIXED
    9. Content-Type: text/html
    10. Content-Transfer-Encoding: base64
    11. Content-Location: tmp.html
    12. PGh0bWwgPgo8aGVhZD4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
    13. dD0idGV4dC9odG1sOyBjaGFyc2V0PWdiayIgLz4KPC9oZWFkPgo8Ym9keT4KPHN0eWxlPmh0bWws
    14. Ym9keSxkaXYscHttYXJnaW46MDtwYWRkaW5nOjB9DQogICAgYm9keXtmb250LXNpemU6MTRweDtm
    15. b250LWZhbWlseToibWljcm9zb2Z0IHlhaGVpIjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmZ9DQog
    16. ICAgdGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2JvcmRlci1zcGFjaW5nOjA7dGFibGUt
    17. bGF5b3V0OmZpeGVkfQ0KICAgIHRoLHRke2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmc6MH0NCiAgICBh
    18. e3RleHQtZGVjb3JhdGlvbjpub25lfQ0KICAgIGltZ3tib3JkZXI6MCBub25lfQ0KICAgIC5jaGVh
    19. ZHt3aWR0aDo3MzRweH0NCiAgICAuY2hlYWQgLmxvZ297d2lkdGg6NDM0cHg7aGVpZ2h0OjkwcHh9
    20. DQogICAgLmNoZWFkIC50eHR7d2lkdGg6MTUwcHg7aGVpZ2h0OjkwcHh9DQogICAgLmJsdWV7dGV4
    21. dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzNjM2Q1ZH0NCiAgICAuY29sdW1ue3dpZHRoOjczNHB4
    22. .......

经过一番探究,这是一份被编码的邮件格式文件,既然邮件格式,当然是有东西可以把它解码的,又经过一番探究,我找到了这个包 php-mime-mail-parser/php-mime-mail-parser 这个解决方案:

使用前: 需要安装 php 的 mailparse 扩展 可以参考GitHub 使用 pecl install mailparse 安装

以下源码: 另外 PHP解决方案原文 猿哥

  1. <?php
  2. /**
  3. * Description:
  4. * Author: WangSx
  5. * DateTime: 2020-04-16 19:50
  6. */
  7. namespace App\Library\MIMEDoc;
  8. use App\Common\BaseClasses\CallStaticBase;
  9. use PhpMimeMailParser\Parser;
  10. /**
  11. * Description:
  12. * Author: WangSx
  13. * DateTime: 2020-04-16 20:01
  14. * Class MIMEDoc
  15. * @package App\Library\MIMEDoc
  16. * @method static string transformFile($file, $fileName) 检测doc 文件,进行转换
  17. */
  18. class MIMEDoc extends CallStaticBase
  19. {
  20. /**
  21. * Description: doc 文件转换,检测有一种 doc 文件, office word 可以正常打开,但当你想像其他 doc 文件一样使用 发现内容是 MIME类型的
  22. * Author: WangSx
  23. * DateTime: 2020-04-16 20:00
  24. * @param $file
  25. * @param $fileName
  26. * @return mixed
  27. */
  28. public function _transformFile($file, $fileName)
  29. {
  30. if ($this->isMht($file)) {
  31. $parser = new Parser();
  32. $parser->setText(file_get_contents($file));
  33. $body = $parser->getMessageBody('html');
  34. # 下面一行处理字符集,非特殊情况不需要处理
  35. // $body = str_replace(['charset=gb2312', 'charset=gbk'], 'charset=utf-8', $body);
  36. # 51job的doc文件,gb2312乱码,需要转换成utf-8,gbk可以识别,不需要转换
  37. $body = str_replace(['charset=gb2312'], 'charset=utf-8', $body);
  38. file_put_contents($fileName, $body);
  39. return $fileName;
  40. }
  41. return $file;
  42. }
  43. /**
  44. * Description: 文件校验
  45. * Author: WangSx
  46. * DateTime: 2020-04-16 20:00
  47. * @param $file
  48. * @return bool
  49. */
  50. public function isMht($file)
  51. {
  52. $fileData = fopen($file, "r");
  53. $header = '';
  54. while (!feof($fileData)) {
  55. $data = str_replace(["\n", "\s", "\r\n"], '', fgets($fileData));
  56. $header .= $data;
  57. if ($data == '') {
  58. break;
  59. }
  60. }
  61. fclose($fileData);
  62. return strpos($header, 'MIME-Version') !== false;
  63. }
  64. }


评论 0

发表评论

Top