现在越来越多的内容分享都是在微信上进行了。然而,若想将电脑浏览器中看到的感兴趣的网页分享至微信,则只能以纯文本的方式粘贴超级链接,而不能直接拷贝图文混排的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

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

利用LibreOffice与ImageMagick将网页分享至微信的更多相关文章

  1. 网页分享到微信、微博、QQ空间、百度贴吧等

    1.首先说明的是,pc端微信分享只能通过二维码来分享. 2.下面是js代码. //分享到新浪微博 function shareToSinaWB(event){ event.preventDefault ...

  2. android网页分享到朋友圈问题求助?

    目前想要实现通过QQ将网页分享到微信好友或朋友圈,看见有些APP是直接分享出去左下角图标显示的是QQ.求助各位大牛提供下思路. 这种功能是怎么实现的.应该不是通过android的系统分享实现的吧?.查 ...

  3. 利用LibreOffice转换ppt、doc转化pdf

    利用LibreOffice转换ppt.doc转化pdf LibreOffice下载地址:  http://www.libreoffice.org/download/libreoffice-fresh/ ...

  4. 网页分享到微博、QQ、QQ空间、微信

    <ul id="content-share-list" class="bdsharebuttonbox bdshare-button-style0-16" ...

  5. 微信网页JS分享,微信二次分享无缩略图问题

    很多时候我们要在微信中分享h5网页,这个时候就得用微信的分享接口来自定义分享的地址.标题.描述.缩略图了. 分享到微信的时候遇到一个问题,就是第一次分享到微信里,是正确的,但是在微信打开分享的链接,再 ...

  6. 利用 Android 系统原生 API 实现分享功能

    利用 Android 系统原生 API 实现分享功能 这篇文章提供一个封装好的 Share2 库供大家参考. GitHub 项目地址:Share2 大家知道,要调用 Android 系统内建的分享功能 ...

  7. Flask08 包含(include)、继承(extends)、宏???、模板中变量的来源、利用bootstrap构建自己的网页结构

    1 包含 直接把另一个文件的内容,复制粘贴过来 {% include "模板路径" %} 注意:模板都是放在 templates 这个文件夹下面的,可以在里面新建文件夹来进行分离: ...

  8. 利用wget 抓取 网站网页 包括css背景图片

    利用wget 抓取 网站网页 包括css背景图片 wget是一款非常优秀的http/ftp下载工具,它功能强大,而且几乎所有的unix系统上都有.不过用它来dump比较现代的网站会有一个问题:不支持c ...

  9. javascript实现网页分享至朋友圈功能

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. 使用数据流的方式 将数据导出到指定形式到Word中 (不使用插件,很简单的一种)

    protected void Page_Load(object sender, EventArgs e) { string fileName = "路政许可事项办理流转情况汇总统计" ...

  2. Mahout之(三)相似性度量

    User CF 和 Item CF 都依赖于相似度的计算,因为只有通过衡量用户之间或物品之间的相似度,才能找到用户的“邻居”,才能完成推荐.上文简单的介绍了相似性的计算,但不完全,下面就对常用的相似度 ...

  3. CC.NET模板简化配置

    [Hello CC.NET]巧用模板简化配置 从 <[Hello CC.NET]CC.NET 实现自动化集成> 到 <[Hello CC.NET]自动化发布时 Web.config ...

  4. Web开发框架对比

    Web开发框架能极大地提升开发效率,下面对一些常用的框作一些更深层次的对比. JSF JSF不是极好的快速开发原型,代码生成不是内置功能,并且原型开发应用需要开发完整应用程序那么多的配置.这真的不是J ...

  5. Linux CPU监控指标

    Linux CPU监控指标 Linux提供了非常丰富的命令可以进行CPU相关数据进行监控,例如:top.vmstat等命令.top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执 ...

  6. 一步一步深入spring(1)--搭建和测试spring的开发环境

    1.引用jar包 到spring的网站上下载spring的jar包(本文是2.5.6),解压缩后找到 使用spring必须引用的jar包 spring.jar  commons-logging.jar ...

  7. 国外大师给PHP初学者的8条建议

    学习一门新语言可能会是一件很艰巨的任务,最好的办法就是借鉴前辈的经验已达到事半功倍,下面就是为php新手们准备的一些经验餐. 1.从OOP开始Naramore是SourceForge员工以及PHPWo ...

  8. Hamilton

    import java.util.Vector; class Hamilton { int start; int a[][]; int len; int x[]; // 记录回路 boolean fl ...

  9. get post 知多少

    GET与POST简介 POST和GET都属于http请求的方法,所以都包含开始行,头域,头域结束符,消息主体,但是,他们同样存在很多异同,为了更好的区别这两种请求,我们对他们的异同进行具体的分析. 表 ...

  10. 不想再做"鸟蛋"

    至今为止学习C++两个学期了,有过迷茫,有过自信,有过崩溃,有过希望,有过伤心,有过高兴.这一路走来,C++虐我千百遍,我待C++如"初恋".                    ...