Código de barras só aparece em localhost

Aug 27, 2014 at 2:19 AM
Edited Aug 27, 2014 at 2:22 AM
Olá,

Estou com um problema. O código de barras só aparece em locahost. Quando publico não aparece o código de barras.

já tentei fazer o que diz aqui: http://boletonet.codeplex.com/discussions/31857

e já tentei fazer o que diz aqui: https://boletonet.codeplex.com/discussions/392069

nada funciona.

segue meu código do aspx:

<%@ Page Title="" Language="vb" AutoEventWireup="false" 
CodeBehind="gerar_boleto_hospedagem.aspx.vb" Inherits="Chamados.gerar_boleto_hospedagem" %>

<%@ Register Assembly="ChamadosCtr" Namespace="ChamadosCtr" TagPrefix="cc1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <link href="Css/reset.css" rel="stylesheet" type="text/css" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Panel ID="panelBoleto" runat="server"></asp:Panel>
        <asp:Button ID="btnImprimir" runat="server" Text="Imprimir" />
    </div>
    </form>
</body>
</html>
segue o codebehind:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not Me.Page.IsPostBack Then

        Me.valor_int = Me.Request("valor_int")
        Me.valor_dec = Me.Request("valor_dec")
        Me.dia = Me.Request("dia")
        Me.mes = Me.Request("mes")
        Me.ano = Me.Request("ano")
        Me.idAlteracao = Me.Request("id")

        Dim boletoBancario As BoletoBancario = GerarBoletoBancario() 
        'Não vou por o código do método GerarBoletoBancario pois acho q não precisa
        'Mas se precisar boto o código todo aqui trocando os dados

        If panelBoleto.Controls.Count = 0 Then
            panelBoleto.Controls.Add(boletoBancario)
        End If

    End If

End Sub
Meu web.config:
<httpHandlers>
  <!--
  Usado no Boleto.Net para gerar a imagem do código de barras
  -->
  <add verb="*" path="ImagemCodigoBarra.ashx" validate="false" type="BoletoNet.ImagemCodigoBarraHandler"/>
  <add verb="GET" path="ImagemCodigoBarra.ashx" validate="false" type="BoletoNet.ImagemCodigoBarraHandler, BoletoNet"/>

</httpHandlers>
Em localhost aparece o código de barras, mas ao publicar o site o códigos de barra não aparece mais.

O que estou fazendo errado?
Aug 28, 2014 at 11:44 AM
Edited Aug 28, 2014 at 11:46 AM
ninguém respondeu...

:(

segue meus avanços:

criei um txt no notepad chamado ImagemCodigoBarra.txt
digitei dentro dele: <%@ WebHandler Language="vb" class="BoletoNet.ImagemCodigoBarraHandler" %>
renomeei a extensão de txt para ashx
copiei na mesma pasta do aspx que gera o boleto
adicionei ao meu projeto no VS

o código de barras então apareceu. huhuhuhu..... mas nada de comemorar ainda... ao imprimir não aparece nada. nem código de barras e nem o boleto. simplesmente uma página em branco.

Qual a mágica na hora de imprimir?
Sep 8, 2014 at 2:18 AM
amigo, isso é problema de permissão da pasta onde esta sendo gerado o boleto.
Sep 16, 2014 at 5:49 PM
Olá, Amigos,


Recentemente tive o Mesmo problema, o que ocorre é que a Imagem que é lida do diretório Temp do User no ou no caso do servidor da pasta Temp da aplicação, não está renderizando corretamente.

Alternativamente uma solução simples, porém é necessário alterar o Boleto.Net é renderizar a imagem do código de barras com o MemoryStream convertendo em Base64 e ajustando a resposta da tag src no img para data:base64.

Isso elimina qualquer problema de renderização, seja no servidor ou no localhost.

Esse método que criei Faz isso, deve ser inserido na Classe BoletoBancario e ser referenciado no Método HtmlOffLine convertendo o parametro srcCodigoBarra
public string ConvertCodigoBarrasToStringBase64(string imageWithPath)
        {
            Image oImg = Image.FromFile(imageWithPath);

            using (MemoryStream ms = new MemoryStream())
            {
                // Convert Image to byte[]
                oImg.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] imageBytes = ms.ToArray();

                // Convert byte[] to Base64 String
                string base64String = Convert.ToBase64String(imageBytes);
                return base64String;
            }
        }
Pelo menos, com isso resolveu,

Qualquer duvida, estamos ai.


Grande Abraço