public string Comprimir2Base64(object[] arquivos) { MemoryStream memoryStream = new MemoryStream(); using (Ionic.Zip.ZipOutputStream zipOutputStream = new Ionic.Zip.ZipOutputStream(memoryStream)) { byte[] array = new byte[4096]; for (int i = 0; i < arquivos.Length; i++) { ArquivoPdf arquivoPdf = (ArquivoPdf)arquivos[i]; MemoryStream memoryStream2 = new MemoryStream(arquivoPdf.Dados); Ionic.Zip.ZipEntry zipEntry = new Ionic.Zip.ZipEntry(); zipOutputStream.PutNextEntry(arquivoPdf.Nome); int num; do { num = memoryStream2.Read(array, 0, array.Length); zipOutputStream.Write(array, 0, num); }while (num > 0); } zipOutputStream.Close(); } byte[] array2 = memoryStream.ToArray(); return(Convert.ToBase64String(array2, 0, array2.Length)); }
public ArquivoPdf[] DescomprimirBase64(byte[] ArquivosZip) { MemoryStream baseInputStream = new MemoryStream(ArquivosZip); ICSharpCode.SharpZipLib.Zip.ZipInputStream zipInputStream = new ICSharpCode.SharpZipLib.Zip.ZipInputStream(baseInputStream); IList <ArquivoPdf> list = new List <ArquivoPdf>(); ICSharpCode.SharpZipLib.Zip.ZipEntry nextEntry; while ((nextEntry = zipInputStream.GetNextEntry()) != null) { MemoryStream memoryStream = new MemoryStream(); ArquivoPdf arquivoPdf = new ArquivoPdf(); long num = nextEntry.Size; arquivoPdf.Nome = nextEntry.Name; byte[] array = new byte[1024]; while (true) { num = (long)zipInputStream.Read(array, 0, array.Length); if (num <= 0L) { break; } memoryStream.Write(array, 0, (int)num); } memoryStream.Close(); arquivoPdf.Dados = memoryStream.ToArray(); list.Add(arquivoPdf); } return(list.ToArray <ArquivoPdf>()); }
public async Task <RetornoHttp> GerarHtmlToPdf(ConteudoPdf conteudo) { if (conteudo == null || String.IsNullOrEmpty(conteudo.Conteudo)) { return(RetornoHttp.ResultErro("Conteudo para gerar o PDF não informado.")); } ArquivoPdf arquivo = null; DirectoryInfo pasta = new DirectoryInfo("/data"); if (!pasta.Exists) {//Criar pasta.Create(); } var rng = new Random((int)DateTime.Now.Ticks); String pathArquivo = pasta.FullName + "/" + string.Format("{0}.pdf", rng.Next().ToString("0000000000")); FileInfo arquivoPdf = new FileInfo(pathArquivo); Document doc = new Document(PageSize.A4); //criando e estipulando o tipo da folha usada doc.SetMargins(40, 40, 40, 80); //estibulando o espaçamento das margens que queremos doc.AddCreationDate(); //adicionando as configuracoes PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(arquivoPdf.FullName, FileMode.Create)); doc.Open(); //criando uma string vazia string dados = ""; //criando a variavel para paragrafo Paragraph paragrafo = new Paragraph(dados, new Font(Font.NORMAL, 14)); //etipulando o alinhamneto paragrafo.Alignment = Element.ALIGN_JUSTIFIED; //Alinhamento Justificado adicioando texto paragrafo.Add(conteudo.Conteudo); //acidionado paragrafo ao documento doc.Add(paragrafo); //fechando documento para que seja salva as alteraçoes. doc.Close(); writer.Flush(); writer.Close(); //Atualizar arquivo = new ArquivoPdf(); arquivo.Nome = arquivoPdf.Name; arquivo.Tamanho = arquivoPdf.Length; arquivo.DataHora = arquivoPdf.CreationTime; return(RetornoHttp.ResultSucesso(arquivo)); }