如何把包含图片的docx文件转换为HTML
今天我接到领导的安排想要在网页上展示一些公司的方案(docx文件)。我一想啊,直接展示word文件有点难度,要不先把word转换为HTML格式吧。网上一搜,像这种格式文本转换pandoc比较好用。行,那就用pandoc吧。
pandoc如何安装我就不说了,可以参考官方文档https://pandoc.org/,我们直接进入使用环节。
pandoc -f docx -t html -o R语言读文件防止行名、列名中有的字符变成点号.html R语言读文件防止行名、列名中有的字符变成点号.docx
-f
:即原始文件格式,我们这里是docx格式-t
:即想要转换为啥格式,我们这里是html格式-o
:输出文件名,我们这里输出为R语言读文件防止行名、列名中有的字符变成点号.html
- 最后一个参数是输入文件名
这几个参数综合起来的意思是: 我要把一个叫R语言读文件防止行名、列名中有的字符变成点号.docx
的docx格式的文件转换为一个叫R语言读文件防止行名、列名中有的字符变成点号.html
的HTML文件的意思。
转换完成,我愉快地打开HTML文件,却发现这样的情况:
经过搜索我发现,原来pandoc默认不解析图片,如果想要解析图片,得加一个--extract-media
的参数。
pandoc -f docx -t html --extract-media . -o R语言读文件防止行名、列名中有的字符变成点号.html R语言读文件防止行名、列名中有的字符变成点号.docx
--extract-media
的意思是把多媒体文件解析到xxx位置,本例中为解析到当前目录
打开转换完成的HTML你就会发现图片出现了喔。
作者:灵魂工具人
链接:https://zhuanlan.zhihu.com/p/340100190
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
说到R包的安装简直是个噩梦,为什么R包这么难装呢?我大胆分析一下,欢迎批评指正:
- 生态混乱
R在统计圈的盛行决定了R包的开发人员基本上做统计的,这些开发者开发的包水平层次不齐。有 时候一个简单的功能却要依赖一个非常复杂的包,严重增加的包的负担。 - 很多包含有C代码需要编译
一方面需要安装编译器,另一方面有编译失败的风险。 - 错误提示不友好
例如,biomaRt
安装说明说,可以使用R 3.6
安装:
然而,错误提示却是:
安装失败的原因当然不是R版本的问题,这里却误导性的提示是R版本的问题。如果这个时候能给出 安装失败的真正原因,也能帮助用户快速定位问题。然而,事与愿违。
总结一下,R包难以安装的根本原因是生态混乱
,错误提示不友好
是阻碍用户找到失败原因的根本原因。
解决办法
我们总希望解决问题的时候有什么终极办法,然而对于R包的安装却是很难找到此类办法。下面我列举一下 我平时解决问题的基本思路,不能保证彻底解决问题,但是大多数的问题是能够解决的。
使用anaconda
安装
这个方法最有希望成为终极解决办法。anaconda组织
会把R包统一管理,你只需要使用conda install
就行。 例如,你想要安装ArrayExpress
,执行如下命令安装:
conda install -c bioconda bioconductor-arrayexpress
然而,事情不是总是难么顺利,也是很容易安装失败。
失败原因1:版本冲突
anaconda
有三个重要的channel
与R相关。
r
conda-forge
bioconda
其中bioconda
里面都是bioconductor包
,这个里面包。r
、conda-forge
里面都有一些R包
, 这就很容易导致安装包时各个channel
里面的包互相冲突。
失败原因2: conda install
一下,地动山摇
不知道biconda
的打包策略,有的时候安装一个R包
却要更新我的Python
。往往安装的时候我都心惊胆战, 生怕有啥不好的影响,一见到有更新Python
的R包
,往往只能采取其他方式安装。
下载二进制包安装
这个方法针对有些R包有C代码需要编译安装,却又不想安装编译器,或者没有编译成功的情况。方法是去CRAN官网
, 找到你要安装的包,选择你要安装平台的二进制包下载:
然后本地安装:
install.packages("/path/to/download/file.zip", repos = NULL)
这里要注意,如果是本地安装需要指定repos = NULL
。为啥要单独指定,R不会判断是本地文件路径还是包名吗? 这个问题我也很疑惑。
源码安装
这个安装方法是没有办法的办法。设想我就是这个包的开发者,我会怎么开发这个包呢?
- 写代码
- 装依赖
- …
那么我下载这个包的源码,把这个包的依赖依次装上,然后再装这个包不是水到渠成吗?
这个方法最为麻烦,然而却是能解决大部分的情况。大体步骤是这样的:
- 下载源码
- 解压,进入项目根目录
- 像这个包的开发者一样,使用
devtools::install()
进行安装 - 如果安装失败,打开
DESCRIPTION文件
- 逐一安装项目依赖,
DESCRIPTION文件
中Depends
、Imports
两项是项目依赖,例如:
这个包依赖Biobase
、XML
、oligo
、limma
。
6. 如果依赖包依旧安装错误,则下载依赖包的源码进行源码安装
(这是一个递归),直到所有依赖安装成功, 这个时候再运行devtools::install()
就水到渠成了。
发布于 2021-01-06 13:07