亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Linux shell腳本對常見圖片格式批量轉換為PDF文件

 更新時間:2024年12月26日 10:09:43   作者:星如雨落  
Linux Debian12基于ImageMagick圖像處理工具編寫shell腳本用于常見圖片png、jpg、jpeg、webp、tiff格式批量轉PDF文件,”多個圖片分開生成多個PDF文件“或者“多個圖片合并生成一個PDF文件”,本文詳細介紹了Linux shell腳本對常見圖片格式批量轉換為PDF文件的操作

在Linux系統(tǒng)中,使用ImageMagick可以圖片格式轉換,其中最常用的是通過命令行工具進行。

ImageMagick是一個非常強大的圖像處理工具集,它包含了許多用于圖像轉換的命令。

sudo apt-get install imagemagick  # 對于基于Debian的系統(tǒng)

驗證是否安裝成功: 嘗試運行ImageMagick提供的一些常用命令,比如:

convert --version

如果convert命令可用,它將返回版本信息。

一、可以編寫shell腳本批量轉換圖片為PDF文件

shell腳本文件名: pictures_to_pdf_v1.0.sh

#!/bin/bash
#腳本功能:把常用的圖片格式(png、jpg、jpeg、webp、tiff)批量轉換為PDF格式,
# “多個圖片分開生成多個PDF文件”或者“多個圖片合并生成一個PDF文件”


#函數功能:使用了*通配符來檢查字符串中是否有空格。如果字符串包含空格,contains_space函數將返回真(true),否則返回假(false)。
function contains_space() {
    [[ $1 = *\ * ]]
}


#函數功能:把空格全部替換為'_'下劃線"
function space2underline(){
    local file_name_old=$1
    # 使用contains_space函數判斷文件名中是否含有空格
    if contains_space "$file_name_old"; then
        file_name_new="${file_name_old// /_}"
        mv "$file_name_old" "$file_name_new";
        echo "$file_name_new"
    else
        echo "$file_name_old"
    fi
}


# 多個圖片分開生成多個PDF文件
function images_to_multiple_pdf(){
    # 獲取第一個參數
    local new_folder=$1

    #for file_name in `ls *.png *.jpg *.jpeg *.webp *.tiff`;do
    for file_name in *;do
        #echo "文件'${file_name}'"
        if [ "png" == "${file_name##*.}" ];then
            file_name=$(space2underline "$file_name")
            #echo "$file_name"
            (convert $file_name `echo ../$new_folder/${file_name//.png/.pdf}`) && (echo "${file_name}已成功轉為pdf格式") || (echo "${file_name}轉換失敗")
        elif [ "jpg" == "${file_name##*.}" ];then
            file_name=$(space2underline "$file_name")
            #echo "$file_name"
            (convert $file_name `echo ../$new_folder/${file_name//.jpg/.pdf}`) && (echo "${file_name}已成功轉為pdf格式") || (echo "${file_name}轉換失敗")
        elif [ "jpeg" == "${file_name##*.}" ];then
            file_name=$(space2underline "$file_name")
            #echo "$file_name"
            (convert $file_name `echo ../$new_folder/${file_name//.jpeg/.pdf}`) && (echo "${file_name}已成功轉為pdf格式") || (echo "${file_name}轉換失敗")
        elif [ "webp" == "${file_name##*.}" ];then
            file_name=$(space2underline "$file_name")
            #echo "$file_name"
            (convert $file_name `echo ../$new_folder/${file_name//.webp/.pdf}`) && (echo "${file_name}已成功轉為pdf格式") || (echo "${file_name}轉換失敗")
        elif [ "tiff" == "${file_name##*.}" ];then
            file_name=$(space2underline "$file_name")
            #echo "$file_name"
            (convert $file_name `echo ../$new_folder/${file_name//.tiff/.pdf}`) && (echo "${file_name}已成功轉為pdf格式") || (echo "${file_name}轉換失敗")
        #else
            #echo "僅支持常見的圖片格式(png、jpg、jpeg、webp、tiff)才可以轉換為PDF格式,其他文件'${file_name}'不支持!"
        fi
    done
}


