Array
(
)

Salvar em PDF tá dando pau

Pjava
   - 17 mai 2012

Pessoal, outro colega me deu um código para salvar em PDF e enxertei no código para que o cliente pudesse ver que é possível salvar em pdf. Bem, agora olhando bem para o resultado, não é satisfatório. Ele repete as barras(é para salvar uns gráficos gerados pelo Telerik), e não salva os subtítulos, apenas o título. Obeserveando bem, o título é passado diretamente na rotina. Abaixo a rotina que o colega passou. Alguém pode me dar uma luz quanto a salvar em PDF?
..........
if (opcao == 1)
{
this.Page.Response.AddHeader(Content-disposition, attachment; filename=Chart.png);
this.Page.Response.AddHeader(Content-type, image/png);
this.Page.Response.BinaryWrite(ms1.ToArray());
}
else if (opcao == 2)
{
this.Page.Response.AddHeader(Content-type, application/pdf);
Document pdfDoc = new Document(PageSize.A4.Rotate(), 10f, 10f, 10f, 0f);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
iTextSharp.text.Image img1 = iTextSharp.text.Image.GetInstance(ms1.ToArray());
iTextSharp.text.Image img2 = iTextSharp.text.Image.GetInstance(ms2.ToArray());
Font fonteTitulo1 = FontFactory.GetFont(Verdana, 12, iTextSharp.text.Font.BOLD);
fonteTitulo1.SetColor(255, 0, 0);
Chunk titulo1 = new Chunk(DESEMPENHO POR PERIODO, fonteTitulo1);
Phrase phrase1 = new Phrase(titulo1);
Paragraph p = new Paragraph();
p.Add(phrase1);
pdfDoc.Add(p);
img1.ScaleToFit(pdfDoc.PageSize.Width - 40f, pdfDoc.PageSize.Height);
img1.Alignment = Element.ALIGN_CENTER;
pdfDoc.Add(img1);
img2.ScaleToFit(pdfDoc.PageSize.Width - 40f, pdfDoc.PageSize.Height);
img2.Alignment = Element.ALIGN_CENTER;
pdfDoc.Add(img2);
pdfDoc.Close();
Response.Write(pdfDoc.ToString());
}
this.Page.Response.End();
}

Pjava
   - 17 mai 2012

A rotina completa

protected void btnSalvar_Click(object sender, EventArgs e)
{

System.IO.MemoryStream ms1 = new System.IO.MemoryStream();
System.IO.MemoryStream ms2 = new System.IO.MemoryStream();

this.radChart1.Save(ms1, System.Drawing.Imaging.ImageFormat.Png);
this.radChart2.Save(ms2, System.Drawing.Imaging.ImageFormat.Png);

this.Page.Response.Clear();
this.Page.Response.ClearHeaders();

int opcao = 2; // 1-download de imagem, 2-download de pdf
if (opcao == 1)
{
this.Page.Response.AddHeader(Content-disposition, attachment; filename=Chart.png);
this.Page.Response.AddHeader(Content-type, image/png);
this.Page.Response.BinaryWrite(ms1.ToArray());
}
else if (opcao == 2)
{
this.Page.Response.AddHeader(Content-type, application/pdf);

Document pdfDoc = new Document(PageSize.A4.Rotate(), 10f, 10f, 10f, 0f);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();

iTextSharp.text.Image img1 = iTextSharp.text.Image.GetInstance(ms1.ToArray());
iTextSharp.text.Image img2 = iTextSharp.text.Image.GetInstance(ms2.ToArray());

Font fonteTitulo1 = FontFactory.GetFont(Verdana, 12, iTextSharp.text.Font.BOLD);
fonteTitulo1.SetColor(255, 0, 0);
Chunk titulo1 = new Chunk(DESEMPENHO POR PERIODO, fonteTitulo1);
Phrase phrase1 = new Phrase(titulo1);
Paragraph p = new Paragraph();
p.Add(phrase1);
pdfDoc.Add(p);

img1.ScaleToFit(pdfDoc.PageSize.Width - 40f, pdfDoc.PageSize.Height);
img1.Alignment = Element.ALIGN_CENTER;
pdfDoc.Add(img1);

img2.ScaleToFit(pdfDoc.PageSize.Width - 40f, pdfDoc.PageSize.Height);
img2.Alignment = Element.ALIGN_CENTER;
pdfDoc.Add(img2);

pdfDoc.Close();

Response.Write(pdfDoc.ToString());
}

this.Page.Response.End();

}