Clipper On Line • Ver Tópico - Criar arquivo.txt no Javascript e Imprimir...

Criar arquivo.txt no Javascript e Imprimir...

Discussão sobre outras linguagens de programação.

Moderador: Moderadores

 

Criar arquivo.txt no Javascript e Imprimir...

Mensagempor ANDRIL » 20 Jan 2011 14:20

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
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1270
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

Re: Criar arquivo.txt no Javascript e Imprimir...

Mensagempor Toledo » 20 Jan 2011 16:02

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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Re: Criar arquivo.txt no Javascript e Imprimir...

Mensagempor ANDRIL » 20 Jan 2011 16:53

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
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1270
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

Re: Criar arquivo.txt no Javascript e Imprimir...

Mensagempor Dudu_XBase » 05 Fev 2011 09:59

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...


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Dudu_XBase
Membro Master

Membro Master
 
Mensagens: 1036
Data de registro: 25 Ago 2003 16:55
Curtiu: 24 vezes
Mens.Curtidas: 9 vezes

Re: Criar arquivo.txt no Javascript e Imprimir...

Mensagempor ANDRIL » 05 Fev 2011 17:10

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
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1270
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

Re: Criar arquivo.txt no Javascript e Imprimir...

Mensagempor Dudu_XBase » 09 Fev 2011 14:38

Tarde...
Desculpe pela demora...
Segue o Fonte...

/***
*
* 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...


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Dudu_XBase
Membro Master

Membro Master
 
Mensagens: 1036
Data de registro: 25 Ago 2003 16:55
Curtiu: 24 vezes
Mens.Curtidas: 9 vezes




Retornar para Outras linguagens de programação

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 10 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro