Imprimindo verificações de CLI ou GUI

2

Procurando por um programa ou uma maneira de imprimir em meus cheques bancários no Ubuntu. Eu não quero usar o GNUCash ou o KMyMoney, pois são programas de registros bancários e é muito trabalhoso abrir cada um deles para imprimir uma simples verificação. Eu mantenho o registro em outro item, então eu não preciso deles também.

O Lazarus não tem uma boa ferramenta de Relatórios, eu experimentei o FortesReports for Lazarus e é muito, muito bugs, não imprime paisagem e não altera o tamanho do papel. É só uma bagunça. Então eu não posso fazer uma aplicação sozinho. Eu pensei em entrar no XP e com o Delphi fazendo o aplicativo, muitos dos aplicativos do Delphi 7 rodam no Wine.

Mas se eu puder ajudar, eu gostaria de manter o Linux nativo de alguma forma.

Então alguém sabe de uma maneira ou script para imprimir cheques? Eu tentei o script Ruby para isso, mas não consigo encontrar de qualquer maneira para baixá-lo mais, todos os links estão mortos. O mesmo acontece com o aplicativo de impressão de cheques do python que encontrei para o linux.

Eu criei um script Bash para ele, mas não é perfeito e não posso controlar as margens e o espaçamento dos campos.

Script de 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

Como eu disse, isso funciona bem, o problema é que o espaçamento não é 100% perfeito, e conforme a data vai mudando, o mesmo acontece com a quantidade baseada na largura do texto do mês.

Eu li em algum lugar que o Latex pode ser capaz de fazer isso, mas não sei absolutamente nada sobre o látex ou como usá-lo. Eu gostaria de algo que eu possa entrar nos campos e depois imprimir. Mesmo se eu tiver que usar um script bash para obter os campos e enviá-lo para um programa CLI como estou fazendo agora.

    
por jfreak53 06.09.2012 / 16:44

1 resposta

2

Depois de muita pesquisa e trabalho, simplesmente não existe. Então acabei indo com o Latex, descobri que a impressão simples de uma tabela não é tão difícil quanto parece. Foi apenas uma questão de aprender a usar as margens e definir os tamanhos das páginas.

Para criar o arquivo de látex e para testar eu usei o Texmaker, parecia ser o mais fácil com recursos.

A maior parte foi tirar o latex da margem de lucro, através da ajuda em outro site de stack. Eu acabei com as dobras e acabei usando um script bash para imprimir o PDF final e definir o tamanho da página e a paisagem. Eu tentei originalmente definir essas duas coisas no arquivo de látex, mas simplesmente não funcionaria. Mas uma vez que eu configurei o CLI para paisagem e o tamanho do cheque, funcionou como um encanto.

Então, Latex é, parece ser a maneira mais fácil e rápida, uma vez que você saiba. Foi tão fácil e rápido que uma vez que eu tinha uma configuração do meu cheque, eu copiei e configurei o cheque do meu segundo banco. A segunda vez só me levou cerca de 10 min. para re-layout do novo arquivo Tex para o novo cheque.

O formato de latex que usei era:

\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}

Como você notará, eu tenho variáveis para substituir, por exemplo, #date é a variável com a qual eu substituo a data e assim por diante com a outra. Isso permite que o SED da linha de comando os encontre e substitua de imediato.

Eu também tenho wallpaper no meu arquivo tex, isso é assim que ao testar eu não tenho que imprimir um monte no papel e testar. Eu posso digitalizar no meu cheque e colocá-lo como plano de fundo para o arquivo de látex, exportar para PDF para teste. Isso vem dentro do CM de onde eu precisava da final. Então, em geral, é uma boa maneira de testar.

Então o arquivo bash foi bem direto, graças ao Zenity, ao SED e ao LP.

#!/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

Primeiro, uso o Zenity para obter os parâmetros necessários para a verificação; Para, quantidade, data e a versão em texto do valor.

Em seguida, deixo o SED para uma pesquisa e substituo depois de fazer uma nova cópia do arquivo para a pesquisa e substituir. Depois de feito, exporto para PDF e imprimo usando a linha de comando do LP.

Em suma, é muito legal, pois agora tenho um ícone na minha barra do Gnome e clico nele, ele pede para params e depois me diz para inserir papel, depois imprimir!

Então foi um Latex doloroso, mas eu tenho que dizer até que algum software seja lançado, parece ser a maneira mais rápida e fácil. Além disso, o software pode ser um pouco mais complicado do que apenas fazê-lo dessa maneira.

    
por jfreak53 12.09.2012 / 19:26