Bash

將大量文本文件轉換為 pdf,並根據標頭檔命名

  • March 28, 2018

知道“如何從文本轉換為 .pdf”在此處連結和此處連結已經得到很好的回答,我正在尋找更具體的內容:

使用 Claws-Mail [ website ] 和 Plug-In [ RSSyl ] 來閱讀 RSS feed 我收集了很多文本文件。這些我想轉換成 .pdf 文件。

問題:文件夾內的文件有編號

$$ 1, 2, …, 456 $$. 每個提要都有自己的文件夾,但在裡面我有“只是”編號的文件。每個文件都包含一個標題$$ followed by the message’s content $$:

Date: Tue,  5 Feb 2013 19:59:53 GMT
From: N/A
Subject: Civilized Discourse Construction Kit
X-RSSyl-URL: http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html
Message-ID: <http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html>
Content-Type: text/html; charset=UTF-8

&lt;html&gt;&lt;head&gt;&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
&lt;base href="http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html"&gt;
&lt;/head&gt;&lt;body&gt;
&lt;p&gt;URL: &lt;a href="http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html"&gt;http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html&lt;/a&gt;&lt;/p&gt;
&lt;br&gt;
&lt;!-- RSSyl text start --&gt;

問題:一種將每個文件轉換為.pdf文件並重命名的方法,基於Subject下給出的名稱。超級棒的將以這種方式轉換和重新命名:

"folder.name"_"date"_"file name"從標題數據中獲取的每個資訊。由於有幾百個文件,我正在尋找一種批處理方式。

文件已html格式化,但沒有.htm[l]後綴。

如果您有一個相對簡單的文件樹,其中只有一層目錄,並且每個目錄都包含一個文件列表但沒有子目錄,您應該能夠執行此類操作(您可以將其直接粘貼到您的終端並點擊Enter):

for dir in *; do    ## For each directory
if [ "$(ls -A "$dir")" ]; then  ## If the dir is not empty
  for file in "$dir"/*; do      ## For each file in $dir
   i=0;                         ## initialize a counter
   ## Get the subject
   sub=$(grep ^Subject: "$file" | cut -d ':' -f 2-);
   ## get the date, and format it to MMDDYY_Hour:Min:Sec
   date=$(date -d "$(grep ^Date: $file | cut -d ':' -f 2-)" +%m%d%y_%H:%M:%S);
   ## the pdf's name will be &lt;directory's name&gt; _ &lt;date&gt; _ &lt;subject&gt;
   name="$dir"_"$date"_"$sub";
   ## if a file of this name exists
   while [ -e "$dir/$name".pdf ]; do
     let i++;                       ## increment the counter
     name="$dir"_"$date"_"$sub"$i;  ## append it to the pdf's name
   done;
   wkhtmltopdf "$file" "$dir"/"$name".pdf; ## convert html to pdf
 done
fi
done

筆記

使用 webkit 渲染引擎和 qt 將 html 轉換為 pdf 的簡單 shell 實用程序。

在基於 Debian 的系統上,您可以使用

sudo apt-get install wkhtmltopdf
  • 它假定頂級目錄中沒有文件,所有子目錄中只有所需的 html 文件。
  • 它可以處理包含空格、換行符和其他非正統字元的文件和目錄名稱。
  • 給定一個包含dir1/foo您發布的範例內容的文件,它將創建一個名為dir1/dir1_020513_20:59:53_Civilized Discourse Construction Kit10.pdf

引用自:https://unix.stackexchange.com/questions/80411