知网下载的caj转pdf得一个个手动转,而且转完了是图片格式的pdf,很不方便,所以找了个python的脚本把caj转pdf。

但是发现九成以上的都会转失败,except报错windows找不到文件。

其实找不到的是

心路历程如下:

逐步调试发现错误

报错的是kdh和caj格式的文件

    def convert(self, dest):dest = str(dest)print('format:',self.format,end=' ')if self.format == "CAJ":self._convert_caj(dest)elif self.format == "HN":self._convert_hn(dest)elif self.format == "C8":self._convert_hn(dest)elif self.format == "PDF":self._convert_pdf(dest)elif self.format == "KDH":self._convert_kdh(dest)

这一步的作用是解析tmp,然后说pdf_toc找不到,那是因为没有解析出来。

check_output(["mutool", "clean", "pdf.tmp", "pdf_toc.pdf"], stderr=STDOUT)

首先要修改为:

check_output(["mutool", "clean", "pdf.tmp", "pdf_toc.pdf"], stderr=STDOUT, shell=True,check=False)

因为check参数里面默认了,所以也要修改check_output里面的参数check

run(*popenargs, stdout=PIPE, timeout=timeout, **kwargs).stdout

里面用的是subprocess.pyPopen
里面的_execute_child
里面的_winapi.CreateProcess
总算找到了报错的地方,但是为什么是找不到文件就很奇怪。

回到_convert_caj这里:

        try:# check_output(["mutool", "clean", "pdf.tmp", "pdf_toc.pdf"], stderr=STDOUT)check_output(["mutool", "clean", "pdf.tmp", "pdf_toc.pdf"], stderr=STDOUT, shell=True,check=False)except CalledProcessError as e:print(e.output.decode("utf-8"))raise SystemExit("Command mutool returned non-zero exit status " + str(e.returncode))

其实这个e就看不对,最后发现是编码问题,改成e.output.decode("gb2312")后发现,报的错误其实是找不到mutool

因为

check_output(["mutool", "clean", "pdf.tmp", "pdf_toc.pdf"], stderr=STDOUT, shell=True, check=True)

第一个参数(list)其实是指令,里面会变成"mutool clean pdf.tmp pdf_toc.pdf"
到这里会发现上面subprocess.py用的其实是win给执行cmd命令的接口,没有mutool这个工具的话,当然会报错啦!

所以到这里总算知道了,问题出在mutool这个工具,代码本身其实并没有问题!!

安装mutool请看:安装mutool方法

最好重启一下pycharm或者cmd窗口刷新一下环境变量。

愉快地转换了!

现在比较忙,如果有不明白的可以留言,有空的时候会补全详细步骤

要caj转pdf脚本的回头我也传上来

【杂记】caj转pdf脚本报错解决办法相关推荐

  1. 【matlab】【Datcom】气动解算软件win10报错解决办法及运行交互示例

    版本说明 免费版本仍然可用.尚未使用Datcom + Pro版本的功能进行更新.没有大量的工作,我无法生成新的分发程序包,并且我现在对此不感兴趣.建议您观看教程视频,以了解使用新的Datcom + P ...

  2. 连接远程服务器CredSSP加密Oracle修正报错解决办法

    连接远程服务器CredSSP加密Oracle修正报错解决办法: 打开注册表,快捷输入 "regedit"(类似找命令提示符 输入 cmd 一样)找文件夹 路径:HKLM(缩写)\S ...

  3. please reinstall the mysql distribution_php安装扩展mysqli的实现步骤及报错解决办法

    php安装扩展mysqli的实现步骤及报错解决办法 terminal#cd php-5.3.6/ext/mysqli #/usr/local/webserver/php/bin/phpize #./c ...

  4. Could not resolve host: 'localhost 报错解决办法

    Could not resolve host: 'localhost 报错解决办法 面向Windows的: 零基础的我一直卡在这一步骤下: 首先要先在Windows安装curl:安装方式参考:http ...

  5. php mysqli报错,php安装扩展mysqli的实现步骤及报错解决办法

    php安装扩展mysqli的实现步骤及报错解决办法 terminal #cd php-5.3.6/ext/mysqli #/usr/local/webserver/php/bin/phpize #./ ...

  6. 浏览器DNS_PROBE_FINISHED_NXDOMAIN报错解决办法

    方法1: 更改DNS地址 114.114.114.114 Preferred DNS Server: 8.8.8.8 Alternate DNS Server: 8.8.4.4 方法2: 浏览器浏览网 ...

  7. vmware虚拟机删除光驱启动报错解决办法

    vmware虚拟机删除光驱启动报错解决办法 将vmware虚拟机光驱给删除了,启动就一直报这个错,具体如下: IDE 设备(磁盘/CD-ROM)配置不正确."ide1:1"上具有一 ...

  8. LaTeX报错解决办法:arithmetic: number too big ! Dimension too large.

    LaTeX报错解决办法:arithmetic: number too big ! Dimension too large. 试了一些网上搜到的办法: 用画图软件.PS之类的修改另存jpg或者png: ...

  9. M1 pod install CocoaPod 报错解决办法

    Mac M1 pod install 报错解决办法 Mac M1 CocoaPods 环境问题 M1 Ruby 环境问题 新到的 MacBook Pro M1,配置如下: MacBook Pro (1 ...

最新文章

  1. jquery 的3D Carousel插件参数说明
  2. python使用imbalanced-learn的NeighbourhoodCleaningRule方法进行下采样处理数据不平衡问题
  3. Juniper SRX IPsec *** base route CLI
  4. PXE 01-PXE介绍
  5. PHP程序性能优化的50种方法
  6. css display:box 新属性
  7. zabbix源码安装
  8. 在Maple 9中察看内置函数的原代码的三种方法
  9. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_3_字节输出流_OutputStream类FileOutputStream...
  10. 企业为开源做贡献,贡献大了说话就有人听了
  11. python银行管理系统框架_基于Python的网上银行综合管理系统的设计与实现
  12. 海词词典android v3.1.2新版发布 英语学习必备工具,海词词典手机版下载_海词词典最新版下载安装v6.1.18 - 数码资源网...
  13. html js 邮箱格式,email 格式_JavaScript验证Email邮箱格式的三种方法
  14. 0CTF/TCTF2019 Ghost Pepper Writeup
  15. C语言 猜数游戏 首先由计算机产生一个随机数,并给出这个随机数所在的区间,然后有游戏者猜测这个数。猜中游戏结束,并可以重新挑战,猜错重新给出提示,如果猜测超过八次游戏失败。
  16. 跟着吴恩达学习机器学习 2代价函数
  17. Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1030E: The operator 'SUBTR
  18. Linux-京东字节百度提前批,一面二面都被问到了awk——实例篇(2)去重统计排序
  19. [转载] 中美德突发事件应急指挥组织结构初探
  20. 抖音去水印小程序太坑了,每天只能下载一个还要钱。还是自己用Python写一个得劲

热门文章

  1. 日本和新加坡在亨氏护照指数中稳居榜首
  2. 视频画质可以提升吗?是什么在影响视频清晰度
  3. vim安装指南(for Ubuntu and Windows)(配置C/C++和Python开发环境)
  4. SpringBoot集成企业微信群机器人(运维报警)
  5. 2022A特种设备相关管理(电梯)考试练习题模拟考试平台操作
  6. 与运算、或运算、异或运算
  7. 外中断(中断)、内中断(异常)
  8. 构建多维正交矩阵(Hadamard矩阵)
  9. 今日头条 h5 源码 php,今日头条H5
  10. JS判断当前日期必须大于选择日期