Ejemplo n.º 1
0
 /// <summary>
 /// Representa forma de contato com a pessoa (física/jurídica) - tcContato
 /// </summary>
 public void WriteSignature(string localname, string fluxochamada, DadosAssinatura assinatura)
 {
     using (CreateStartElement(localname))
     {
         string fluxochamadain = $"{fluxochamada}|Signature";
     }
 }
Ejemplo n.º 2
0
        public static string BuildXmlGerarNFseEnvio(DadosDeclaracaoPrestacaoServico rps, DadosAssinatura assinatura)
        {
            XmlNFseWriter writer         = new XmlNFseWriter(MAIN_ELEMENT_GERARNFSEENVIO);
            string        fluxochamadain = MAIN_ELEMENT_GERARNFSEENVIO;
            DeclaracaoPrestacaoServicoAssinada assinada = new DeclaracaoPrestacaoServicoAssinada()
            {
                Dados = rps, Assinatura = assinatura,
            };

            writer.WriteTcDeclaracaoPrestacaoServico("RPS", fluxochamadain, assinada);
            return(writer.Build());
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Assina um pdf com um certificado válido
        /// </summary>
        /// <param name="certificate">X509 Certificado</param>
        /// <param name="dadosAssinatura">Dados da assinatura (DadosAssinatura)</param>
        /// <returns></returns>
        public static byte[] AssinarPdf(X509Certificate2 certificate, DadosAssinatura dadosAssinatura)
        {
            try
            {
                // ler arquivo e insere dados de assinatura
                using (PdfReader reader = new PdfReader(dadosAssinatura.Arquivo))
                {
                    using (MemoryStream fout = new MemoryStream())
                    {
                        PdfStamper stamper = PdfStamper.CreateSignature(reader, fout, '\0', null, true);

                        // texto marca d'água
                        Font f = new Font(Font.FontFamily.TIMES_ROMAN, 8);

                        string[] dados = certificate.GetNameInfo(X509NameType.SimpleName, false).Split(':');

                        Phrase pAssinado = new Phrase($@"Este documento foi assinado digitalmente por: {dados[0]}", f);

                        // Imagem marca d'água
                        //Image img = dadosAssinatura.Imagem;
                        float w = 200F;
                        float h = 75.2F;
                        // Transparência
                        PdfGState gs1 = new PdfGState();

                        // Propriedades
                        PdfContentByte over;
                        Rectangle      pagesize;

                        int n = reader.NumberOfPages;

                        //Página
                        var  pagina       = 1;
                        bool todasPaginas = false;
                        pagesize = reader.GetPageSizeWithRotation(pagina);

                        switch (dadosAssinatura.PaginaAssinatura)
                        {
                        case EnumPaginaAssinatura.PRIMEIRA:
                            pagina = 1;
                            break;

                        case EnumPaginaAssinatura.ULTIMA:
                            pagina = reader.NumberOfPages;
                            break;

                        case EnumPaginaAssinatura.TODAS:
                            todasPaginas = true;
                            break;

                        default:
                            pagina = 1;
                            break;
                        }

                        float x, y, xr = 0, hr = 0, yr = 0, wr = 0;
                        //Posição da assinatura
                        switch (dadosAssinatura.Posicao)
                        {
                        case EnumPosicao.ACIMA_ESQUERDA:
                            x  = (float)(pagesize.Left * 0.88);
                            y  = (float)(pagesize.Top * 0.88);
                            xr = x * 0.5F;
                            wr = w;
                            yr = pagesize.Top * 0.97F;
                            hr = pagesize.Top * 0.88F;

                            break;

                        case EnumPosicao.ACIMA_DIREITA:
                            x  = (float)(pagesize.Right * 0.64);
                            y  = (float)(pagesize.Top * 0.88);
                            xr = pagesize.Right * 0.97F;
                            wr = xr - w;
                            yr = pagesize.Top * 0.97F;
                            hr = pagesize.Top * 0.88F;
                            break;

                        case EnumPosicao.ABAIXO_ESQUERDA:
                            x  = (float)(pagesize.Left * 0.88);
                            y  = (float)(pagesize.Bottom * 0.88);
                            xr = x * 0.5F;
                            wr = w;
                            yr = y;
                            hr = h;
                            break;

                        case EnumPosicao.ABAIXO_DIREITA:
                            x  = (float)(pagesize.Right * 0.64);
                            y  = (float)(pagesize.Bottom * 0.88);
                            xr = x * 1.53F;
                            wr = w * 1.9F;
                            yr = y;
                            hr = h;
                            break;

                        case EnumPosicao.ABAIXO_CENTRO:
                            x  = (pagesize.Right * 1.74f - pagesize.Left) / 1.32f;
                            y  = (float)(pagesize.Bottom * 0.76);
                            xr = x * 1.53F;
                            wr = w * 1.53F;
                            yr = y;
                            hr = h;
                            break;

                        default:
                            x  = (float)(pagesize.Left * 0.88);
                            y  = (float)(pagesize.Top * 0.88);
                            xr = x * 1.53F;
                            wr = w * 1.9F;
                            break;
                        }

                        PdfSignatureAppearance appearance = stamper.SignatureAppearance;
                        appearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.DESCRIPTION;
                        appearance.Layer2Text             = "";
                        appearance.Layer4Text             = "";
                        Rectangle rect = new Rectangle(wr, hr, xr, yr);

                        //Plota a assinatura no pdf
                        if (todasPaginas)
                        {
                            for (int i = 1; i <= n; i++)
                            {
                                over = stamper.GetOverContent(i);
                                over.SaveState();
                                over.SetGState(gs1);
                                //over.AddImage(img, w, 0, 0, h, x, y);
                                ColumnText.ShowTextAligned(over, Element.ALIGN_TOP, pAssinado, x + 57, y + 15, 0);
                                ColumnText.ShowTextAligned(over, Element.ALIGN_TOP, pCodigAut, x + 84.5f, y + 5, 0);
                                over.RestoreState();
                            }
                        }
                        else
                        {
                            over = stamper.GetOverContent(pagina);

                            over.SaveState();
                            over.SetGState(gs1);
                            //over.AddImage(img, w, 0, 0, h, x, y);
                            ColumnText.ShowTextAligned(over, Element.ALIGN_TOP, pAssinado, x + 57, y + 15, 0);
                            ColumnText.ShowTextAligned(over, Element.ALIGN_TOP, pCodigAut, x + 84.5f, y + 5, 0);
                            over.RestoreState();
                        }



                        ICollection <Org.BouncyCastle.X509.X509Certificate> certChain;
                        IExternalSignature es = ResolveExternalSignatureFromCertStore(certificate, dadosAssinatura.CertificadoValido, out certChain);

                        //Autenticação da assinatura digital
                        MakeSignature.SignDetached(appearance, es, certChain, null, null, null, 0, CryptoStandard.CADES);

                        stamper.Close();
                        return(fout.ToArray());
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception($"Erro durante assinatura digital do pdf: {ex.Message}");
            }
        }
Ejemplo n.º 4
0
        public void GerarNFseNiteroi()
        {
            var declaracao = new DadosDeclaracaoPrestacaoServico
            {
                ConstrucaoCivil = new DadosConstrucaoCivil
                {
                    CodigoArt  = "64724",
                    CodigoObra = "743779"
                },
                DataCompetencia          = DateTime.Now,
                IsIncentivoFiscal        = SimNaoEnum.Nao,
                IsOptanteSimplesNacional = SimNaoEnum.Sim,
                Prestador = new IdentificacaoPessoaServico
                {
                    CpfCnpj            = "7847389423",
                    InscricaoMunicipal = "4803240",
                },
                RegimeEspecialTributacao = RegimeEspecialTributacaoEnum.MicroempresaMunicipal,
                Rps = new DadosInformativoRPS
                {
                    DataEmissao      = DateTime.Now,
                    IdentificacaoRPS = new DadosIdentificaoRPS
                    {
                        Numero = 78247,
                        Serie  = "474AS",
                        Tipo   = TipoRPSEnum.Cupom,
                    },
                    RPSSubstituido = new DadosIdentificaoRPS
                    {
                        Numero = 843189,
                        Serie  = "839IA",
                        Tipo   = TipoRPSEnum.NotaFiscalConjugada,
                    },
                    Status = StatusRPSEnum.Normal,
                },
                Servico = new DadosServico
                {
                    CodigoCnae                = 748378,
                    CodigoItemListaServico    = "499",
                    CodigoMunicipio           = 8938493,
                    CodigoPais                = "55",
                    CodigoTributacaoMunicipio = "522",
                    Discriminacao             = "5kfkd",
                    ExigibilidadeISS          = ExigibilidadeIssEnum.Exigivel,
                    IsIssRetido               = SimNaoEnum.Sim,
                    MunicipioIncidencia       = 4948392,
                    NumeroProcesso            = "594859485",
                    ResponsavelRetencao       = ResponsavelRetencaoEnum.Intermediário,
                    Valores = new DadosValoresDeclaracaoServico
                    {
                        Aliquota               = 19.9m,
                        DescontoCondicionado   = 0.5m,
                        DescontoIncondicionado = 0.3m,
                        ValorCofins            = 19,
                        ValorCsll              = 100,
                        ValorDeducoes          = 1999,
                        ValorInss              = 73478,
                        ValorIr              = 4728472,
                        ValorIss             = 13233.7438m,
                        ValorOutrasRetencoes = 748.929m,
                        ValorPis             = 478,
                        ValorServicos        = 4388,
                    },
                },
                TomadorServico = new DadosTomador
                {
                    Contato = new DadosContato
                    {
                        Email    = "*****@*****.**",
                        Telefone = "(21)99981-2388",
                    },
                    Endereco = new DadosEndereco
                    {
                        Endereco        = "Rua Antonio Victor",
                        Numero          = "61",
                        Complemento     = "Casa",
                        Bairro          = "Mutuá",
                        CodigoMunicipio = 12,
                        CodigoPais      = "55",
                        Cep             = "24461170",
                        Uf = "RJ",
                    },
                    IdentificacaoTomador = new IdentificacaoPessoaServico
                    {
                        CpfCnpj            = "5453553",
                        InscricaoMunicipal = "74287428",
                    },
                    RazaoSocial = "Teste LTDA",
                },
                ValoresDeclaracao = new DadosValoresDeclaracaoServico
                {
                    Aliquota               = 19.9m,
                    DescontoCondicionado   = 0.5m,
                    DescontoIncondicionado = 0.3m,
                    ValorCofins            = 19,
                    ValorCsll              = 100,
                    ValorDeducoes          = 1999,
                    ValorInss              = 73478,
                    ValorIr              = 4728472,
                    ValorIss             = 13233.7438m,
                    ValorOutrasRetencoes = 1748.929m,
                    ValorPis             = 478,
                    ValorServicos        = 4388,
                },
            };
            DadosAssinatura assinatura = new DadosAssinatura();

            string dadosxml     = XmlNFse.BuildXmlGerarNFseEnvio(declaracao, assinatura);
            string cabecalhoxml = XmlNFse.BuildXmlCabecalho(1, 1);

            string response = _client.GerarNfse(cabecalhoxml, dadosxml);
        }