Capítulo 9. Impressão

Esta tradução pode estar desatualizada. Para ajudar com as traduções, acesse a ferramenta de traduções do FreeBSD.

Colocar informações no papel é uma função vital, apesar de muitas tentativas de eliminá-la. A impressão tem dois componentes básicos. Os dados devem ser entregues à impressora e devem estar em um formato que a impressora possa entender.

9.1. Inicio Rápido

A impressão básica pode ser configurada rapidamente. A impressora deve ser capaz de imprimir texto simples ASCII. Para imprimir em outros tipos de arquivos, consulte Filtros.

  1. Crie um diretório para armazenar arquivos enquanto eles estão sendo impressos:

    # mkdir -p /var/spool/lpd/lp
    # chown daemon:daemon /var/spool/lpd/lp
    # chmod 770 /var/spool/lpd/lp
  2. Como root, crie /etc/printcap com estes conteúdos:

    lp:\
    	:lp=/dev/unlpt0:\  (1)
    	:sh:\
    	:mx#0:\
    	:sd=/var/spool/lpd/lp:\
    	:lf=/var/log/lpd-errs:
    1Esta linha é para uma impressora conectada a uma porta USB.Para uma impressora conectada a uma porta paralela ou uma porta de "impressora", use:Para uma impressora conectada diretamente a uma rede, use:Substitua network-printer-name pelo nome de host DNS da impressora de rede.
  3. Ative o lpd editando o /etc/rc.conf, adicionando esta linha:

    lpd_enable="YES"

    Inicie o serviço:

    # service lpd start
    Starting lpd.
  4. Imprima um teste:

    # printf "1. This printer can print.\n2. This is the second line.\n" | lpr

    Se ambas as linhas não iniciarem na borda esquerda, mas em "degrau", consulte Impedindo degraus em impressoras de texto simples.

    Arquivos de texto agora podem ser impressos com lpr. Dê o nome do arquivo na linha de comando ou canalize a saída diretamente no lpr.

    % lpr textfile.txt
    % ls -lh | lpr

9.2. Conexões de Impressora

As impressoras são conectadas a sistemas de computadores de várias maneiras. Geralmente, as impressoras desktop pequenas são conectadas diretamente à porta USB do computador. As impressoras mais antigas são conectadas a uma porta paralela ou a porta de "impressora". Algumas impressoras estão diretamente conectadas a uma rede, facilitando o compartilhamento com vários computadores. Algumas impressoras usam uma rara conexão de porta serial.

O FreeBSD pode se comunicar com todos esses tipos de impressoras.

USB

As impressoras USB podem ser conectadas a qualquer porta USB disponível no computador.

Quando o FreeBSD detecta uma impressora USB, duas entradas de dispositivos são criadas: /dev/ulpt0 e /dev/unlpt0. Os dados enviados para qualquer dispositivo serão retransmitidos para a impressora. Após cada trabalho de impressão, o ulpt0 reseta a porta USB. O reset da porta pode causar problemas em algumas impressoras, portanto, o dispositivo unlpt0 é normalmente usado em seu lugar. O unlpt0 não reseta a porta USB.

Paralela (IEEE-1284)

O dispositivo da porta paralela é o /dev/lpt0. Este dispositivo aparece independentemente se uma impressora está ou não conectada, ela não é autodetectada.

A maior parte dos fabricantes se afastou destas portas "legadas" e muitos computadores não as têm mais. Adaptadores podem ser usados para conectar uma impressora paralela a uma porta USB. Com este tipo de adaptador, a impressora pode ser tratada como se fosse uma impressora USB. Dispositivos chamados servidores de impressão também podem ser usados para conectar impressoras paralelas diretamente a uma rede.

Serial (RS-232)

Portas seriais são outro tipo de porta legada, raramente usada para impressoras, exceto em determinadas aplicações de nicho. Os cabos, os conectores e a fiação necessária variam muito.

Para portas seriais incorporadas em uma placa-mãe, o nome do dispositivo serial é /dev/cuau0 ou /dev/cuau1. Os adaptadores Seriais USB também podem ser usados, e eles aparecerão como /dev/cuaU0.

Vários parâmetros de comunicação devem ser conhecidos para se comunicar com uma impressora serial. Os mais importantes são baud rate ou BPS (Bits por segundo) e paridade. Os valores variam, mas as impressoras seriais típicas usam uma taxa de transmissão de 9600 e nenhuma paridade.

