web-dev-qa-db-ja.com

CLIまたはGUIからの小切手の印刷

Ubuntuでプログラムまたは銀行小切手に印刷する方法を探しています。 GNUCashやKMyMoneyは銀行登録プログラムのものであり、簡単な小切手を印刷するために毎回これらの1つを開くのは面倒なので、私は使用したくありません。私はレジストリを他のウェアに保存しているので、それらも必要としません。

Lazarusには優れたレポートツールがありません。私はLazarusのFortesReportsを試しましたが、非常にバグが多く、横向きに印刷したり、用紙サイズを変更したりしません。それはただの混乱です。だから自分で応募することはできません。 XPに行くことを考え、Delphiでアプリを作成すると、多くのDelphi 7アプリがWineで実行されます。

しかし、もし私がそれを助けることができるなら、どういうわけかLinuxネイティブに固執したいと思います。

小切手を印刷する方法やスクリプトを知っている人はいますか?私はRubyスクリプトを試してみましたが、どうしてもダウンロードする方法が見つからず、すべてのリンクが無効になっています。pythonと同じです。Linux用に見つけた印刷アプリを確認してください。

私はそのためにBashスクリプトを作成しましたが、それは完璧ではなく、フィールドのマージンと間隔を実際に制御することはできません。

Bashスクリプト:

#!/bin/sh

day=$(zenity --entry --text "Day of Month");
month=$(zenity --entry --text "Month");
amount=$(zenity --entry --text "Amount for Check");
to=$(zenity --entry --text "The check is made out to");
letters=$(zenity --entry --text "Amount in Letters");

rm -f prcheck
echo "



     Guatemala $day de $month del 2,012       $amount
     $to

   $letters" > prcheck

lp -o media=2.5x6.5 -o landscape -o page-top=-0.5 prcheck

私がこれがうまくいくと言ったように、問題は間隔が100%完璧ではないことです、そして日付が変わるにつれて月のテキスト幅に基づいた量も変わります。

私はどこかでラテックスがそれを行うことができるかもしれないと読んだが、私はラテックスまたはそれをどのように使用するかについて全く知らない。フィールドに入力するだけで印刷できるものが欲しいのですが。私が今しているように、フィールドを取得してCLIプログラムに送信するためにbashスクリプトを使用する必要がある場合でも、.

3
jfreak53

多くの検索と作業の後、それは存在しません。だから私はラテックスで行くことになりました、見た目ほど難しくない簡単なテーブル印刷を見つけに来てください。マージンの使い方とページサイズの設定方法を学ぶだけでした。

ラテックスファイルを作成してテストするために、Texmakerを使用しましたが、機能を使用するのが最も簡単であるように思われました。

最大の部分は、別のスタックサイトの助けを借りて、ラテックスをマージンから解放することでした。ねじれを取り除き、bashスクリプトを使用して最終的なPDFを印刷し、ページサイズと横長を設定しました。ラテックスファイルでこれらの2つを最初に設定しようとしましたが、それは機能しませんが、CLIで横長に設定し、チェックサイズを設定すると、魅力的なように機能しました。

だからラテックスは、知っていれば、最も簡単で最速の方法のようです。とても簡単で高速だったので、小切手のいずれかの設定が完了したら、コピーして2番目の銀行の小切手を設定しました。 2回目は約10分しかかかりませんでした。新しいチェック用に新しいTexファイルを再レイアウトします。

私が使用したlatexフォーマットは:

\documentclass[12pt]{article}

\usepackage[paperwidth=6in,paperheight=2.75in,margin=0.60in]{geometry}

\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
%\usepackage{wallpaper}
%\CenterWallPaper{1}{check53.png}

\pagestyle{empty}

\setlength{\parindent}{0pt}

\begin{document}

\begin{tabular}{ @{} p{4.05in} l @{} }
\multicolumn{2}{ l }{\hspace{3in}\textbf{#date}} \\ 
\rule{0pt}{0.30in}\hspace{0.30in}\textbf{#to} & \textbf{#amount} \\
\multicolumn{2}{ l }{\rule{-0.20in}{0.25in}\textbf{#letters}} \\
\end{tabular} 

\end{document}

気が付くと思いますが、たとえば、置換する変数があります。#dateは、日付を置き換える変数で、他の変数も同様です。これにより、コマンドラインからSEDがそれらを見つけて、すぐに置き換えることができます。

私のtexファイルにはwallpaperも含まれています。これにより、テスト時に束を紙に印刷してテストする必要がなくなります。小切手をスキャンして、ラテックスファイルの背景として配置し、PDFにエクスポートしてテストできます。これは、ファイナルが必要な場所にあるCMの範囲内にあります。つまり、すべての点で良い方法です。検査用の。

その後、Zenity、SED、LPのおかげで、bashファイルはかなり単純なものになりました。

#!/bin/sh

date=$(zenity --entry --text "Date");
amount=$(zenity --entry --text "Amount for Check");
to=$(zenity --entry --text "The check is made out to");
letters=$(zenity --entry --text "Amount in Letters");

rm -f check532.pdf
cp check53.tex check532.tex
sed -i "s,#date,$date," check532.tex
sed -i "s/#amount/$amount/" check532.tex
sed -i "s/#to/$to/" check532.tex
sed -i "s,#letters,$letters," check532.tex

pdflatex check532.tex

#echo "Please put your check in the printer, right side down."
#read -p "Press any key to print... " -n1 -s
zenity --info --text "Please put your check in the printer, right side down. Then click OK to print."

lp -o media=2.75x6 -o landscape check532.pdf
rm -f check532.log check532.pdf check532.aux check532.tex

まず、Zenityを使用して、チェックに必要なパラメーターを取得します。金額、日付、金額のテキスト版。

次に、検索と置換のためにファイルの新しいコピーを作成した後、SEDに検索と置換をさせました。完了したら、PDFにエクスポートしてから、LPコマンドラインを使用して印刷します。

結局のところ、Gnomeバーにアイコンが表示されてクリックされているので、とてもかっこいいです。パラメーターを要求してから、用紙を挿入して印刷するように指示されます。

ラテックスを学ぶのは大変でしたが、いくつかのソフトウェアが登場するまでは、これが最も速くて簡単な方法のように思えます。プラスソフトウェアは、この方法で行うよりも少し面倒かもしれません。

2
jfreak53