近日遇到一个需求, 要将一些图片按一定要求放到Word文档中. 这些图片格式不统一, 有pdf, 有png, 有jpg. 宽高也各不同, 但要求图片横向放置, 每页一张. 当然, 如果手动操作, 就没有必要记录作法了.
将问题分解一下,有下列步骤:
1.将pdf转换为图片: 可以借助xpdf-tools中的.如果图片高>宽format.exe, 旋转图片: 可以借助.将图片写到html文件中: 使用Word支持的格式4.使用Word打开html文件, 断开链接, 嵌入图片.另存为Word格式
前两步没有什么要说的.
Word支持的html文件与常规的有所不同, 具体哪些地方不同, 也没有必要仔细研究, 直接将一份简单的Word文件另存为html格式看看就可以知晓了. 我们的需求比较简单, 所以只需要保留其中重要的相关设置, 所得模板如下
@page WordSection1 {
size:297mm 210mm;
margin: 12.7mm 12.7mm 12.7mm 12.7mm;
mso-page-orientation:landscape;
mso-header-margin:42.55pt;
mso-footer-margin:49.6pt;
mso-paper-source:0;
}
div.WordSection1 {page:WordSection1;}
可以看到, Word可以识别html文件中自定义的页面设置,其中可以设置页面大小format.exe, 页边距, 页面方向等. 这些设置浏览器未必支持. 需要注意的是, 其中的图片大小, 只能以像素为单位, 且默认根据96dpi计算.
使用Word打开这样的html文件, 可以看到图片, 但只是链接. 如果将Word文件转移到其他位置, 图片就无法显示了. 因此, 我们还需要将图片嵌入Word文件中. 对于, 依次
文件 | 信息 | 相关文档 | 编辑指向文件的链接
然后
全选 | 断开链接 | 将图片保存在文档中 | 确定.
脚本
将上面的步骤总结为下面的脚本, 处理起大量的文件来就更容易了.
# 定义程序路径
im=/D/ImageMagick-7.1.1-19-Q16-HDRI
xpdf=/D/PDFtools/xpdf-tools-4.05/bin
# 先将pdf转换为相应的png文件
for pdf in *.pdf; do
name=${pdf%.pdf}
$xpdf/pdftopng.exe $pdf $name
mv $name-000001.png $name.png
done
# 根据宽高旋转图片
mkdir -p backup
for img in *.jpg *.png; do
eval $($im/identify.exe -ping -format 'w=%w; h=%h;' $img) # 获取宽高
[[ $h > $w ]] && {
cp $img ./backup/$img
$im/convert.exe -rotate -90 ./backup/$img $img
}
done
# 输出图片及其编号
rm -f _img
for img in *.jpg *.png; do
idx=${img##*_}; idx=${idx%.*}
echo $idx $img >>_img
done
# 排序图片并输出到html文件
sort -n _img | awk '
BEGIN { print ""
"n@page WordSection1 {"
"n size:297mm 210mm;"
"n margin: 12.7mm 12.7mm 12.7mm 12.7mm;"
"n mso-page-orientation:landscape;"
"n mso-header-margin:42.55pt;"
"n mso-footer-margin:49.6pt;"
"n mso-paper-source:0;}"
"ndiv.WordSection1 {page:WordSection1;}"
"n"
"n"
"n"
"n<div class=WordSection1 align=center style="text-align:center">"
"n"
}
{ print """$2"">" }
END {print "
' >_.html
限时特惠:本站持续每日更新海量各大内部创业课程,一年会员仅需要98元,全站资源免费下载
点击查看详情
站长微信:Jiucxh
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。