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>());
        }
Exemple #3
0
        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));
        }