Rede

As impressoras de rede estão conectadas diretamente à rede de computadores local.

O nome de host DNS da impressora deve ser conhecido. Se a impressora tiver um endereço dinâmico atribuído por DHCP, o DNS deverá ser atualizado dinamicamente para que o nome do host tenha sempre o endereço IP correto. As impressoras de rede geralmente recebem endereços IP estáticos para evitar esse problema.

A maioria das impressoras de rede entende os trabalhos de impressão enviados com o protocolo LPD. Um nome de fila de impressão também pode ser especificado. Algumas impressoras processam dados de maneira diferente, dependendo de qual fila é usada. Por exemplo, uma fila raw imprime os dados inalterados, enquanto a fila text adiciona retornos de carro aos textos simples.

Muitas impressoras de rede também podem imprimir dados enviados diretamente para a porta 9100.

9.2.1. Resumo

As conexões de rede com fio geralmente são as mais fáceis de configurar e oferecem a impressão mais rápida. Para conexão direta com o computador, a conexão USB é preferida em função da velocidade e da simplicidade. As conexões paralelas funcionam, mas têm limitações no comprimento do cabo e na velocidade. Conexões seriais são mais difíceis de configurar. A configuração do cabo difere entre os modelos, e os parâmetros de comunicação, como taxa de transmissão e bits de paridade, se somam a complexidade. Felizmente, as impressoras seriais são raras.

9.3. Linguagens de Descrição de Página Comuns

Os dados enviados a uma impressora devem estar em um idioma que a impressora possa entender. Esses idiomas são chamados de Linguagens de Descrição de Página ou PDLs.

Muitas aplicações da Coleção de Ports e muitos utilitários do FreeBSD produzem uma saída em PostScript™. Esta tabela mostra os utilitários disponíveis para converter o postscript em outros PDLs comuns:

Para facilitar a impressão, escolha uma impressora que suporte PostScript™. Impressoras que suportam PCL são as próximas preferidas. Com o print/ghostscript, essas impressoras podem ser usadas como se entendessem nativamente PostScript™. Impressoras que suportam PostScript™ ou PCL diretamente quase sempre suportam a impressão direta de arquivos de texto simples ASCII também.

Impressoras baseadas em linha, como as jatos de tinta comuns, geralmente não suportam PostScript™ ou PCL. Elas geralmente podem imprimir arquivos de texto plano ASCII. O print/ghostscript suporta os PDL usados por algumas dessas impressoras. Entretanto, a impressão de uma página inteira baseada em gráficos nessas impressoras costuma ser muito lenta devido à grande quantidade de dados a serem transferidos e impressos.

Geralmente, as impressoras baseadas em host são mais difíceis de configurar. Algumas não podem ser usadas por causa de PDLs proprietários. Evite essas impressoras quando possível.

Descrições de muitos PDLs podem ser encontradas em http://www.undocprint.org/formats/page_description_languages. O PDL específico usado por vários modelos de impressoras pode ser encontrado em http://www.openprinting.org/printers.

9.4. Impressão Direta

Para impressão ocasional, os arquivos podem ser enviados diretamente para um dispositivo de impressora sem qualquer configuração. Por exemplo, um arquivo chamado exemplo.txt pode ser enviado para uma impressora USB:

# cp sample.txt /dev/unlpt0

A impressão direta para impressoras de rede depende das capacidades da impressora, mas a maioria aceita trabalhos de impressão na porta 9100, e o nc(1) pode ser usado com eles. Para imprimir o mesmo arquivo em uma impressora com o nome de host DNS de netlaser:

# nc netlaser 9100 < sample.txt

9.5. LPD (Daemon de impressora de linha)

A impressão de um arquivo em segundo plano é chamada de spooling. Um spooler permite que o usuário continue com outros programas no computador sem ter de esperar que a impressora conclua lentamente o trabalho de impressão.

O FreeBSD inclui um spooler chamado lpd(8). Os trabalhos de impressão são enviados com o comando lpr(1).

9.5.1. Configuração inicial

Um diretório para armazenar trabalhos de impressão é criado, a propriedade é definida e as permissões são definidas para impedir que outros usuários visualizem o conteúdo desses arquivos:

# mkdir -p /var/spool/lpd/lp
# chown daemon:daemon /var/spool/lpd/lp
# chmod 770 /var/spool/lpd/lp

As impressoras são definidas no /etc/printcap. Uma entrada para cada impressora inclui detalhes como um nome, a porta onde ela está conectada e várias outras configurações. Crie /etc/printcap com estes conteúdos:

lp:\				(1)
	:lp=/dev/unlpt0:\	(2)
	:sh:\			(3)
	:mx#0:\			(4)
	:sd=/var/spool/lpd/lp:\	(5)
	:lf=/var/log/lpd-errs:	(6)
1O nome desta impressora. O lpr(1) envia trabalhos de impressão para a impressora lp, a menos que outra impressora seja especificada com -P, portanto, a impressora padrão deve ser denominada lp.
2O dispositivo em que a impressora está conectada. Substitua esta linha pela apropriada para o tipo de conexão mostrado aqui.
3Suprimir a impressão de uma página de cabeçalho no início de um trabalho de impressão.
4Não limite o tamanho máximo de um trabalho de impressão.
5O caminho para o diretório de spooling desta impressora. Cada impressora usa seu próprio diretório de spooling.
6O arquivo de log no qual os erros nesta impressora serão relatados.

Depois de criar o /etc/printcap, use chkprintcap(8) para testar se há erros:

# chkprintcap

Corrija quaisquer problemas relatados antes de continuar.

Ative o lpd(8) no /etc/rc.conf:

lpd_enable="YES"

Inicie o serviço:

# service lpd start

9.5.2. Imprimindo com o lpr(1)

Os documentos são enviados para a impressora com o lpr. Um arquivo a ser impresso pode ser nomeado na linha de comando ou canalizado para o lpr. Esses dois comandos são equivalentes, enviando o conteúdo de doc.txt para a impressora padrão:

% lpr doc.txt
% cat doc.txt | lpr

Impressoras podem ser selecionadas com -P. Para imprimir em uma impressora chamada laser:

% lpr -Plaser doc.txt

9.5.3. Filtros

Os exemplos mostrados até agora enviaram o conteúdo de um arquivo de texto diretamente para a impressora. Contanto que a impressora entenda o conteúdo desses arquivos, a saída será impressa corretamente.

Algumas impressoras não são capazes de imprimir texto simples, e o arquivo de entrada pode nem ser texto simples.

Filtros permitem que os arquivos sejam traduzidos ou processados. O uso típico é traduzir um tipo de entrada, como texto simples, em um formato que a impressora possa entender, como PostScript™ ou PCL. Os filtros também podem ser usados para fornecer recursos adicionais, como adicionar números de página ou destacar o código-fonte para facilitar a leitura.

Os filtros discutidos aqui são filtros de entrada ou filtros de texto. Esses filtros convertem o arquivo recebido em diferentes formatos. Use su(1) para se tornar root antes de criar os arquivos.

Os filtros são especificados em /etc/printcap com o identificador if=. Para usar /usr/local/libexec/lf2crlf como um filtro, modifique o /etc/printcap assim:

lp:\
	:lp=/dev/unlpt0:\
	:sh:\
	:mx#0:\
	:sd=/var/spool/lpd/lp:\
	:if=/usr/local/libexec/lf2crlf:\   (1)
	:lf=/var/log/lpd-errs:
1if= identifica o filtro de entrada que será usado no texto recebido.

Os caracteres backslash de continuação de linha no final das linhas nas entradas do printcap revelam que uma entrada para uma impressora é na verdade apenas uma linha longa com entradas delimitadas por dois pontos. O exemplo anterior pode ser reescrito como uma única linha menos legível:

lp:lp=/dev/unlpt0:sh:mx#0:sd=/var/spool/lpd/lp:if=/usr/local/libexec/lf2crlf:lf=/var/log/lpd-errs:

9.5.3.1. Impedindo degraus em impressoras de texto simples

Os arquivos de texto típicos do FreeBSD contêm apenas um único caractere de feed de linha no final de cada linha. Estas linhas vão ficar em "degraus" em uma impressora padrão:

Um arquivo impresso parece
                    como os degraus de uma escada
                                              espalhados pelo vento

Um filtro pode converter os caracteres de nova linha em retornos de carro e novas linhas. Os retornos de carro fazem a impressora retornar para a esquerda após cada linha. Crie o /usr/local/libexec/lf2crlf com este conteúdo:

#!/bin/sh
CR=$'\r'
/usr/bin/sed -e "s/$/${CR}/g"

Defina as permissões e torne-o executável:

# chmod 555 /usr/local/libexec/lf2crlf

Modifique o /etc/printcap para usar o novo filtro:

:if=/usr/local/libexec/lf2crlf:\

Teste o filtro imprimindo o mesmo arquivo de texto simples. O procedimento fará com que cada linha comece no lado esquerdo da página.

9.5.3.2. Texto simples chique em impressoras PostScript™ com print/enscript

O GNUEnscript converte arquivos de texto simples em arquivos formatados como PostScript™ para impressão em impressoras PostScript™. Ele adiciona números de página, quebra as linhas longas e fornece vários outros recursos para facilitar a leitura dos arquivos de texto impressos. Dependendo do tamanho do papel local, instale o print/enscript-letter ou o print/enscript-a4 da coleção Ports.

Crie o /usr/local/libexec/enscript com este conteúdo:

#!/bin/sh
/usr/local/bin/enscript -o -

Defina as permissões e torne-o executável:

# chmod 555 /usr/local/libexec/enscript

Modifique o /etc/printcap para usar o novo filtro:

:if=/usr/local/libexec/enscript:\

Teste o filtro imprimindo um arquivo de texto simples.

9.5.3.3. Imprimindo PostScript™ em impressoras PCL

Muitos programas produzem documentos PostScript™. No entanto, impressoras baratas geralmente só entendem texto simples ou PCL. Este filtro converte os arquivos PostScript™ para o formato PCL antes de enviá-los para a impressora.

Instale o interpretador de PostScript™ Ghostscript, print/ghostscript9, através da Coleção de Ports.

Crie o /usr/local/libexec/ps2pcl com este conteúdo:

#!/bin/sh
/usr/local/bin/gs -dSAFER -dNOPAUSE -dBATCH -q -sDEVICE=ljet4 -sOutputFile=- -

Defina as permissões e torne-o executável:

# chmod 555 /usr/local/libexec/ps2pcl

A entrada PostScript™ enviada para este script será processada e convertida em PCL antes de ser enviada para a impressora.

Modifique o /etc/printcap para usar este novo filtro de entrada:

:if=/usr/local/libexec/ps2pcl:\

Teste o filtro enviando um pequeno programa PostScript™ para ele:

% printf "%%\!PS \n /Helvetica findfont 18 scalefont setfont \
72 432 moveto (PostScript printing successful.) show showpage \004" | lpr

9.5.3.4. Filtros Inteligentes

Um filtro que detecta o tipo de entrada e converte automaticamente para o formato correto da impressora pode ser muito conveniente. Os dois primeiros caracteres de um arquivo PostScript™ são geralmente %!. Um filtro pode detectar esses dois caracteres. Os arquivos PostScript™ podem ser enviados de forma inalterada para uma impressora PostScript™. Arquivos de texto podem ser convertidos para PostScript™ com o Enscript como mostrado anteriormente. Crie o /usr/local/libexec/psif com este conteúdo:

#!/bin/sh
#
#  psif - Print PostScript or plain text on a PostScript printer
#
IFS="" read -r first_line
first_two_chars=`expr "$first_line" : '\(..\)'`

case "$first_two_chars" in
%!)
    # %! : PostScript job, print it.
    echo "$first_line" && cat && exit 0
    exit 2
    ;;
*)
    # otherwise, format with enscript
    ( echo "$first_line"; cat ) | /usr/local/bin/enscript -o - && exit 0
    exit 2
    ;;
esac

Defina as permissões e torne-o executável:

# chmod 555 /usr/local/libexec/psif

Modifique o /etc/printcap para usar este novo filtro de entrada:

:if=/usr/local/libexec/psif:\

Teste o filtro imprimindo PostScript™ e arquivos de texto simples.

9.5.4. Múltiplas filas

As entradas no /etc/printcap são na verdade definições de filas. Pode haver mais de uma fila para uma única impressora. Quando combinadas com filtros, múltiplas filas fornecem aos usuários um maior controle sobre como seus trabalhos são impressos.

