Array
(
)

Erro exportação Report Viewer

Anonymous
   - 28 jan 2010

Fala galera....

Não sei se é um problema bobo, mas até agora estou quebrando a cabeça pra fazer funcionar.

Criei um relatório no Report Viewer que utiliza a fonte 3 of 9 barcode, (para código de barra), coloquei a fonte na pasta Fonts do Windows. Porém ao exportar para PDF a fonte não aparece, mas já quando exporto para excel fica perfeito.

Alguém tem idéia do que pode ser ?

Obrigado,

Dyego Furletti
|
MVP
    01 jun 2010

Cara se sua App for web tem que fazer uma gambi. No meu caso fiz assim segue um exemplo.  Tem que ter essa assemblys abaixo no caso da web codigo de barra tem que gera um imagem e depois importar para o relatorio.   Mais informações.   dyego_scofield@hotmail.com

using System;

using System.Collections;

using System.Configuration;

using System.Data;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

using System.IO;

using System.Drawing;

using System.Drawing.Text;

using System.Drawing.Imaging;

using System.Drawing.Drawing2D;

namespace Sistemas

{

public partial class boleto : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

}

protected void Button1_Click(object sender, EventArgs e)

{

byte[] x = GeraCodBarras("39996499854126741425209717040019642840000033560", ImageFormat.Bmp);

using (Stream s = File.Create(@"c:\cb\teste.bmp"))

{

s.Write(x, 0, x.Length);

}

}

protected byte[] GeraCodBarras(string data)

{

return GeraCodBarras(data, ImageFormat.Jpeg);

}

protected byte[] GeraCodBarras(string data, ImageFormat format)

{

data = ConverteCodBarras(data);

Bitmap codBarra;

Graphics gfx;

Brush blackBrush;

MemoryStream ms;

int x = 0;

foreach (char c in data)

{

if (c == 'F' || c == 'f')

x++;

if (c == 'G' || c == 'g')

x += 3; ;

}

codBarra = new Bitmap(x, 50);

gfx = Graphics.FromImage(codBarra);

blackBrush = new SolidBrush(Color.Black);

ms = new MemoryStream();

gfx.Clear(Color.White);

x = 0;

foreach (char c in data)

{

switch (c)

{

case 'F':

{

gfx.FillRectangle(blackBrush, x, 0, 1, 50);

x++;

break;

}

case 'f':

{

x++;

break;

}

case 'G':

{

gfx.FillRectangle(blackBrush, x, 0, 3, 50);

x += 3;

break;

}

case 'g':

{

x += 3;

break;

}

default:

break;

}

}

codBarra.Save(ms, format);

return ms.ToArray();

}

protected string ConverteCodBarras(string codBarras)

{

string retorno, barra, espaco;

string[] barras = { "00110", "10001", "01001", "11000", "00101", "10100", "01100", "00011", "10010", "01010" };

retorno = "FfFf";

if (codBarras.Length % 2 != 0)

codBarras = "0" + codBarras;

for (int i = 0; i < codBarras.Length; i+=2)

{

barra = barras[int.Parse(codBarras.Substring(i, 1).ToString())];

espaco = barras[int.Parse(codBarras.Substring(i + 1, 1).ToString())];

for (int j = 0; j < 5; j++)

{

if (barra.Substring(j, 1).ToString() == "0")

retorno += "F";

else

retorno += "G";

if (espaco.Substring(j, 1).ToString() == "0")

retorno += "f";

else

retorno += "g";

}

}

retorno += "GfFf";

return retorno;

}

}

}