利用LibreOffice與ImageMagick將網頁分享至微信

如今愈來愈多的內容分享都是在微信上進行了。然而,若想將電腦瀏覽器中看到的感興趣的網頁分享至微信,則只能以純文本的方式粘貼超級連接,而不能直接拷貝圖文混排的HTML。所以,我想到不妨藉助LibreOffice Writer和ImageMagick將網頁轉換成單張圖片來分享,就如同微博上的長文章。具體作法以下。瀏覽器

首先,將網頁內容拷至LibreOffice Writer中保存。建議選用A6紙張大小,16號字體。bash

而後,將其ODT文件導出爲PDF格式。微信

接下來,使用下面的腳本程序(pdf_to_single_img.sh)實現從PDF至單張圖片的轉換。在該腳本中,主要用到了ImageMagick的convert命令:首先,將PDF文檔轉化成多個圖片文件;而後,使用-append選項,實現多個圖片的縱向合併。需注意的是,圖片文件名應按照version number排序(由sort -V來實現),才能夠保證正確的頁面順序。app

#!/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 (0~100).
-h     Display this help.
EOF
)
script_examples=$(cat <<EOF
pdf_to_single_img.sh -d 200 -q 100 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=150
img_quality=80

# Process command options
while getopts ":hd:q:" opt; do
    case $opt in
    d  )  img_density=$OPTARG ;;
    q  )  img_quality=$OPTARG ;;
    h  )  display_help
        exit 0 ;;
    \? )  display_help
        exit 1 ;;
    esac
done
shift $(($OPTIND - 1))

# Start execute the command
output_img="${1%pdf}jpg"
convert -density $img_density -quality $img_quality "$1" "$output_img"
img_file_list=`find ./ -maxdepth 1 -name "${1%.pdf}*.jpg" | sort -V`
convert $img_file_list -append "$output_img"
echo "$img_file_list" | xargs rm

最終生成的圖片以下所示。字體

相關文章
相關標籤/搜索