Autoload CSV para etiquetas de impressão em lote (Brother P-touch Editor v5.1)

0

Meu objetivo é imprimir automaticamente etiquetas de envio para um site de comércio eletrônico com base em arquivos .csv criados periodicamente.

Eu tenho os arquivos .csv prontos. Eu também tenho o modelo de etiqueta de remessa pronto no P-Touch Editor. Esta aplicação permite conectar a um 'banco de dados' (na forma de um arquivo .csv neste caso) e preencher campos.

Neste ponto, preciso automatizar o processo de abertura do modelo de etiqueta no P-Touch Editor e conectá-lo ao arquivo .csv mais recente e, em seguida, imprimir todas as etiquetas. Como estou executando o OS X, o Applescript pareceu inicialmente a escolha óbvia, mas o P-Touch Editor parece não suportá-lo. Estou preso e procurando uma maneira de me comunicar com o P-Touch Editor ou criar etiquetas automaticamente em um aplicativo diferente e imprimir a partir dele.

Como alternativa, estou pensando em exportar uma página html do meu site de comércio eletrônico e configurar as dimensões de página e as quebras de página, e depois imprimi-la.

Alguém tem uma situação semelhante à minha ou conhece uma solução? No final, o objetivo é nunca ter que imprimir etiquetas manualmente e simplesmente pegar a pilha duas vezes por dia e começar a embalar.

    
por Martin 26.02.2015 / 23:25

3 respostas

1

Solução de Applescript:

Enquanto o "P-touch Editor" dos irmãos (v5.1) não suporta o Applescript, você pode usar o aplicativo "System Events" para informar um processo para executar tarefas. Isso funciona manipulando a GUI, pessoalmente eu não gosto dessa abordagem, mas funciona.

Para fazer o que está declarado na pergunta, escrevi o seguinte Applescript (isso só foi testado em um ambiente bastante controlado no OS X 10.10.1 (Yosemite), usando o P-touch Editor v5.1, e Applescript v2.4).

# set the location of the 'database'

set prepareShipments to "/some/dir/list.csv"

# set variables to identify the label the needs to be printed and the list containing the dataset
set templateDir to "/some/other/dir"
set templateName to "someTemplate"
set templateExt to ".lbx"
# open the template, my default application for this filetype is "P-touch Editor"
do shell script "open " & templateDir & templateName & templateExt
# "System Events" will tell its process "P-touch Editor" to perform our desired tasks
tell application "System Events"
    #hold-up while application is loading and set it to the 'frontmost' or active process
    repeat until frontmost of process "P-touch Editor" is true
        tell process "P-touch Editor" to set frontmost to true
    end repeat

    # actually start telling P-touch Editor what to do:
    tell process "P-touch Editor"
        # wait for template to open..
        repeat until exists window templateName
        end repeat

        # 'connect...' to database, if already connected (then the menu item is not clickable), choose to 'change...' the database instead
        click menu item "Connect..." of menu "Database" of menu item "Database" of menu "File" of menu bar item "File" of menu bar 1
        click menu item "Change..." of menu "Database" of menu item "Database" of menu "File" of menu bar item "File" of menu bar 1

        # hold-up until dialog window exists
        repeat until exists window "Open Database"
        end repeat

        # enter the location of the new 'database'
        set value of text field 1 of window "Open Database" to prepareShipments
        # my csv file does not contain headers. So uncheck the 'Header Row Contains Field Names' box
        if value of checkbox "Header Row Contains Field Names" of window "Open Database" is 1 then
            click checkbox "Header Row Contains Field Names" of window "Open Database"
        end if

        # just keep swimming...
        click button "Next" of window "Open Database"
        click button "OK" of window "Open Database"

        # database is connected to template; time to print
        click menu item "Print..." of menu "File" of menu bar item "File" of menu bar 1
        click button "Print" of sheet 1 of window templateName

        # printjob has been issued, time to wrap up. Close the window
        click menu item "Close" of menu "File" of menu bar item "File" of menu bar 1
        # changes have been made, give some time for the 'save changes' dialog to pop up.
        delay 0.5
        # if it did pop up, tell it to not save the changes (using short-cut '[cmd] + [down arrow] + d')
        if exists window 1 then
            if name of window 1 = templateName then keystroke "d" using command down
        end if
        # do a regular quit, we do not know if any other unsaved windows are open, or whether we want to keep those changes, so do not force any 'do not save' actions.
        click menu item "Quit P-touch Editor" of menu "P-touch Editor" of menu bar item "P-touch Editor" of menu bar 1
    end tell
end tell

#now that printjob is finished and P-touch Editor is quit, add some additional script for cleaning the inventory, moving printed .csv files to archived folder.

Veja os comentários no script acima para ver o que ele faz. É claro que isso poderia ser melhorado, a fim de dar conta de mais casos, mas eu irei executá-lo pessoalmente em um ambiente controlado. Muito provavelmente um Mac Mini sem cabeça que está conectado à impressora.

Resposta alternativa (mais apropriada para usuários do Windows):

Como @Hannu mencionou, há um 'SDK de rotulagem' disponível no site da Brother chamado 'b-PAC SDK'. Tecnicamente, permitiria a conexão automática do banco de dados usando um dos métodos descritos em este documento , mas requer um ambiente de janelas. Como meu servidor é executado no Linux e todos os meus clientes executam o OS X, não é possível testar isso ainda no momento. Parece ser uma solução mais "elegante", no entanto. Como eu não gosto de scripts para manipular GUI. Parece muito ineficiente.

    
por 27.02.2015 / 00:31
0

O editor P-touch deve ser capaz de fazer isso sozinho, pelo menos v5.x que eu estou usando (Windows).
Muitas vezes tenho uma lista de autofiltro de planilha do Excel como o banco de dados de origem.

Você abre o banco de dados,
em seguida, insira campos no rótulo,
então você vai embora.

Como não tenho acesso a eles em casa, não consigo criar um guia mais detalhado.

    
por 26.02.2015 / 23:33
0

Você pode gerar um modelo de etiqueta e enviá-lo para a impressora. No template você pode definir IDs para cada campo (texto, código de barras, etc). Em seguida, você pode imprimir diretamente pela rede e enviar para cada ID os dados corretos do seu site. A impressora então preenche os dados no modelo e os imprime. Se o fizesse no meu iPad para automatizar as etiquetas de impressão de um aplicativo personalizado. Para impressão em rede, usei o QL-720NW via WLAN. A impressão é feita com o RAW na porta 9100 para enviar os dados. Os comandos de impressão são explicados no manual de referência do comando ESC / P.

    
por 21.01.2017 / 22:52