Por exemplo, considere uma impressora laser PostScript™ em rede num escritório. A maioria dos usuários deseja imprimir texto simples, mas alguns usuários avançados querem poder imprimir diretamente os arquivos PostScript™. Duas entradas podem ser criadas para a mesma impressora no /etc/printcap:

textprinter:\
	:lp=9100@officelaser:\
	:sh:\
	:mx#0:\
	:sd=/var/spool/lpd/textprinter:\
	:if=/usr/local/libexec/enscript:\
	:lf=/var/log/lpd-errs:

psprinter:\
	:lp=9100@officelaser:\
	:sh:\
	:mx#0:\
	:sd=/var/spool/lpd/psprinter:\
	:lf=/var/log/lpd-errs:

Os documentos enviados para a fila textprinter serão formatados pelo filtro /usr/local/libexec/enscript mostrado em um exemplo anterior. Usuários avançados podem imprimir arquivos PostScript™ em psprinter, onde nenhuma filtragem é feita.

Esta técnica de múltiplas filas pode ser usada para fornecer acesso direto a todos os tipos de recursos da impressora. Uma impressora com um duplexador pode usar duas filas, uma para impressões em apenas um lado da folha e outra com um filtro que envia a seqüência de comandos para habilitar a impressão frente e verso e, em seguida, envia o arquivo recebido.

9.5.5. Monitoramento e controle de impressão

Vários utilitários estão disponíveis para monitorar trabalhos de impressão e verificar e controlar a operação da impressora.

9.5.5.1. lpq(1)

O lpq(1) mostra o status das tarefas de impressão de um usuário. Trabalhos de impressão de outros usuários não são mostrados.

Mostra os trabalhos pendentes do usuário atual em uma única impressora:

% lpq -Plp
Rank   Owner      Job  Files                                 Total Size
1st    jsmith     0    (standard input)                      12792 bytes

Mostra os trabalhos pendentes do usuário atual em todas as impressoras:

% lpq -a
lp:
Rank   Owner      Job  Files                                 Total Size
1st    jsmith     1    (standard input)                      27320 bytes

laser:
Rank   Owner      Job  Files                                 Total Size
1st    jsmith     287  (standard input)                      22443 bytes

9.5.5.2. lprm(1)

O lprm(1) é usado para remover trabalhos de impressão. Usuários normais só podem remover seus próprios trabalhos. O root pode remover qualquer um ou todos os trabalhos.

Remova todos os trabalhos pendentes de uma impressora:

# lprm -Plp -
dfA002smithy dequeued
cfA002smithy dequeued
dfA003smithy dequeued
cfA003smithy dequeued
dfA004smithy dequeued
cfA004smithy dequeued

Remova um único trabalho de uma impressora. O lpq(1) é usado para encontrar o número do trabalho.

% lpq
Rank   Owner      Job  Files                                 Total Size
1st    jsmith     5    (standard input)                      12188 bytes
% lprm -Plp 5
dfA005smithy dequeued
cfA005smithy dequeued

9.5.5.3. lpc(8)

O lpc(8) é usado para verificar e modificar o status da impressora. O lpc é seguido por um comando e um nome de impressora opcional. O parâmetro all pode ser usado em vez de um nome de impressora específico, e o comando será aplicado a todas as impressoras. Usuários normais podem visualizar o status com lpc(8). Somente o class="username">root pode usar comandos que modificam o status da impressora.

Mostrar o status de todas as impressoras:

% lpc status all
lp:
	queuing is enabled
	printing is enabled
	1 entry in spool area
	printer idle
laser:
	queuing is enabled
	printing is enabled
	1 entry in spool area
	waiting for laser to come up

Impedindo que uma impressora aceite novos trabalhos e fazendo com que ela comece a aceitar novos trabalhos novamente:

# lpc disable lp
lp:
	queuing disabled
# lpc enable lp
lp:
	queuing enabled

Pare de imprimir, mas continue aceitando novos trabalhos. Em seguida, comece a imprimir novamente:

# lpc stop lp
lp:
	printing disabled
# lpc start lp
lp:
	printing enabled
	daemon started

Reinicie uma impressora após alguma condição de erro:

# lpc restart lp
lp:
	no daemon to abort
	printing enabled
	daemon restarted

Desative a fila de impressão e desative a impressão, com uma mensagem para explicar o problema aos usuários:

# lpc down lp Repair parts will arrive on Monday
lp:
	printer and queuing disabled
	status message is now: Repair parts will arrive on Monday

Reative uma impressora que esteja inativa:

# lpc up lp
lp:
	printing enabled
	daemon started

Veja lpc(8) para mais comandos e opções.

9.5.6. Impressoras Compartilhadas

As impressoras costumam ser compartilhadas por vários usuários em empresas e escolas. Recursos adicionais são fornecidos para tornar as impressoras compartilhadas mais convenientes.

9.5.6.1. Aliases

O nome da impressora é definido na primeira linha da entrada em /etc/printcap. Nomes adicionais, ou aliases, podem ser adicionados após esse nome. Os aliases são separados do nome e um do outro por barras verticais:

lp|repairsprinter|salesprinter:\

Os aliases podem ser usados no lugar do nome da impressora. Por exemplo, os usuários do departamento de vendas imprimem em sua impressora com

% lpr -Psalesprinter sales-report.txt

Usuários do departamento de Reparos podem imprimir na sua impressora com

% lpr -Prepairsprinter repairs-report.txt

Todos os documentos são impressos nessa única impressora. Quando o departamento de vendas cresce o suficiente para precisar de sua própria impressora, o alias pode ser removido da entrada da impressora compartilhada e usado como o nome de uma nova impressora. Os usuários nos dois departamentos continuam usando os mesmos comandos, mas os documentos de vendas são enviados para a nova impressora.

9.5.6.2. Páginas de cabeçalho

Pode ser difícil para os usuários localizarem seus documentos na pilha de páginas produzidas por uma impressora compartilhada ocupada. Páginas de cabeçalho foram criadas para resolver este problema. Uma página de cabeçalho com o nome de usuário e o nome do documento é impressa antes de cada trabalho de impressão. Estas páginas são por vezes chamadas de páginas banner ou separadoras.

A ativação das páginas de cabeçalho é diferente, dependendo se a impressora está conectada diretamente ao computador com um cabo USB, paralelo ou serial, ou se está conectada remotamente por uma rede.

As páginas de cabeçalho em impressoras conectadas diretamente são ativadas removendo-se a linha :sh:\ (Suprimir Cabeçalho) da entrada no /etc/printcap. Essas páginas de cabeçalho usam apenas caracteres de feed de linha para novas linhas. Algumas impressoras precisarão do filtro /usr/shared/examples/printing/hpif para evitar imprimir o texto em escada. O filtro configura impressoras PCL para imprimir retornos de carro e alimentações de linha quando um feed de linha é recebido.

As páginas de cabeçalho das impressoras de rede devem ser configuradas na própria impressora. Entradas de página de cabeçalho no /etc/printcap são ignoradas. As configurações geralmente estão disponíveis no painel frontal da impressora ou em uma página da web de configuração acessível com um navegador da web.

9.5.7. Referências

Arquivos de exemplo: /usr/shared/examples/printing/.

O Manual do Spooler de Impressora de Linha do 4.3BSD, /usr/shared/doc/smm/07.lpd/paper.ascii.gz.

Páginas de manual: printcap(5), lpd(8), lpr(1), lpc(8), lprm(1), lpq(1).

9.6. Outros sistemas de impressão

Vários outros sistemas de impressão estão disponíveis, além do lpd(8). Esses sistemas oferecem suporte para outros protocolos ou recursos adicionais.

9.6.1. CUPS (Sistema de impressão comum UNIX™)

O CUPS é um sistema de impressão popular disponível em muitos sistemas operacionais. Usar o CUPS no FreeBSD está documentado em um artigo separado: CUPS

9.6.2. HPLIP

A Hewlett Packard fornece um sistema de impressão que suporta muitas de suas impressoras a jato de tinta e laser. O port é o print/hplip. A página principal da web está em http://hplipopensource.com/hplip-web/index.html. O port lida com todos os detalhes de instalação no FreeBSD. As informações de configuração são mostradas em http://hplipopensource.com/hplip-web/install/manual/hp_setup.html.

9.6.3. LPRng

O LPRng foi desenvolvido como uma alternativa aprimorada para o lpd(8). O port é sysutils/LPRng. Para detalhes e documentação, veja https://lprng.sourceforge.net/.


Última alteração em: 6 de junho de 2024 por Ed Maste