「テキストを.pdfに変換する方法」への答えはすでにここにあります。協会そしてここ協会、私はより具体的なものを探しています。
Claws-Mailの使用[ウェブサイト]とプラグイン[RSSyl] RSSフィードを読むために大量のテキストファイルを収集しました。これを.pdfファイルに変換したいです。
質問:フォルダのファイル番号は[1、2、… 、456] です。各フィードには独自のフォルダがありますが、内部には「ちょうど」番号付きのファイルしかありません。各ファイルにはヘッダー(後にメッセージの内容が続く)が含まれています。
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
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<base href="http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html">
</head><body>
<p>URL: <a href="http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html">http://www.codinghorror.com/blog/2013/02/civilized-discourse-construction-kit.html</a></p>
<br>
<!-- RSSyl text start -->
質問.pdf
:各ファイルをファイルに変換し、以下の名前に合わせて名前を変更する方法トピック。本当にクールなのは、次のように変換して名前を変更することです。
"folder.name"_"date"_"file name"
各情報はヘッダーデータから取得されます。何百ものファイルがあり、一括処理できる方法を探しています。
ファイルはhtml
フォーマットされていますが、サフィックスはありません.htm[l]
。
答え1
1つのレベルのディレクトリしかない比較的単純なファイルツリーがあり、各ディレクトリにファイルのリストが含まれているがサブディレクトリがない場合は、次のことができます(ターミナルに直接貼り付けてをクリックできます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 <directory's name> _ <date> _ <subject>
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
ノート
このソリューションには次のものが必要です。
wkhtmltopdf
:Webkitレンダリングエンジンとqtを使用してhtmlをpdfに変換するシンプルなシェルユーティリティです。
Debian ベースのシステムでは、次のコマンドを使用してインストールできます。
sudo apt-get install wkhtmltopdf
そこにいるとします。ファイルなしトップレベルディレクトリに必要なhtmlファイルのみが必要です。すべてのサブディレクトリにあります。
スペース、改行、その他の不正文字を含むファイルとディレクトリ名を処理できます。
dir1/foo
あなたが投稿したサンプルコンテンツを含むファイルが与えられると、次のファイルが生成されます。dir1/dir1_020513_20:59:53_Civilized Discourse Construction Kit10.pdf
答え2
命名規則に応じて、いつでもページタイトルを使用できるため、一意である必要があります。
アドレス一覧を含むファイルが与えられると、次は1行です。
while read url; do wkhtmltopdf $url "$(curl -s $url | grep -o "<title>[^<]*" | tail -c+8).pdf"; done < urls.lst
urls.lst
URLリストを含むファイルはどこにありますか?