Моя цель - автоматически печатать отгрузочные этикетки для веб-сайта электронной коммерции на основе периодически создаваемых .csv-файлов.

У меня есть готовые .csv-файлы. У меня также есть готовый шаблон этикетки в P-Touch Editor. Это приложение позволяет подключаться к «базе данных» (в данном случае в виде .csv-файла) и заполнять поля.

На данный момент мне нужно автоматизировать процесс открытия шаблона этикетки в P-Touch Editor и подключиться к последнему .csv-файлу, затем распечатать все этикетки. Поскольку я использую OS X, изначально Applescript казался очевидным выбором, но P-Touch Editor, похоже, не поддерживает его. Я застрял и ищу способ связаться с P-Touch Editor или автоматически создавать ярлыки в другом приложении и печатать оттуда.

В качестве альтернативы я рассматриваю возможность экспорта html-страницы со своего веб-сайта электронной коммерции и настройки правильных размеров страниц и разрывов страниц, а затем распечатываю это.

У кого-нибудь есть похожая ситуация с моей или известно решение? В конце концов, цель состоит в том, чтобы никогда не печатать этикетки вручную и просто собирать стопку два раза в день и начинать упаковывать.

3 ответа3

1

Решение Applescript:

Хотя «P-touch Editor» (v5.1) от Brothers не поддерживает Applescript, вы можете использовать приложение "Системные события", чтобы сообщить процессу о выполнении задач. Это работает, манипулируя GUI, лично мне не нравится этот подход, но это работает.

Чтобы сделать то, что указано в вопросе, я написал следующий Applescript (он был протестирован только в достаточно контролируемой среде на OS X 10.10.1 (Yosemite), с использованием P-touch Editor v5.1 и Applescript v2 +0,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.

Посмотрите комментарии в скрипте выше, чтобы увидеть, что он делает. Конечно, это можно улучшить, чтобы учесть больше случаев, но я лично буду управлять этим в контролируемой среде. Скорее всего, безголовый Mac Mini, подключенный к принтеру.

Альтернативный ответ (более подходящий для пользователей Windows):

Как упомянул @Hannu, на веб-сайте Brother доступен «Labeling SDK» под названием «b-PAC SDK». Технически это позволило бы автоматическое соединение с базой данных с использованием одного из методов, описанных в этом документе, но требует среды Windows. Так как мой веб-сервер работает под управлением Linux, а все мои клиенты работают под управлением OS X, в настоящий момент я не могу провести дальнейшую проверку этого. Однако, похоже, это более «элегантное» решение. Как я не люблю скрипты для манипулирования GUI. Это кажется очень неэффективным.

0

Редактор P-touch должен быть в состоянии сделать это сам, по крайней мере v5.x, который я использую (Windows).
У меня часто есть список автофильтра листа Excel в качестве исходной базы данных.

Вы открываете базу данных,
затем вставьте поля в метку,
тогда уходи.

Поскольку у меня нет доступа к ним дома, я не могу создать более подробное руководство.

0

Вы можете создать шаблон этикетки и загрузить его на принтер. В шаблоне вы можете определить идентификаторы для каждого поля (текст, штрих-код и т.д.). Далее вы можете распечатать непосредственно по сети и отправить для каждого удостоверения личности правильные данные с вашего сайта. Затем принтер заполняет данные в шаблон и распечатывает их. Если бы сделали это на моем iPad для автоматизации печати этикеток из пользовательского приложения. Для сетевой печати я использовал QL-720NW через WLAN. Печать затем выполняется с помощью RAW на порту 9100 для передачи данных. Команды печати описаны в справочном руководстве по командам ESC/P.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .