Página 1 de 1
Criar arquivo.txt no Javascript e Imprimir...
Enviado: 20 Jan 2011 15:20
por ANDRIL
Pessoal, já procurei muito na net e os exemplos que achei não funcionaram. O problema é que tenho que imprimir uma O.S através de um sistema Web feito em PHP. Não sei se estou enganado mais o PHP é muito ruim para impressão Matricial, pois a impressora usada é uma de 40 colunas PARALELA. Se fosse usar outro formato, poderia imprimir atraves do próprio browse, mais isso não vem ao caso.
Ai pensei, gero o TXT da O.S, outro obstáculo do PHP, não consegui salvar o TXT no computador, grava somente no servidor web.
Então pensei, vou usar o JAVASCRIPT já que é client-side, porem, também não consigo gravar nada na máquina local usando IE nem o CHROME.
Alguém tem uma saída ai. Ja tentei usar em php a PHP_PRINTER.DLL, porem no meu servidor web não reconhece esta dll, embora rode a versao acima da 5.0 e pelo que vi esta foi inclusa apartir da versao 4.x
PS: acho que nestas linguagens Webs faltam principalmente a facilidade de impressão que nosso Clipper tem e sinto muito a falta disso.
Abraços
Re: Criar arquivo.txt no Javascript e Imprimir...
Enviado: 20 Jan 2011 17:02
por Toledo
Andril, dê uma olhada neste código que encontrei num outro fórum:
George Carvalho escreveu:Em um script PHP imprimo direto para a impressora na porta Lpt1 usando as linhas abaixo:
// NOME E LOCAL DO ARQUIVO TEXTO
$caminho = "C:\imprimir.txt";
// CRIA/ABRE O ARQUIVO IMPRIMIR.TXT E APAGA OS DADOS EXISTENTE
$fp = fopen($caminho, "w+");
$linha1 = "\r $valor_imp $data_validade $numero_ch_comp";
$linha2 = "\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n";
$linha3 = "\r\nImpresso por [var_nome_usuário]";
$linha5 = "\r\n [nome_filiado]";
$linha6 = "\r\n $matricula_imp $cpf";
$linha7 = "\r\n\r\n\r\n";
$salva = fwrite($fp, $linha1);
$salva = fwrite($fp, $linha2);
$salva = fwrite($fp, $linha3);
$salva = fwrite($fp, $linha4);
$salva = fwrite($fp, $linha5);
$salva = fwrite($fp, $linha6);
$salva = fwrite($fp, $linha7);
// FECHA O ARQUIVO IMPRIMIR.TXT
fclose($fp);
// ENVIA O ARQUIVO PARA PORTA LPT1
exec("copy " . $caminho . " lpt1:");
Fonte: ScriptBrasil -
Imprimir arquivo texto usando PHP...
Abraços,
Re: Criar arquivo.txt no Javascript e Imprimir...
Enviado: 20 Jan 2011 17:53
por ANDRIL
Toledo obrigado pela resposta.
Infelizmente já havia tentado código semelhante ao seu post, sempre retorna:
Warning: exec() has been disabled for security reasons in /home/rrbrasil/public_html/site/impressao/imprime3.php on line 25
Vou entrar em contato com o suporte do provedor para ver se tem como habilitar esta função para que faça os testes. Já vi também em um forum, uma programadora que solicitou esse desbloqueio/permissão e o suporte do provedor negou dizendo que se liberasse o impresso seria encaminhado à impressora do servidor web.
Bom, continuo tentando se tiverem mais dicas, agradeço.
Abraços
Re: Criar arquivo.txt no Javascript e Imprimir...
Enviado: 05 Fev 2011 10:59
por Dudu_XBase
Bom dia.
No Asp net...nós demos um jeito aki...
Como o Microsoft .NET Framework não permite acesso diretamente à porta paralela (LPT1, LPT2), uso duas funções da API do Windows que permitem a abertura e fechamento da porta, sendo elas: CreateFileA() e CloseHandle(), que serão declaradas em um classe...
using System.Runtime.InteropServices;
...
...
[DllImport("kernel32.dll",EntryPoint="CreateFileA")]
static extern int CreateFileA(string lpFileName,int dwDesiredAccess, int dwShareMode,
int lpSecurityAttributes,
int dwCreationDisposition, int dwFlagsAndAttributes,
int hTemplateFile);
[DllImport("kernel32.dll",EntryPoint="CloseHandle")]
...
Eu não sei se no php vc tem algum comando que consegue fazer acesso a API...se tiver...já era...
Antes era tão fácil SET PRINTER TO LPT1....migramos o sistema em clipper para C#...mas a matricial véia de guerra ainda é util...
Re: Criar arquivo.txt no Javascript e Imprimir...
Enviado: 05 Fev 2011 18:10
por ANDRIL
Olá Dudu, quanto tempo heimmm!
Já fiz alguns projetos em ASP.NET e lembro que tive problemas semelhantes com relação a impressão. Se possível, voce teria como anexar o fonte que voce usa ou declara a classe. Vou tentar ver se dá certo.
Embora ache que em ASP.NET seja mais "fácil" do que em PHP por ser um ambiente Windows. Voce pode me dizer se o seu sistema em ASP fica em um SERVIDOR WEB ou voce usa ele na Intranet com ISS na rede local.
Agradeço sua ajuda.
Abraços
Re: Criar arquivo.txt no Javascript e Imprimir...
Enviado: 09 Fev 2011 15:38
por Dudu_XBase
Tarde...
Desculpe pela demora...
Segue o Fonte...
Código: Selecionar todos
/***
*
* Componente: ImprimeTexto *
* Data: 21/07/2004
* Objetivo: Imprime texto diretamente na porta da impressora.
*
***/
using System;
using System.Runtime.InteropServices;
using System.IO;
namespace LibWebDudu
{
/// <summary>
/// Classe para impressão de textos diretamente para a porta da impressora.
/// </summary>
///
public class ImprimeTexto
{
private int GENERIC_WRITE = 0x40000000; // indica a operação de gravação
private int OPEN_EXISTING = 3; // abre mesmo existindo o arquivo
private int FILE_SHARE_WRITE = 0x2; // define como escrita em modo compartilhado
private string sPorta; // armazena a porta que está sendo usada
private int hPort; // handle para a porta
private FileStream outFile; // objeto que indica a porta
private StreamWriter fileWriter; // objeto usado para escrever na porta
private IntPtr hPortP; // usado como identificador da porta no Windows
private bool lOK = false; // indica se conseguiu abrir a porta da impressora
/// <summary>
/// Retorna o caracter ASC indicado.
/// </summary>
/// <param name="asc">número do caracter na tabela ASCII</param>
/// <returns></returns>
private string Chr(int asc)
{
string ret = "";
ret += (char)asc;
return ret;
}
[DllImport("kernel32.dll",EntryPoint="CreateFileA")]
static extern int CreateFileA(string lpFileName,int dwDesiredAccess, int dwShareMode,
int lpSecurityAttributes,
int dwCreationDisposition, int dwFlagsAndAttributes,
int hTemplateFile);
[DllImport("kernel32.dll",EntryPoint="CloseHandle")]
static extern int CloseHandle(int hObject);
/// <summary>
/// Configura a impressora para impressão normal.
/// </summary>
public string Normal
{
get
{
return Chr(18);
}
}
/// <summary>
/// Configura a impressora para impressão em modo condensado.
/// </summary>
public string Comprimido
{
get
{
return Chr(15);
}
}
/// <summary>
/// Configura impressão 8 linhas por Polegada
/// </summary>
public string perinch8
{
get
{
return Chr(27)+"0";
}
}
/// <summary>
/// Configura a impressora para impressão em modo expandido.
/// </summary>
public string Expandido
{
get
{
return Chr(14);
}
}
/// <summary>
/// Configura a impressora para impressão em modo expandido normal.
/// </summary>
public string ExpandidoNormal
{
get
{
return Chr(20);
}
}
/// <summary>
/// Ativa o modo negrito da impressora.
/// </summary>
public string NegritoOn
{
get
{
return Chr(27)+Chr(69);
}
}
/// <summary>
/// Desativa o modo negrito da impressora.
/// </summary>
public string NegritoOff
{
get
{
return Chr(27)+Chr(70);
}
}
/// <summary>
/// Inicia a impressão em modo texto.
/// </summary>
/// <param name="sPortaInicio">Especifica a porta da impressora (LPT1,LPT2,LPT3,LPT4,...)</param>
/// <returns>Retorna true se inciar a impressora e false caso contrário</returns>
public bool Inicio(string sPortaInicio)
{
sPortaInicio.ToUpper();
/* if(sPortaInicio.Substring(0,3) != "LPT")
{
lOK = false;
throw new Exception("Porta LPT inválida.");
}*/
sPorta = sPortaInicio;
hPort = CreateFileA(sPorta, GENERIC_WRITE, FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
if(hPort != -1)
{
hPortP = new IntPtr(hPort);
outFile = new FileStream(hPortP, FileAccess.Write, false);
fileWriter = new StreamWriter(outFile);
lOK = true;
}
else
{
lOK = false;
}
return lOK;
}
/// <summary>
/// Finaliza a Impressao.
/// </summary>
public void Fim()
{
if(lOK)
{
fileWriter.Close();
outFile.Close();
CloseHandle(hPort);
lOK = false;
}
}
/// <summary>
/// Imprime uma string.
/// </summary>
/// <param name="sLinha">String a ser impressa</param>
public void Imp(string sLinha)
{
if(lOK)
{
fileWriter.Write(sLinha);
fileWriter.Flush();
}
}
Eu tenho 4 servidores Web Intranet Servidores Virtualizados num Dell com 2 Processador SixCore com bastante de RAM e com Hds SAs....bixim voa baixo...