# 多個圖片合并生成一個PDF文件
function images_to_single_pdf(){
    # 獲取第一個參數
    local new_folder=$1
    # 圖片名稱字符串,例如"1.png 2.jpg"
    local file_names=""

    #for file_name in `ls *.png *.jpg *.jpeg *.webp *.tiff`;do
    for file_name in *;do
        #echo "文件'${file_name}'"
        if [ "png" == "${file_name##*.}" ];then
            file_name=$(space2underline "$file_name")
            #echo "$file_name"
            file_names+=" "$file_name
            #echo "'${file_names}'"
        elif [ "jpg" == "${file_name##*.}" ];then
            file_name=$(space2underline "$file_name")
            #echo "$file_name"
            file_names+=" "$file_name
            #echo "'${file_names}'"
        elif [ "jpeg" == "${file_name##*.}" ];then
            file_name=$(space2underline "$file_name")
            #echo "$file_name"
            file_names+=" "$file_name
            #echo "'${file_names}'"
        elif [ "webp" == "${file_name##*.}" ];then
            file_name=$(space2underline "$file_name")
            #echo "$file_name"
            file_names+=" "$file_name
            #echo "'${file_names}'"
        elif [ "tiff" == "${file_name##*.}" ];then
            file_name=$(space2underline "$file_name")
            #echo "$file_name"
            file_names+=" "$file_name
            #echo "'${file_names}'"
        #else
            #echo "僅支持常見的圖片格式(png、jpg、jpeg、webp、tiff)才可以轉換為PDF格式,其他文件'${file_name}'不支持!"
        fi
    done

    # 刪除file_names字符串最前面的空格
    file_names=${file_names#"${file_names%%[![:space:]]*}"}
    echo "'${file_names}'"
    # 多個圖片轉換為一個pdf
    (convert $file_names `echo ../$new_folder/output.pdf`) && (echo "'${file_names}'已成功轉為pdf格式") || (echo "'${file_names}'轉換失敗")

}


#---------------------------------------------------------------------------------
#函數功能:主函數
#---------------------------------------------------------------------------------
function main(){
    echo "溫馨提示:僅支持常見的圖片格式(png、jpg、jpeg、webp、tiff)才可以轉換為PDF格式,其他文件類型不支持!"
    # 創(chuàng)建新文件夾
    new_folder="output-images"
    # 檢查文件夾是否存在
    if [ ! -d "$new_folder" ]; then
        # 文件夾不存在,創(chuàng)建文件夾
            mkdir "$new_folder"
    fi

    # 存放待轉換的圖片文件夾
    input_images_folder="input-images"
    # 檢查文件夾是否存在
    if [ ! -d "$input_images_folder" ]; then
        # 文件夾不存在,創(chuàng)建文件夾
            mkdir "$input_images_folder"
    fi
    # 進入input-images目錄
    cd "$input_images_folder"

    # 判斷$1參數是否為空,不為空設置input_number
    if [ -z $1 ];then
        # echo "第一個參數為空"
        # 獲取當前腳本名稱
        local script_name=$(basename "$0")
        echo "請在運行腳本'${script_name}'名稱后面,輸入參數'1':(多個圖片分開生成多個PDF文件)或 參數'2':(多個圖片合并生成一個PDF文件)"
        exit
    else
        # echo "第一個參數不為空,值為:$1"
        local input_number=$1
    fi

    if [ "1" == "$input_number" ];then
        # 多個圖片分開生成多個PDF文件
        images_to_multiple_pdf "$new_folder"
    elif [ "2" == "$input_number" ];then
        # 多個圖片合并生成一個PDF文件
        images_to_single_pdf "$new_folder"
    else
        # 獲取當前腳本名稱
        local script_name=$(basename "$0")
        echo "請在運行腳本'${script_name}'名稱后面,輸入參數'1':(多個圖片分開生成多個PDF文件)或 參數'2':(多個圖片合并生成一個PDF文件)"
        exit
    fi


    # 進入上一級目錄
    cd ..
}


# ---------------執(zhí)行主函數-------------------
main $1

二、使用方法

1.首先把圖片放到input-images目錄下。

2.賦予shell腳本文件執(zhí)行權限

chmod +x pictures_to_pdf_v1.0.sh

3.運行shell腳本,"請在運行腳本名稱后面,輸入轉換參數'1':(多個圖片分開生成多個PDF文件)或 參數'2':(多個圖片合并生成一個PDF文件)"

./pictures_to_pdf_v1.0.sh "轉換參數"

測試效果如下:

4.在生成的output-images目錄中,會看到生成的PDF文件。

三、該Shell腳本下載地址

 gitee鏈接:
 https://gitee.com/datutu2015/pictures_to_pdf

 藍奏云鏈接:
 https://wwxc.lanzouo.com/io1tg2iv6rpa

 知識星球鏈接:
 https://t.zsxq.com/1Yjs8

四、報錯處理

如果在圖片轉換pdf中,出現(xiàn)下面報錯:

(‘PDFpng error‘, b“convert-im6.q16: attempt to perform an operation not allowed by the security poli

這個錯誤信息表明在執(zhí)行將圖片轉換為PDF文件的命令時出現(xiàn)了問題,具體錯誤與安全策略不允許執(zhí)行"PDF"操作有關。

需要修改這個安全策略policy.xml文件,打開命令終端,執(zhí)行下面命令:

sudo vim /etc/ImageMagick-6/policy.xml

在找到的行中,將 rights 屬性的值設置為 “read|write”,以允許讀取和寫入PDF文件。例如,將行修改為類似下面的形式:

<policy domain="coder" rights="read|write" pattern="PDF" />

以上就是Linux shell腳本對常見圖片格式批量轉換為PDF文件的詳細內容,更多關于Linux shell腳本圖片格式轉PDF的資料請關注腳本之家其它相關文章!

相關文章

  • Shell執(zhí)行/調用Java/Jar程序例子的實例詳解

    Shell執(zhí)行/調用Java/Jar程序例子的實例詳解

    這篇文章主要介紹了Shell執(zhí)行/調用Java/Jar程序例子的實例詳解的相關資料,這里提供實例幫助大家實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • 一波實用的Bash Shell整理

    一波實用的Bash Shell整理

    這篇文章主要介紹了一波實用的Bash Shell整理,適用于Ubuntu等Debian系的Linux系統(tǒng),需要的朋友可以參考下
    2015-06-06
  • 幾個常用的Linux操作系統(tǒng)監(jiān)控腳本代碼

    幾個常用的Linux操作系統(tǒng)監(jiān)控腳本代碼

    本文介紹了幾個常用的Linux監(jiān)控腳本,可以實現(xiàn)主機網卡流量、系統(tǒng)狀況、主機磁盤空間、CPU和內存的使用情況等方面的自動監(jiān)控與報警。根據自己的需求寫出的shell腳本更能滿足需求,更能細化主機監(jiān)控的全面性
    2013-07-07
  • 遠程SSH連接服務與基本排錯經驗總結

    遠程SSH連接服務與基本排錯經驗總結

    下面小編就為大家?guī)硪黄h程SSH連接服務與基本排錯經驗總結。小編覺得聽不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • shell實現(xiàn)猜數字小游戲

    shell實現(xiàn)猜數字小游戲

    這篇文章主要為大家詳細介紹了shell實現(xiàn)猜數字小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 如何讓history命令顯示日期和時間

    如何讓history命令顯示日期和時間

    我們都對 history 命令很熟悉。它將終端上 bash 執(zhí)行過的所有命令存儲到 .bash_history 文件中,來幫助我們復查用戶之前執(zhí)行過的命令。這篇文章主要介紹了讓history命令顯示日期和時間的方法,需要的朋友可以參考下
    2018-01-01
  • Shell腳本讀取ini配置文件的實現(xiàn)代碼2例

    Shell腳本讀取ini配置文件的實現(xiàn)代碼2例

    這篇文章主要介紹了Shell腳本讀取ini配置文件的實現(xiàn)代碼2例,如果只是讀取內容推薦使用簡單版,有更多需求請見復雜版,需要的朋友可以參考下
    2014-08-08
  • Shell循環(huán)語句的使用(for循環(huán)、while循環(huán)、until循環(huán))

    Shell循環(huán)語句的使用(for循環(huán)、while循環(huán)、until循環(huán))

    本文主要介紹了Shell循環(huán)語句的使用(for循環(huán)、while循環(huán)、until循環(huán)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • linux shell之控制臺打印各種顏色字體和背景的實現(xiàn)方法

    linux shell之控制臺打印各種顏色字體和背景的實現(xiàn)方法

    今天小編就為大家分享一篇關于linux shell之控制臺打印各種顏色字體和背景的實現(xiàn)方法,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 判斷文件是否存在的shell腳本代碼

    判斷文件是否存在的shell腳本代碼

    判斷文件是否存在的shell腳本,有詳細的注釋,很不錯,有需要的朋友不妨參考下
    2013-02-02

最新評論