示例#1
0
        private void PrintDescricaoDanfe(RectangleF area, BlockComposer bComp, PrimitiveComposer comp)
        {
            comp.SafeDrawRectangle(area);

            // Retangulo com padding
            RectangleF pRet = area.GetPaddedRectangleMm(1);

            // DANFE e descrição
            bComp.SafeBegin(pRet, XAlignmentEnum.Center, YAlignmentEnum.Top);
            comp.SetFont(Danfe.FontBold, 12);
            bComp.ShowText("DANFE");
            comp.SetFont(Danfe.Font, 6);
            bComp.ShowBreak(new SizeF(0, 1));
            bComp.ShowText(DescricaoDanfe);
            bComp.End();

            // Entrada, Saída
            RectangleF rEntrasaSaida = new RectangleF(pRet.X, bComp.BoundBox.Bottom + Utils.Mm2Pu(1.5F), pRet.Width, pRet.Bottom - bComp.BoundBox.Bottom);

            rEntrasaSaida = rEntrasaSaida.GetPaddedRectangleMm(0, 2.5F);

            comp.SetFont(Danfe.Font, 8);
            bComp.SafeBegin(rEntrasaSaida, XAlignmentEnum.Left, YAlignmentEnum.Top);
            bComp.ShowText("0 - Entrada\n1 - Saída");
            bComp.End();

            RectangleF rEntrasaSaida2 = bComp.BoundBox;

            rEntrasaSaida2 = new RectangleF(rEntrasaSaida.Right - bComp.BoundBox.Height, bComp.BoundBox.Y, bComp.BoundBox.Height, bComp.BoundBox.Height);
            comp.SafeDrawRectangle(rEntrasaSaida2);

            bComp.SafeBegin(rEntrasaSaida2, XAlignmentEnum.Center, YAlignmentEnum.Middle);
            bComp.ShowText(Danfe.Model.TipoNF.ToString());
            bComp.End();



            // Número Série e Folha
            RectangleF retEsquerdo = pRet;

            retEsquerdo.Width = Utils.Mm2Pu(8);

            RectangleF retDireito = pRet;

            retDireito.X     = retEsquerdo.Right + Utils.Mm2Pu(1);
            retDireito.Width = pRet.Right - retDireito.Left;

            RetanguloFolha     = retDireito;
            retDireito.Height -= (float)Danfe.FontBold.GetLineHeight(TamanhoFonteNumeracao);

            comp.SetFont(Danfe.FontBold, TamanhoFonteNumeracao);
            bComp.SafeBegin(retEsquerdo, XAlignmentEnum.Right, YAlignmentEnum.Bottom);
            bComp.ShowText("Nº\nSérie\nFolha");
            bComp.End();

            bComp.SafeBegin(retDireito, XAlignmentEnum.Left, YAlignmentEnum.Bottom);
            bComp.ShowText(String.Format("{0}\n{1}", Danfe.Model.NumeroNF.ToString(Formatador.FormatoNumeroNF), Danfe.Model.Serie));
            bComp.End();
        }
        private float CalcularAltura()
        {
            Double larguraTexto = Danfe.InnerRect.Width - Utils.Mm2Pu(78F);
            double alturaTexto  = Utils.CountTextLines(Danfe.Font, TamanhoFonteCorpo, larguraTexto, Danfe.Model.InformacoesComplementaresCompleta) * (Danfe.Font.GetLineHeight(TamanhoFonteCorpo) + DanfeCampo.LineSpace);

            alturaTexto += Danfe.FontBold.GetLineHeight(DanfeCampo.TamanhoFonteCabecalho) + DanfeCampo.LineSpace;
            alturaTexto += DanfeCampo.PaddingSuperior + DanfeCampo.PaddingInferior;
            return((float)Math.Max(alturaTexto, AlturaMinima));
        }
示例#3
0
        public DanfeProdutosServicosTabela(DanfeDocumento documento)
        {
            // _Rectangles = new RectangleF[NColunas];
            _Documento = documento;

            // Converte as larguras para PDF Unit
            for (int i = 0; i < _Colunas.Length; i++)
            {
                _Colunas[i].Largura = Utils.Mm2Pu(_Colunas[i].Largura);
            }
        }
示例#4
0
        /// <summary>
        /// Posiciona os campos lado a lado em ordem utilizando a largura contida no array
        /// </summary>
        /// <param name="area">Retângulo contendo a área na qual os campos irão serem posicionados.</param>
        /// <param name="larguras">Larguras dos campos em milímetros</param>
        /// <param name="campos">Campos a serem posicionados.</param>
        public static void PosicionarLadoLadoMm(RectangleF area, float[] larguras, params DanfeCampo[] campos)
        {
            for (int i = 0; i < larguras.Length; i++)
            {
                if (larguras[i] != 0)
                {
                    larguras[i] = Utils.Mm2Pu(larguras[i]);
                }
            }

            PosicionarLadoLado(area, larguras, campos);
        }
示例#5
0
        public void PrintCreditos()
        {
            BlockComposer bComp = new BlockComposer(_Composer);
            RectangleF    rect  = _Danfe.InnerRect;

            rect.Y      = rect.Bottom + Utils.Mm2Pu(0.5F);
            rect.Height = _Danfe.Size.Height - rect.Y;

            _Composer.SetFont(_Danfe.Font, 6);
            bComp.SafeBegin(rect, XAlignmentEnum.Right, YAlignmentEnum.Top);
            bComp.ShowText("Gerado com DanfeSharp");
            bComp.End();
        }
示例#6
0
        public void PrintCreditos()
        {
            BlockComposer bComp = new BlockComposer(_Composer);
            RectangleF    rect  = _Danfe.InnerRect;

            rect.Y      = rect.Bottom + Utils.Mm2Pu(0.5F);
            rect.Height = _Danfe.Size.Height - rect.Y;

            _Composer.SetFont(_Danfe.Font, 6);
            bComp.SafeBegin(rect, XAlignmentEnum.Right, YAlignmentEnum.Top);
            bComp.ShowText(string.Format("Gerado em {0} com Lenus UX | www.sysvalley.com.br", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")));
            bComp.End();
        }
示例#7
0
        protected override void PosicionarCampos()
        {
            RectangleF linha = new RectangleF(InternalRectangle.Left, InternalRectangle.Top, InternalRectangle.Width, Danfe.CampoAltura);

            PosicionarLadoLadoMm(linha, new float[] { 0, 25, 30, 24, 10, 35 }, RazaoSocial, FreteConta, CodigoAntt, PlacaVeiculo, UfVeiculo, CnpjCpf);

            linha.Y = linha.Bottom;
            PosicionarLadoLado(linha, new float[] { 0, CodigoAntt.Retangulo.Width + PlacaVeiculo.Retangulo.Width, UfVeiculo.Retangulo.Width, CnpjCpf.Retangulo.Width }, Endereco, Municipio, EnderecoUf, IE);

            linha.Y = linha.Bottom;
            float l = (Endereco.Retangulo.Width - Utils.Mm2Pu(20)) / 2F;

            PosicionarLadoLado(linha, new float[] { Utils.Mm2Pu(20), l, l, 0, Utils.Mm2Pu(35), Utils.Mm2Pu(35) }, Quantidade, Especie, Marca, Numeracao, PesoBruto, PesoLiquido);
        }
示例#8
0
        public DanfeDocumento(DanfeViewModel model, float margem)
        {
            Margem   = margem;
            _File    = new org.pdfclown.files.File();
            Document = _File.Document;
            Model    = model;
            Size     = new SizeF(Utils.Mm2Pu(A4Tamanho.Width), Utils.Mm2Pu(A4Tamanho.Height));

            Font     = new org.pdfclown.documents.contents.fonts.StandardType1Font(Document, org.pdfclown.documents.contents.fonts.StandardType1Font.FamilyEnum.Times, false, false);
            FontBold = new org.pdfclown.documents.contents.fonts.StandardType1Font(Document, org.pdfclown.documents.contents.fonts.StandardType1Font.FamilyEnum.Times, true, false);

            InnerRect = new RectangleF(0, 0, Utils.Mm2Pu(A4Tamanho.Width), Utils.Mm2Pu(A4Tamanho.Height)).GetPaddedRectangleMm(5);
            Paginas   = new List <DanfePagina>();

            AdicionarMetadata();

            FoiGerado = false;
        }
示例#9
0
        /// <summary>
        /// Imprime o campo no composer.
        /// </summary>
        /// <param name="comp"></param>
        public void Print(PrimitiveComposer comp, org.pdfclown.documents.contents.fonts.Font fonte, org.pdfclown.documents.contents.fonts.Font fonteBold)
        {
            BlockComposer bComp = new BlockComposer(comp);
            RectangleF    pRect = Retangulo.GetPaddedRectangle(PaddingHorizontal, PaddingHorizontal, PaddingSuperior, PaddingInferior);

            comp.SetFont(fonteBold, TamanhoFonteCabecalho);
            ValidadeRectangle(pRect, comp);
            bComp.SafeBegin(pRect, XAlignmentEnum.Left, YAlignmentEnum.Top);
            bComp.ShowText(Cabecalho.ToUpper());
            bComp.End();

            bComp.LineSpace = new Length(LineSpace, Length.UnitModeEnum.Absolute);

            if (!String.IsNullOrWhiteSpace(Corpo))
            {
                org.pdfclown.documents.contents.fonts.Font fonteCorpo = IsCorpoNegrito ? fonteBold : fonte;

                double largura     = fonteCorpo.GetWidth(Corpo, CorpoTamanhoFonte);
                double novoTamanho = CorpoTamanhoFonte;

                if (!MultiLinha && largura > pRect.Width)
                {
                    novoTamanho = (CorpoTamanhoFonte * pRect.Width) / largura - Utils.Mm2Pu(0.005F);
                    comp.SetFont(fonteCorpo, novoTamanho);
                }

                comp.SetFont(fonteCorpo, novoTamanho);

                if (CorpoAlinhamentoY == YAlignmentEnum.Top)
                {
                    float yOffSet = (float)fonteBold.GetLineHeight(TamanhoFonteCabecalho) + LineSpace;
                    pRect.Y      += yOffSet;
                    pRect.Height -= yOffSet;
                }

                ValidadeRectangle(pRect, comp);
                bComp.SafeBegin(pRect, CorpoAlinhamentoX, CorpoAlinhamentoY);
                bComp.ShowText(Corpo);
                bComp.End();
            }

            comp.SafeDrawRectangle(Retangulo);
        }
示例#10
0
 public DanfeDocumento(DanfeViewModel model)
     : this(model, Utils.Mm2Pu(5))
 {
 }
示例#11
0
 public static RectangleF GetPaddedRectangleMm(this RectangleF rect, float vertical, float horizontal)
 {
     horizontal = Utils.Mm2Pu(horizontal);
     vertical   = Utils.Mm2Pu(vertical);
     return(rect.GetPaddedRectangle(horizontal, horizontal, vertical, vertical));
 }
示例#12
0
 public static RectangleF GetPaddedRectangleMm(this RectangleF rect, float pLeft, float pRight, float pTop, float pBottom)
 {
     return(rect.GetPaddedRectangle(Utils.Mm2Pu(pLeft), Utils.Mm2Pu(pRight), Utils.Mm2Pu(pTop), Utils.Mm2Pu(pBottom)));
 }
示例#13
0
 public static RectangleF GetPaddedRectangleMm(this RectangleF rect, float padding)
 {
     padding = Utils.Mm2Pu(padding);
     return(rect.GetPaddedRectangle(padding, padding, padding, padding));
 }