none
Tranformar figura em HTML temporário

    Question

  • Oi gente!

    Preciso transformar uma imagem BMP em um PDF, e para isso o pessoal aqui do meu trabalho irá adquirir um software chamado ExpertPDF. O problema é que esse programa transforma páginas HTML em PDF e não imagens. Eu já havia feito isso utilizando o itextsharp, mas eles querem que eu use esse outro. Então pensei se não há uma maneira de transformar a imagem que eu tenho em uma página ASP ou HTML e aí sim tranformá-la em PDF.
    Bom, vou mostrar para vocês como estou pegando a imagem, já que ela é gerada no mesmo código que será gerado o PDF:

                Bitmap bmp = new Bitmap(Resource1.SolicitacaoInternacao); //Criando bitmap do arquivo
                Graphics g = Graphics.FromImage(bmp); //Criando gráfico do arquivo

                System.Drawing.Rectangle treta = new System.Drawing.Rectangle(693, 58, bmp.Width, bmp.Height);

                StringFormat sf = new StringFormat();
                g.DrawString("Seu texto", new System.Drawing.Font("tahoma", 20), Brushes.Black, treta, sf);

                //salvando imagem, altere para o nome desejado
                bmp.Save(Server.MapPath("imagem_escrito.jpg"));


    Agora quero que o bmp se transforme em uma HTML ou página ASP.NET.

    Obrigada,

    Amalia
    Monday, August 10, 2009 12:42 PM

All replies

  • Amalia,

    Verifique se os links abaixo podem lhe ajudar:

    Converting Image Files to PDF
    http://www.codeproject.com/KB/files/imagetoPDF.aspx

    PDFsharp
    http://pdfsharp.com/PDFsharp/

    Att.

    Ari C. Raimundo
    Monday, August 10, 2009 1:23 PM
  • Infelizmente não, pois como eu disse, tenho que utilizar o software que eles vão comparar para a empresa, então a solução que achei foi tranformar a figura em html.
    Se eu soubesse onde é armazanada a figura (o seu path) talvez consiga fazer o que preciso.
    Monday, August 10, 2009 1:29 PM
  • Amalia,

    Você sabe onde foi armazenada a imagem.

    string pastaImagem = Server.MapPath("imagem_escrito.jpg");

    Att.

    Ari C. Raimundo
    Monday, August 10, 2009 1:52 PM
  • Desculpa, isso é verdade, mas é que quando eu coloco esse path ele não está abrindo... Por isso quero ver se transformava de outro jeito.

    Penso que talvez meu problema esteja na imagem, porém quando eu utilizava o ItextSharp ele estava funcionando corretamente.

    Já transformei para bytes, ao invés de utilizar html, mas ele fala que o arquivo foi corrompido... =/
    Monday, August 10, 2009 2:27 PM
  • Amalia,

    Particularmente acho que você deveria utilizar aquela biblioteca que te passei (PDFsharp). Não tem sentido criar uma página HTML para transformar o arquivo de imagem para PDF, a não ser que o PDF deva ficar formatado ou contenha outras informações.

    Se precisa realmente criar o HTML, faça a criação de um arquivo HTML temporário pelo C# que referencie aquela imagem "imagem_escrito.jpg" e então utilize o ExpertPDF para transformar para PDF. Depois de transformado o arquivo para PDF, apague o arquivo HTML temporário.

    Att.

    Ari C. Raimundo
    Monday, August 10, 2009 2:35 PM
  • Eu JURO que se eu pudesse utilizaria o PDFSharp... Na verdade eu nem estaria aqui se não tivesse que usar o que eles estão pedindo, mas não posso.

    E é exatamente isso que eu não sei fazer:
     "Se precisa realmente criar o HTML, faça a criação de um arquivo HTML temporário pelo C# que referencie aquela imagem "imagem_escrito.jpg" e então utilize o ExpertPDF para transformar para PDF. Depois de transformado o arquivo para PDF, apague o arquivo HTML temporário ."

    Como eu faço isso? Estou a pouco tempo na área e não tenho curso algum, não faço idéia de como eu crio um HTML temporário.
    Monday, August 10, 2009 2:49 PM
  • Amalia,

    Para criar um arquivo HTML temporário você precisa criar um arquivo texto em uma pasta temporária. O conteúdo do arquivo seria o código HTML.

    Exemplo bem simples:

    using (System.IO.StreamWriter sw = new System.IO.StreamWriter(nomeArquivoHtmlTemporario))
    {
        sw.WriteLine(@"<HTML><HEAD></HEAD><BODY>");
        sw.WriteLine(@"<IMG SRC=""{0}"" ALT=""TESTE"">", pastaImagem);
        sw.WriteLine(@"</BODY></HTML>");
    }

    Att.

    Ari C. Raimundo
    Monday, August 10, 2009 3:05 PM
  • Amália, eu faria da seguinte forma:

    instanciaria uma string e armazenaria o HTML com a referencia da imagem nela (Veja esse link para um tutorial de como fazê-lo http://www.csharp-station.com/HowTo/ReadWriteTextFile.aspx);
    depois utilizaria a ferramenta que você precisa utilzar para gerar o PDF.

    Se precisar de um exemplo, da um toque.

    Abraço!
    Monday, August 10, 2009 3:29 PM