Nuno Posted October 7, 2013 at 02:20 PM Report #527893 Posted October 7, 2013 at 02:20 PM Boas Pessoal, Bem deparei-me com um problema relativamente estranho que após ter tentado 1001 forma ainda não consegui dar a volta. Portanto tenho uma aplicação vb.net que imprime em formato talão alguns dados, acontece que surgiu um cliente que não dispões de impressora talão mas sim uma A4, até aqui nenhum problema pois deveria funcionar perfeitamente mas por sua vez o que acontece é que a impressora recebe o documento a imprimir, recolhe a folha na impressora e não faz mais nada durante algum tempo (cerca 5min) e depois imprime. Coisas que descobri após vários testes: 1 - Só acontece se a impressora estiver ligada por USB pois por rede não existe qualquer problema (porta paralela não testada) 2 - caso a impressão seja por exemplo 3 páginas, imprime as duas primeiras e a 3 página fica em spool como se tivesse a aguardar alguma informação 3 - caso imprima logo de seguida outro documento e estando o documento anterior ainda em spool imprime a impressão anterior e a nova na mesma folha. suponho que seja alguma linha de código que falte acrescentar para finalizar documento mas não faço menos ideia o que seja. Alguém faz ideia o que possa ser?
nelsonr Posted October 7, 2013 at 02:45 PM Report #527896 Posted October 7, 2013 at 02:45 PM Boas, como é que estás a imprimir? Usando o PrintDocument? Estás a colocar o objecto de impressão dentro de um using ou a forçar o dispose no final?
Nuno Posted October 8, 2013 at 09:38 AM Author Report #528020 Posted October 8, 2013 at 09:38 AM uso a seguinte funçao para enviar para a impressora, penso que te referes a isto. Public Shared Sub SendStringToPrinter(ByVal szPrinterName As String, ByVal szString As String) Dim pBytes As IntPtr Dim dwCount As Int32 ' How many characters are in the string? dwCount = szString.Length() ' Assume that the printer is expecting ANSI text, and then convert ' the string to ANSI text. pBytes = Marshal.StringToHGlobalAnsi(szString) ' Send the converted ANSI string to the printer. SendBytesToPrinter(szPrinterName, pBytes, dwCount) Marshal.FreeCoTaskMem(pBytes) End Sub
nelsonr Posted October 8, 2013 at 11:10 AM Report #528036 Posted October 8, 2013 at 11:10 AM Essa função SendBytesToPrinter deve estar a usar as funções do winspool.drv. Podes experimentar no final da impressão usar a função "FlushPrinter" http://msdn.microsoft.com/en-us/library/windows/desktop/dd144818%28v=vs.85%29.aspx
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now