从 CLI 或 GUI 打印支票

从 CLI 或 GUI 打印支票

正在寻找一个程序或一种方法来在 Ubuntu 中打印到我的银行支票上。我不想使用 GNUCash 或 KMyMoney,因为它们是银行登记程序,每次打开其中一个来打印一张简单的支票太麻烦了。我保留了其他注册表,所以我不需要它们。

Lazarus 没有好的报告工具,我尝试过 FortesReports for Lazarus,但它有很多错误,无法横向打印,也无法更改纸张大小。简直一团糟。所以我自己没法制作应用程序。我考虑过进入 XP,用 Delphi 制作应用程序,很多 Delphi 7 应用程序都可以在 Wine 中运行。

但如果可以的话我愿意以某种方式坚持使用 Linux 原生。

那么,有人知道打印支票的方法或脚本吗?我尝试了 Ruby 脚本,但我找不到任何下载方法,所有链接都失效了。我在 Linux 上找到的 Python 支票打印应用程序也是一样。

我为它编写了一个 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% 完美,并且随着日期的变化,基于月份文本宽度的数量也会发生变化。

我读到过一些文章说 Latex 可以做到这一点,但我对 Latex 及其使用方法一无所知。我想要一种可以输入字段然后打印的东西。即使我必须使用 bash 脚本来获取字段并将其发送到 CLI 程序,就像我现在所做的那样。

答案1

经过大量的搜索和工作,它就是不存在。所以我最终选择了 Latex,后来发现,对于简单的表格打印来说,它并不像看起来那么难。这只是一个学习如何使用边距以及如何设置页面大小的问题。

为了创建乳胶文件并进行测试,我使用了 Texmaker,它似乎是功能最简单的。

最大的问题就是让 latex 把东西留出边距,通过另一个堆栈站点的帮助,我解决了问题,最后使用 bash 脚本打印最终的 PDF 并设置页面大小和横向。我最初尝试在 latex 文件中设置这两个东西,但就是不起作用。但是一旦我在 CLI 上将其设置为横向并检查大小,它就会像魔法一样工作。

所以 Latex 似乎是最简单、最快捷的方法,一旦你知道了。它是如此简单和快速,以至于一旦我有了一张支票的设置,我就去复制它并设置我的第二家银行的支票。第二次我只花了大约 10 分钟就为新支票重新布局了新的 Tex 文件。

我使用的乳胶格式是:

\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,这样在测试时我就不必打印一堆纸质文件并进行测试。我可以扫描支票并将其作为 latex 文件的背景,然后导出为 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 栏中有一个图标并单击它,它会要求输入参数,然后告诉我插入纸张,然后打印!

所以学习 Latex 是一件痛苦的事,但我不得不说,除非有软件出现,否则这似乎是最快、最简单的方法。另外,使用软件可能比直接这样做更麻烦一些。

相关内容