现在越来越多的内容分享都是在微信上进行了。然而,若想将电脑浏览器中看到的感兴趣的网页分享至微信,则只能以纯文本的方式粘贴超级链接,而不能直接拷贝图文混排的HTML。因此,我想到不妨借助LibreOffice Writer和ImageMagick将网页转换成单张图片来分享,就如同微博上的长文章。具体做法如下。

首先,将网页内容拷至LibreOffice Writer中保存。建议选用A6纸张大小,16号字体。

然后,将其ODT文件导出为PDF格式。

接下来,使用下面的脚本程序(pdf_to_single_img.sh)实现从PDF至单张图片的转换。在该脚本中,主要用到了ImageMagick的convert命令:首先,将PDF文档转化成多个图片文件;然后,使用-append选项,实现多个图片的纵向合并。需注意的是,图片文件名应按照version number排序(由sort -V来实现),才可以保证正确的页面顺序。

#!/bin/bash

script_name="pdf_to_single_img.sh"
script_usage=$(cat <<EOF
pdf_to_single_img.sh [OPTIONS] pdf_file
EOF
)
script_function=$(cat <<EOF
Convert a multipage PDF file into a single JPEG image for sharing.
EOF
)
script_doc=$(cat <<EOF
Script documentation.
-d Specify input image density.
-q Specify input image quality (~).
-h Display this help.
EOF
)
script_examples=$(cat <<EOF
pdf_to_single_img.sh -d -q input.pdf
EOF
)
state_prefix="==="
warning_prefix="***"
error_prefix="!!!" function display_help() {
if [ -n "$script_usage" ]; then
echo -e "Usage: $script_usage"
fi if [ -n "$script_function" ]; then
echo -e "$script_function"
fi if [ -n "$script_doc" ] ; then
echo -e "\n$script_doc"
fi if [ -n "$script_examples" ]; then
echo -e "\nExamples"
echo -e "$script_examples"
fi
} # Default input image density and quality
img_density=
img_quality= # Process command options
while getopts ":hd:q:" opt; do
case $opt in
d ) img_density=$OPTARG ;;
q ) img_quality=$OPTARG ;;
h ) display_help
exit ;;
\? ) display_help
exit ;;
esac
done
shift $(($OPTIND - )) # Start execute the command
output_img="${1%pdf}jpg"
convert -density $img_density -quality $img_quality "$1" "$output_img"
img_file_list=`find ./ -maxdepth -name "${1%.pdf}*.jpg" | sort -V`
convert $img_file_list -append "$output_img"
echo "$img_file_list" | xargs rm

最终生成的图片如下所示。

最新文章

  1. PHP常用函数和常见疑难问题解答
  2. jquery.prompt.js 弹窗的使用
  3. Webdriver API (二)
  4. flot中文说明文档 简版
  5. 浅谈 Underscore.js 中 _.throttle 和 _.debounce 的差异
  6. retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
  7. properties + IO 读取配置文件
  8. Java的绝对路径和相对路径
  9. &#39;abc&#39; 转换成[a, b, c]一道面试题的思考
  10. .net问号的作用
  11. python使用stomp连接activemq
  12. ajax使用异步问题
  13. Oracle Initialzation error instantclient_11_2 32位客户端问题
  14. poj 3042 Grazing on the Run
  15. yum安装提示错误Thread/process failed: Thread died in Berkeley DB library
  16. 尚硅谷JavaSEday18 String类练习题
  17. C++的四种显示类型转换
  18. Java Exception 和Error有什么区别?
  19. IoC最大的好处是什么
  20. Openssl rand命令

热门文章

  1. 常用的免费Webservice接口
  2. ASP.NET4.5Web API及非同步程序开发系列
  3. WCF 学习笔记之双工实现
  4. MacOSX64位机器上gcc编译32位x264静态库
  5. spring不依赖注入得到实体bean
  6. 应用之星在线app开发平台,菜鸟也会做应用
  7. [置顶] C语言中各种数据类型的长度 sizeof char, short, int, long, long long
  8. AS3中释放优化的几条常识
  9. spark单机部署及样例运行
  10. 【解惑】剖析float型的内存存储和精度丢失问题