[{"data":1,"prerenderedAt":2132},["ShallowReactive",2],{"blog-pt-align-column-right-edge":3},{"id":4,"title":5,"author":6,"body":10,"date":2096,"description":2097,"draft":2098,"extension":2099,"howTo":2100,"image":2122,"meta":2123,"navigation":263,"path":2124,"seo":2125,"stem":2126,"tags":2127,"updated":2122,"__hash__":2131},"blogPt/pt/blog/028.align-column-right-edge.md","Como alinhar uma coluna à borda direita de um Row no gpdf?",{"name":7,"url":8,"avatar":9},"Taiki Noda","https://nadai.dev/pt/about","https://nadai.dev/og-default.png",{"type":11,"value":12,"toc":2085},"minimark",[13,18,35,39,66,239,243,246,1294,1298,1301,1312,1432,1488,1494,1501,1517,1521,1524,1615,1623,1644,1648,1651,1794,1813,1817,1820,1989,1992,2006,2010,2045,2049,2052,2069,2081],[14,15,17],"h2",{"id":16},"a-pergunta-em-outras-palavras","A pergunta, em outras palavras",[19,20,21,22,26,27,34],"p",{},"Você escreveu um row com um único ",[23,24,25],"code",{},"r.Col(4, ...)",", esperando que a coluna caísse do lado direito da página. Ela renderizou à esquerda, ocupando um terço da largura, com um vão grande à direita. Ou você conseguiu levar a coluna para a direita, mas o texto dentro dela continua colado à esquerda. Qual é o idiomatismo real no ",[28,29,33],"a",{"href":30,"rel":31},"https://github.com/gpdf-dev/gpdf",[32],"nofollow","gpdf","?",[14,36,38],{"id":37},"resposta-curta","Resposta curta",[19,40,41,42,45,46,45,49,52,53,65],{},"Não existe ",[23,43,44],{},"Offset",", nem ",[23,47,48],{},"Push",[23,50,51],{},"Justify"," no nível do row no gpdf. ",[54,55,56,57,60,61,64],"strong",{},"Você empurra a coluna para a direita com um ",[23,58,59],{},"Col"," vazio de preenchimento e alinha o texto de dentro com ",[23,62,63],{},"template.AlignRight()","."," São duas coisas diferentes e quase sempre você precisa das duas.",[67,68,73],"pre",{"className":69,"code":70,"language":71,"meta":72,"style":72},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","page.AutoRow(func(r *template.RowBuilder) {\n    r.Col(8, func(c *template.ColBuilder) {}) // preenchimento\n    r.Col(4, func(c *template.ColBuilder) {\n        c.Text(\"Total: R$ 25.575,00\", template.AlignRight())\n    })\n})\n","go","",[23,74,75,116,160,192,227,233],{"__ignoreMap":72},[76,77,80,84,87,91,94,98,101,105,107,110,113],"span",{"class":78,"line":79},"line",1,[76,81,83],{"class":82},"sTEyZ","page",[76,85,64],{"class":86},"sMK4o",[76,88,90],{"class":89},"s2Zo4","AutoRow",[76,92,93],{"class":86},"(func(",[76,95,97],{"class":96},"sHdIc","r",[76,99,100],{"class":86}," *",[76,102,104],{"class":103},"sBMFI","template",[76,106,64],{"class":86},[76,108,109],{"class":103},"RowBuilder",[76,111,112],{"class":86},")",[76,114,115],{"class":86}," {\n",[76,117,119,122,124,126,129,133,136,139,142,144,146,148,151,153,156],{"class":78,"line":118},2,[76,120,121],{"class":82},"    r",[76,123,64],{"class":86},[76,125,59],{"class":89},[76,127,128],{"class":86},"(",[76,130,132],{"class":131},"sbssI","8",[76,134,135],{"class":86},",",[76,137,138],{"class":86}," func(",[76,140,141],{"class":96},"c",[76,143,100],{"class":86},[76,145,104],{"class":103},[76,147,64],{"class":86},[76,149,150],{"class":103},"ColBuilder",[76,152,112],{"class":86},[76,154,155],{"class":86}," {})",[76,157,159],{"class":158},"sHwdD"," // preenchimento\n",[76,161,163,165,167,169,171,174,176,178,180,182,184,186,188,190],{"class":78,"line":162},3,[76,164,121],{"class":82},[76,166,64],{"class":86},[76,168,59],{"class":89},[76,170,128],{"class":86},[76,172,173],{"class":131},"4",[76,175,135],{"class":86},[76,177,138],{"class":86},[76,179,141],{"class":96},[76,181,100],{"class":86},[76,183,104],{"class":103},[76,185,64],{"class":86},[76,187,150],{"class":103},[76,189,112],{"class":86},[76,191,115],{"class":86},[76,193,195,198,200,203,205,208,212,214,216,219,221,224],{"class":78,"line":194},4,[76,196,197],{"class":82},"        c",[76,199,64],{"class":86},[76,201,202],{"class":89},"Text",[76,204,128],{"class":86},[76,206,207],{"class":86},"\"",[76,209,211],{"class":210},"sfazB","Total: R$ 25.575,00",[76,213,207],{"class":86},[76,215,135],{"class":86},[76,217,218],{"class":82}," template",[76,220,64],{"class":86},[76,222,223],{"class":89},"AlignRight",[76,225,226],{"class":86},"())\n",[76,228,230],{"class":78,"line":229},5,[76,231,232],{"class":86},"    })\n",[76,234,236],{"class":78,"line":235},6,[76,237,238],{"class":86},"})\n",[14,240,242],{"id":241},"o-código","O código",[19,244,245],{},"Um programa completo — o formato de cabeçalho de nota fiscal que traz a maioria das pessoas até aqui:",[67,247,249],{"className":69,"code":248,"language":71,"meta":72,"style":72},"package main\n\nimport (\n    \"log\"\n    \"os\"\n\n    \"github.com/gpdf-dev/gpdf/document\"\n    \"github.com/gpdf-dev/gpdf/pdf\"\n    \"github.com/gpdf-dev/gpdf/template\"\n)\n\nfunc main() {\n    doc := template.New(\n        template.WithPageSize(document.A4),\n        template.WithMargins(document.UniformEdges(document.Mm(20))),\n    )\n\n    page := doc.AddPage()\n\n    // Bloco da esquerda e bloco da direita num row: 8 + 4 = 12.\n    page.AutoRow(func(r *template.RowBuilder) {\n        r.Col(8, func(c *template.ColBuilder) {\n            c.Text(\"Acme Ltda.\", template.Bold(), template.FontSize(16))\n            c.Text(\"Av. Paulista 1-2-3, São Paulo\", template.TextColor(pdf.Gray(0.4)))\n        })\n        r.Col(4, func(c *template.ColBuilder) {\n            c.Text(\"NOTA FISCAL n.º 1042\", template.AlignRight(), template.Bold())\n            c.Text(\"Emitida 2026-09-02\", template.AlignRight(),\n                template.TextColor(pdf.Gray(0.4)))\n        })\n    })\n\n    page.AutoRow(func(r *template.RowBuilder) {\n        r.Col(12, func(c *template.ColBuilder) {\n            c.Spacer(document.Mm(10))\n        })\n    })\n\n    // Bloco de totais: 8 spans de nada e 4 spans colados na margem.\n    page.AutoRow(func(r *template.RowBuilder) {\n        r.Col(8, func(c *template.ColBuilder) {})\n        r.Col(4, func(c *template.ColBuilder) {\n            c.Text(\"Subtotal:   R$ 23.250,00\", template.AlignRight())\n            c.Text(\"ISS (10%):   R$ 2.325,00\", template.AlignRight())\n            c.Spacer(document.Mm(2))\n            c.Line(template.LineThickness(document.Pt(1)))\n            c.Spacer(document.Mm(2))\n            c.Text(\"Total:      R$ 25.575,00\", template.AlignRight(),\n                template.Bold(), template.FontSize(14))\n        })\n    })\n\n    data, err := doc.Generate()\n    if err != nil {\n        log.Fatal(err)\n    }\n    if err := os.WriteFile(\"right_aligned.pdf\", data, 0o644); err != nil {\n        log.Fatal(err)\n    }\n}\n",[23,250,251,259,265,274,285,294,298,308,318,328,334,339,353,372,396,432,438,443,462,467,473,499,531,577,622,628,659,695,724,748,753,758,763,788,820,845,850,855,860,866,891,923,954,982,1010,1034,1069,1092,1120,1144,1149,1154,1159,1181,1197,1215,1221,1268,1283,1288],{"__ignoreMap":72},[76,252,253,256],{"class":78,"line":79},[76,254,255],{"class":86},"package",[76,257,258],{"class":103}," main\n",[76,260,261],{"class":78,"line":118},[76,262,264],{"emptyLinePlaceholder":263},true,"\n",[76,266,267,271],{"class":78,"line":162},[76,268,270],{"class":269},"s7zQu","import",[76,272,273],{"class":86}," (\n",[76,275,276,279,282],{"class":78,"line":194},[76,277,278],{"class":86},"    \"",[76,280,281],{"class":103},"log",[76,283,284],{"class":86},"\"\n",[76,286,287,289,292],{"class":78,"line":229},[76,288,278],{"class":86},[76,290,291],{"class":103},"os",[76,293,284],{"class":86},[76,295,296],{"class":78,"line":235},[76,297,264],{"emptyLinePlaceholder":263},[76,299,301,303,306],{"class":78,"line":300},7,[76,302,278],{"class":86},[76,304,305],{"class":103},"github.com/gpdf-dev/gpdf/document",[76,307,284],{"class":86},[76,309,311,313,316],{"class":78,"line":310},8,[76,312,278],{"class":86},[76,314,315],{"class":103},"github.com/gpdf-dev/gpdf/pdf",[76,317,284],{"class":86},[76,319,321,323,326],{"class":78,"line":320},9,[76,322,278],{"class":86},[76,324,325],{"class":103},"github.com/gpdf-dev/gpdf/template",[76,327,284],{"class":86},[76,329,331],{"class":78,"line":330},10,[76,332,333],{"class":86},")\n",[76,335,337],{"class":78,"line":336},11,[76,338,264],{"emptyLinePlaceholder":263},[76,340,342,345,348,351],{"class":78,"line":341},12,[76,343,344],{"class":86},"func",[76,346,347],{"class":89}," main",[76,349,350],{"class":86},"()",[76,352,115],{"class":86},[76,354,356,359,362,364,366,369],{"class":78,"line":355},13,[76,357,358],{"class":82},"    doc ",[76,360,361],{"class":86},":=",[76,363,218],{"class":82},[76,365,64],{"class":86},[76,367,368],{"class":89},"New",[76,370,371],{"class":86},"(\n",[76,373,375,378,380,383,385,388,390,393],{"class":78,"line":374},14,[76,376,377],{"class":82},"        template",[76,379,64],{"class":86},[76,381,382],{"class":89},"WithPageSize",[76,384,128],{"class":86},[76,386,387],{"class":82},"document",[76,389,64],{"class":86},[76,391,392],{"class":82},"A4",[76,394,395],{"class":86},"),\n",[76,397,399,401,403,406,408,410,412,415,417,419,421,424,426,429],{"class":78,"line":398},15,[76,400,377],{"class":82},[76,402,64],{"class":86},[76,404,405],{"class":89},"WithMargins",[76,407,128],{"class":86},[76,409,387],{"class":82},[76,411,64],{"class":86},[76,413,414],{"class":89},"UniformEdges",[76,416,128],{"class":86},[76,418,387],{"class":82},[76,420,64],{"class":86},[76,422,423],{"class":89},"Mm",[76,425,128],{"class":86},[76,427,428],{"class":131},"20",[76,430,431],{"class":86},"))),\n",[76,433,435],{"class":78,"line":434},16,[76,436,437],{"class":86},"    )\n",[76,439,441],{"class":78,"line":440},17,[76,442,264],{"emptyLinePlaceholder":263},[76,444,446,449,451,454,456,459],{"class":78,"line":445},18,[76,447,448],{"class":82},"    page ",[76,450,361],{"class":86},[76,452,453],{"class":82}," doc",[76,455,64],{"class":86},[76,457,458],{"class":89},"AddPage",[76,460,461],{"class":86},"()\n",[76,463,465],{"class":78,"line":464},19,[76,466,264],{"emptyLinePlaceholder":263},[76,468,470],{"class":78,"line":469},20,[76,471,472],{"class":158},"    // Bloco da esquerda e bloco da direita num row: 8 + 4 = 12.\n",[76,474,476,479,481,483,485,487,489,491,493,495,497],{"class":78,"line":475},21,[76,477,478],{"class":82},"    page",[76,480,64],{"class":86},[76,482,90],{"class":89},[76,484,93],{"class":86},[76,486,97],{"class":96},[76,488,100],{"class":86},[76,490,104],{"class":103},[76,492,64],{"class":86},[76,494,109],{"class":103},[76,496,112],{"class":86},[76,498,115],{"class":86},[76,500,502,505,507,509,511,513,515,517,519,521,523,525,527,529],{"class":78,"line":501},22,[76,503,504],{"class":82},"        r",[76,506,64],{"class":86},[76,508,59],{"class":89},[76,510,128],{"class":86},[76,512,132],{"class":131},[76,514,135],{"class":86},[76,516,138],{"class":86},[76,518,141],{"class":96},[76,520,100],{"class":86},[76,522,104],{"class":103},[76,524,64],{"class":86},[76,526,150],{"class":103},[76,528,112],{"class":86},[76,530,115],{"class":86},[76,532,534,537,539,541,543,545,548,550,552,554,556,559,562,564,566,569,571,574],{"class":78,"line":533},23,[76,535,536],{"class":82},"            c",[76,538,64],{"class":86},[76,540,202],{"class":89},[76,542,128],{"class":86},[76,544,207],{"class":86},[76,546,547],{"class":210},"Acme Ltda.",[76,549,207],{"class":86},[76,551,135],{"class":86},[76,553,218],{"class":82},[76,555,64],{"class":86},[76,557,558],{"class":89},"Bold",[76,560,561],{"class":86},"(),",[76,563,218],{"class":82},[76,565,64],{"class":86},[76,567,568],{"class":89},"FontSize",[76,570,128],{"class":86},[76,572,573],{"class":131},"16",[76,575,576],{"class":86},"))\n",[76,578,580,582,584,586,588,590,593,595,597,599,601,604,606,609,611,614,616,619],{"class":78,"line":579},24,[76,581,536],{"class":82},[76,583,64],{"class":86},[76,585,202],{"class":89},[76,587,128],{"class":86},[76,589,207],{"class":86},[76,591,592],{"class":210},"Av. Paulista 1-2-3, São Paulo",[76,594,207],{"class":86},[76,596,135],{"class":86},[76,598,218],{"class":82},[76,600,64],{"class":86},[76,602,603],{"class":89},"TextColor",[76,605,128],{"class":86},[76,607,608],{"class":82},"pdf",[76,610,64],{"class":86},[76,612,613],{"class":89},"Gray",[76,615,128],{"class":86},[76,617,618],{"class":131},"0.4",[76,620,621],{"class":86},")))\n",[76,623,625],{"class":78,"line":624},25,[76,626,627],{"class":86},"        })\n",[76,629,631,633,635,637,639,641,643,645,647,649,651,653,655,657],{"class":78,"line":630},26,[76,632,504],{"class":82},[76,634,64],{"class":86},[76,636,59],{"class":89},[76,638,128],{"class":86},[76,640,173],{"class":131},[76,642,135],{"class":86},[76,644,138],{"class":86},[76,646,141],{"class":96},[76,648,100],{"class":86},[76,650,104],{"class":103},[76,652,64],{"class":86},[76,654,150],{"class":103},[76,656,112],{"class":86},[76,658,115],{"class":86},[76,660,662,664,666,668,670,672,675,677,679,681,683,685,687,689,691,693],{"class":78,"line":661},27,[76,663,536],{"class":82},[76,665,64],{"class":86},[76,667,202],{"class":89},[76,669,128],{"class":86},[76,671,207],{"class":86},[76,673,674],{"class":210},"NOTA FISCAL n.º 1042",[76,676,207],{"class":86},[76,678,135],{"class":86},[76,680,218],{"class":82},[76,682,64],{"class":86},[76,684,223],{"class":89},[76,686,561],{"class":86},[76,688,218],{"class":82},[76,690,64],{"class":86},[76,692,558],{"class":89},[76,694,226],{"class":86},[76,696,698,700,702,704,706,708,711,713,715,717,719,721],{"class":78,"line":697},28,[76,699,536],{"class":82},[76,701,64],{"class":86},[76,703,202],{"class":89},[76,705,128],{"class":86},[76,707,207],{"class":86},[76,709,710],{"class":210},"Emitida 2026-09-02",[76,712,207],{"class":86},[76,714,135],{"class":86},[76,716,218],{"class":82},[76,718,64],{"class":86},[76,720,223],{"class":89},[76,722,723],{"class":86},"(),\n",[76,725,727,730,732,734,736,738,740,742,744,746],{"class":78,"line":726},29,[76,728,729],{"class":82},"                template",[76,731,64],{"class":86},[76,733,603],{"class":89},[76,735,128],{"class":86},[76,737,608],{"class":82},[76,739,64],{"class":86},[76,741,613],{"class":89},[76,743,128],{"class":86},[76,745,618],{"class":131},[76,747,621],{"class":86},[76,749,751],{"class":78,"line":750},30,[76,752,627],{"class":86},[76,754,756],{"class":78,"line":755},31,[76,757,232],{"class":86},[76,759,761],{"class":78,"line":760},32,[76,762,264],{"emptyLinePlaceholder":263},[76,764,766,768,770,772,774,776,778,780,782,784,786],{"class":78,"line":765},33,[76,767,478],{"class":82},[76,769,64],{"class":86},[76,771,90],{"class":89},[76,773,93],{"class":86},[76,775,97],{"class":96},[76,777,100],{"class":86},[76,779,104],{"class":103},[76,781,64],{"class":86},[76,783,109],{"class":103},[76,785,112],{"class":86},[76,787,115],{"class":86},[76,789,791,793,795,797,799,802,804,806,808,810,812,814,816,818],{"class":78,"line":790},34,[76,792,504],{"class":82},[76,794,64],{"class":86},[76,796,59],{"class":89},[76,798,128],{"class":86},[76,800,801],{"class":131},"12",[76,803,135],{"class":86},[76,805,138],{"class":86},[76,807,141],{"class":96},[76,809,100],{"class":86},[76,811,104],{"class":103},[76,813,64],{"class":86},[76,815,150],{"class":103},[76,817,112],{"class":86},[76,819,115],{"class":86},[76,821,823,825,827,830,832,834,836,838,840,843],{"class":78,"line":822},35,[76,824,536],{"class":82},[76,826,64],{"class":86},[76,828,829],{"class":89},"Spacer",[76,831,128],{"class":86},[76,833,387],{"class":82},[76,835,64],{"class":86},[76,837,423],{"class":89},[76,839,128],{"class":86},[76,841,842],{"class":131},"10",[76,844,576],{"class":86},[76,846,848],{"class":78,"line":847},36,[76,849,627],{"class":86},[76,851,853],{"class":78,"line":852},37,[76,854,232],{"class":86},[76,856,858],{"class":78,"line":857},38,[76,859,264],{"emptyLinePlaceholder":263},[76,861,863],{"class":78,"line":862},39,[76,864,865],{"class":158},"    // Bloco de totais: 8 spans de nada e 4 spans colados na margem.\n",[76,867,869,871,873,875,877,879,881,883,885,887,889],{"class":78,"line":868},40,[76,870,478],{"class":82},[76,872,64],{"class":86},[76,874,90],{"class":89},[76,876,93],{"class":86},[76,878,97],{"class":96},[76,880,100],{"class":86},[76,882,104],{"class":103},[76,884,64],{"class":86},[76,886,109],{"class":103},[76,888,112],{"class":86},[76,890,115],{"class":86},[76,892,894,896,898,900,902,904,906,908,910,912,914,916,918,920],{"class":78,"line":893},41,[76,895,504],{"class":82},[76,897,64],{"class":86},[76,899,59],{"class":89},[76,901,128],{"class":86},[76,903,132],{"class":131},[76,905,135],{"class":86},[76,907,138],{"class":86},[76,909,141],{"class":96},[76,911,100],{"class":86},[76,913,104],{"class":103},[76,915,64],{"class":86},[76,917,150],{"class":103},[76,919,112],{"class":86},[76,921,922],{"class":86}," {})\n",[76,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952],{"class":78,"line":925},42,[76,927,504],{"class":82},[76,929,64],{"class":86},[76,931,59],{"class":89},[76,933,128],{"class":86},[76,935,173],{"class":131},[76,937,135],{"class":86},[76,939,138],{"class":86},[76,941,141],{"class":96},[76,943,100],{"class":86},[76,945,104],{"class":103},[76,947,64],{"class":86},[76,949,150],{"class":103},[76,951,112],{"class":86},[76,953,115],{"class":86},[76,955,957,959,961,963,965,967,970,972,974,976,978,980],{"class":78,"line":956},43,[76,958,536],{"class":82},[76,960,64],{"class":86},[76,962,202],{"class":89},[76,964,128],{"class":86},[76,966,207],{"class":86},[76,968,969],{"class":210},"Subtotal:   R$ 23.250,00",[76,971,207],{"class":86},[76,973,135],{"class":86},[76,975,218],{"class":82},[76,977,64],{"class":86},[76,979,223],{"class":89},[76,981,226],{"class":86},[76,983,985,987,989,991,993,995,998,1000,1002,1004,1006,1008],{"class":78,"line":984},44,[76,986,536],{"class":82},[76,988,64],{"class":86},[76,990,202],{"class":89},[76,992,128],{"class":86},[76,994,207],{"class":86},[76,996,997],{"class":210},"ISS (10%):   R$ 2.325,00",[76,999,207],{"class":86},[76,1001,135],{"class":86},[76,1003,218],{"class":82},[76,1005,64],{"class":86},[76,1007,223],{"class":89},[76,1009,226],{"class":86},[76,1011,1013,1015,1017,1019,1021,1023,1025,1027,1029,1032],{"class":78,"line":1012},45,[76,1014,536],{"class":82},[76,1016,64],{"class":86},[76,1018,829],{"class":89},[76,1020,128],{"class":86},[76,1022,387],{"class":82},[76,1024,64],{"class":86},[76,1026,423],{"class":89},[76,1028,128],{"class":86},[76,1030,1031],{"class":131},"2",[76,1033,576],{"class":86},[76,1035,1037,1039,1041,1044,1046,1048,1050,1053,1055,1057,1059,1062,1064,1067],{"class":78,"line":1036},46,[76,1038,536],{"class":82},[76,1040,64],{"class":86},[76,1042,1043],{"class":89},"Line",[76,1045,128],{"class":86},[76,1047,104],{"class":82},[76,1049,64],{"class":86},[76,1051,1052],{"class":89},"LineThickness",[76,1054,128],{"class":86},[76,1056,387],{"class":82},[76,1058,64],{"class":86},[76,1060,1061],{"class":89},"Pt",[76,1063,128],{"class":86},[76,1065,1066],{"class":131},"1",[76,1068,621],{"class":86},[76,1070,1072,1074,1076,1078,1080,1082,1084,1086,1088,1090],{"class":78,"line":1071},47,[76,1073,536],{"class":82},[76,1075,64],{"class":86},[76,1077,829],{"class":89},[76,1079,128],{"class":86},[76,1081,387],{"class":82},[76,1083,64],{"class":86},[76,1085,423],{"class":89},[76,1087,128],{"class":86},[76,1089,1031],{"class":131},[76,1091,576],{"class":86},[76,1093,1095,1097,1099,1101,1103,1105,1108,1110,1112,1114,1116,1118],{"class":78,"line":1094},48,[76,1096,536],{"class":82},[76,1098,64],{"class":86},[76,1100,202],{"class":89},[76,1102,128],{"class":86},[76,1104,207],{"class":86},[76,1106,1107],{"class":210},"Total:      R$ 25.575,00",[76,1109,207],{"class":86},[76,1111,135],{"class":86},[76,1113,218],{"class":82},[76,1115,64],{"class":86},[76,1117,223],{"class":89},[76,1119,723],{"class":86},[76,1121,1123,1125,1127,1129,1131,1133,1135,1137,1139,1142],{"class":78,"line":1122},49,[76,1124,729],{"class":82},[76,1126,64],{"class":86},[76,1128,558],{"class":89},[76,1130,561],{"class":86},[76,1132,218],{"class":82},[76,1134,64],{"class":86},[76,1136,568],{"class":89},[76,1138,128],{"class":86},[76,1140,1141],{"class":131},"14",[76,1143,576],{"class":86},[76,1145,1147],{"class":78,"line":1146},50,[76,1148,627],{"class":86},[76,1150,1152],{"class":78,"line":1151},51,[76,1153,232],{"class":86},[76,1155,1157],{"class":78,"line":1156},52,[76,1158,264],{"emptyLinePlaceholder":263},[76,1160,1162,1165,1167,1170,1172,1174,1176,1179],{"class":78,"line":1161},53,[76,1163,1164],{"class":82},"    data",[76,1166,135],{"class":86},[76,1168,1169],{"class":82}," err ",[76,1171,361],{"class":86},[76,1173,453],{"class":82},[76,1175,64],{"class":86},[76,1177,1178],{"class":89},"Generate",[76,1180,461],{"class":86},[76,1182,1184,1187,1189,1192,1195],{"class":78,"line":1183},54,[76,1185,1186],{"class":269},"    if",[76,1188,1169],{"class":82},[76,1190,1191],{"class":86},"!=",[76,1193,1194],{"class":86}," nil",[76,1196,115],{"class":86},[76,1198,1200,1203,1205,1208,1210,1213],{"class":78,"line":1199},55,[76,1201,1202],{"class":82},"        log",[76,1204,64],{"class":86},[76,1206,1207],{"class":89},"Fatal",[76,1209,128],{"class":86},[76,1211,1212],{"class":82},"err",[76,1214,333],{"class":86},[76,1216,1218],{"class":78,"line":1217},56,[76,1219,1220],{"class":86},"    }\n",[76,1222,1224,1226,1228,1230,1233,1235,1238,1240,1242,1245,1247,1249,1252,1254,1257,1260,1262,1264,1266],{"class":78,"line":1223},57,[76,1225,1186],{"class":269},[76,1227,1169],{"class":82},[76,1229,361],{"class":86},[76,1231,1232],{"class":82}," os",[76,1234,64],{"class":86},[76,1236,1237],{"class":89},"WriteFile",[76,1239,128],{"class":86},[76,1241,207],{"class":86},[76,1243,1244],{"class":210},"right_aligned.pdf",[76,1246,207],{"class":86},[76,1248,135],{"class":86},[76,1250,1251],{"class":82}," data",[76,1253,135],{"class":86},[76,1255,1256],{"class":131}," 0o644",[76,1258,1259],{"class":86},");",[76,1261,1169],{"class":82},[76,1263,1191],{"class":86},[76,1265,1194],{"class":86},[76,1267,115],{"class":86},[76,1269,1271,1273,1275,1277,1279,1281],{"class":78,"line":1270},58,[76,1272,1202],{"class":82},[76,1274,64],{"class":86},[76,1276,1207],{"class":89},[76,1278,128],{"class":86},[76,1280,1212],{"class":82},[76,1282,333],{"class":86},[76,1284,1286],{"class":78,"line":1285},59,[76,1287,1220],{"class":86},[76,1289,1291],{"class":78,"line":1290},60,[76,1292,1293],{"class":86},"}\n",[14,1295,1297],{"id":1296},"por-que-a-coluna-de-preenchimento-é-necessária","Por que a coluna de preenchimento é necessária",[19,1299,1300],{},"Vale entender em vez de decorar, porque isso explica de quebra uma série de outras surpresas de layout do gpdf.",[19,1302,1303,1304,1307,1308,1311],{},"Um row é uma caixa horizontal. ",[23,1305,1306],{},"RowBuilder.build"," percorre ",[23,1309,1310],{},"r.cols"," em ordem e emite uma caixa filha por coluna, e o único estilo que ele define nessa filha é uma largura:",[67,1313,1315],{"className":69,"code":1314,"language":71,"meta":72,"style":72},"colBox := &document.Box{\n    Content: cb.buildNodes(),\n    BoxStyle: document.BoxStyle{\n        Width: document.Pct(float64(col.span) / float64(gridColumns) * 100),\n    },\n}\n",[23,1316,1317,1337,1355,1372,1423,1428],{"__ignoreMap":72},[76,1318,1319,1322,1324,1327,1329,1331,1334],{"class":78,"line":79},[76,1320,1321],{"class":82},"colBox ",[76,1323,361],{"class":86},[76,1325,1326],{"class":86}," &",[76,1328,387],{"class":103},[76,1330,64],{"class":86},[76,1332,1333],{"class":103},"Box",[76,1335,1336],{"class":86},"{\n",[76,1338,1339,1342,1345,1348,1350,1353],{"class":78,"line":118},[76,1340,1341],{"class":82},"    Content",[76,1343,1344],{"class":86},":",[76,1346,1347],{"class":82}," cb",[76,1349,64],{"class":86},[76,1351,1352],{"class":89},"buildNodes",[76,1354,723],{"class":86},[76,1356,1357,1360,1362,1365,1367,1370],{"class":78,"line":162},[76,1358,1359],{"class":82},"    BoxStyle",[76,1361,1344],{"class":86},[76,1363,1364],{"class":103}," document",[76,1366,64],{"class":86},[76,1368,1369],{"class":103},"BoxStyle",[76,1371,1336],{"class":86},[76,1373,1374,1377,1379,1381,1383,1386,1388,1392,1394,1397,1399,1401,1403,1406,1409,1411,1414,1416,1418,1421],{"class":78,"line":194},[76,1375,1376],{"class":82},"        Width",[76,1378,1344],{"class":86},[76,1380,1364],{"class":82},[76,1382,64],{"class":86},[76,1384,1385],{"class":89},"Pct",[76,1387,128],{"class":86},[76,1389,1391],{"class":1390},"spNyl","float64",[76,1393,128],{"class":86},[76,1395,1396],{"class":82},"col",[76,1398,64],{"class":86},[76,1400,76],{"class":82},[76,1402,112],{"class":86},[76,1404,1405],{"class":86}," /",[76,1407,1408],{"class":1390}," float64",[76,1410,128],{"class":86},[76,1412,1413],{"class":82},"gridColumns",[76,1415,112],{"class":86},[76,1417,100],{"class":86},[76,1419,1420],{"class":131}," 100",[76,1422,395],{"class":86},[76,1424,1425],{"class":78,"line":229},[76,1426,1427],{"class":86},"    },\n",[76,1429,1430],{"class":78,"line":235},[76,1431,1293],{"class":86},[19,1433,1434,1436,1437,1440,1441,1444,1445,1448,1449,1452,1453,1452,1456,1452,1459,1452,1462,1452,1465,1452,1468,1452,1471,1452,1474,1452,1477,1452,1480,1483,1484,1487],{},[23,1435,1413],{}," é 12. Então ",[23,1438,1439],{},"Col(4)"," é literalmente \"uma caixa com 33,33 % da largura do row\", nada mais. O row posiciona os filhos da esquerda para a direita e para quando os filhos acabam. Ele não tem nenhum conceito do espaço restante, porque ",[23,1442,1443],{},"document.BoxStyle"," não tem campo ",[23,1446,1447],{},"JustifyContent"," — faça grep no repositório inteiro e você não vai achar. Os campos são ",[23,1450,1451],{},"Width",", ",[23,1454,1455],{},"Height",[23,1457,1458],{},"MinWidth",[23,1460,1461],{},"MaxWidth",[23,1463,1464],{},"MinHeight",[23,1466,1467],{},"MaxHeight",[23,1469,1470],{},"Margin",[23,1472,1473],{},"Padding",[23,1475,1476],{},"Border",[23,1478,1479],{},"Background",[23,1481,1482],{},"Direction"," e ",[23,1485,1486],{},"Position",". Esse é todo o vocabulário.",[19,1489,1490,1491,1493],{},"Ou seja, um ",[23,1492,1439],{}," sozinho produz um row contendo exatamente uma caixa de 33,33 % de largura, posicionada no início do fluxo horizontal. Os 66,67 % restantes não são \"espaço vazio à direita da sua coluna\" — não são nada. Não há elemento algum contra o qual empurrar.",[19,1495,1496,1497,1500],{},"O ",[23,1498,1499],{},"Col(8)"," de preenchimento dá ao motor de layout algo que ocupe esse espaço. Custa uma caixa vazia na árvore e não desenha nada.",[19,1502,1503,1504,1506,1507,1510,1511,1510,1514,1516],{},"O que também significa que ",[23,1505,1499],{}," não tem nada de especial. ",[23,1508,1509],{},"Col(6)"," + ",[23,1512,1513],{},"Col(3)",[23,1515,1513],{}," alinha o último bloco à direita igualmente bem, e depois você pode pendurar conteúdo nos preenchimentos sem reestruturar nada.",[14,1518,1520],{"id":1519},"a-armadilha-coluna-à-direita-texto-à-esquerda","A armadilha: coluna à direita, texto à esquerda",[19,1522,1523],{},"O erro que mais consome tempo:",[67,1525,1527],{"className":69,"code":1526,"language":71,"meta":72,"style":72},"r.Col(8, func(c *template.ColBuilder) {})\nr.Col(4, func(c *template.ColBuilder) {\n    c.Text(\"Total: R$ 25.575,00\") // ← sem AlignRight\n})\n",[23,1528,1529,1559,1589,1611],{"__ignoreMap":72},[76,1530,1531,1533,1535,1537,1539,1541,1543,1545,1547,1549,1551,1553,1555,1557],{"class":78,"line":79},[76,1532,97],{"class":82},[76,1534,64],{"class":86},[76,1536,59],{"class":89},[76,1538,128],{"class":86},[76,1540,132],{"class":131},[76,1542,135],{"class":86},[76,1544,138],{"class":86},[76,1546,141],{"class":96},[76,1548,100],{"class":86},[76,1550,104],{"class":103},[76,1552,64],{"class":86},[76,1554,150],{"class":103},[76,1556,112],{"class":86},[76,1558,922],{"class":86},[76,1560,1561,1563,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583,1585,1587],{"class":78,"line":118},[76,1562,97],{"class":82},[76,1564,64],{"class":86},[76,1566,59],{"class":89},[76,1568,128],{"class":86},[76,1570,173],{"class":131},[76,1572,135],{"class":86},[76,1574,138],{"class":86},[76,1576,141],{"class":96},[76,1578,100],{"class":86},[76,1580,104],{"class":103},[76,1582,64],{"class":86},[76,1584,150],{"class":103},[76,1586,112],{"class":86},[76,1588,115],{"class":86},[76,1590,1591,1594,1596,1598,1600,1602,1604,1606,1608],{"class":78,"line":162},[76,1592,1593],{"class":82},"    c",[76,1595,64],{"class":86},[76,1597,202],{"class":89},[76,1599,128],{"class":86},[76,1601,207],{"class":86},[76,1603,211],{"class":210},[76,1605,207],{"class":86},[76,1607,112],{"class":86},[76,1609,1610],{"class":158}," // ← sem AlignRight\n",[76,1612,1613],{"class":78,"line":194},[76,1614,238],{"class":86},[19,1616,1617,1618,1622],{},"A coluna está onde você queria. O texto não. Ele começa na borda esquerda da coluna — a 66,67 % da página — então parece ",[1619,1620,1621],"em",{},"mais ou menos"," alinhado à direita, e se todos os seus valores tiverem o mesmo número de dígitos você pode não perceber até um total de três casas ficar ao lado de um de cinco e as vírgulas decimais pararem de bater.",[19,1624,1625,1627,1628,1631,1632,1635,1636,1639,1640,1643],{},[23,1626,63],{}," é um ",[23,1629,1630],{},"TextOption"," (",[23,1633,1634],{},"func(*document.Style)"," que define ",[23,1637,1638],{},"TextAlign","), então vai na chamada individual de ",[23,1641,1642],{},"c.Text",". Não há como defini-lo uma única vez para a coluna inteira. Repita em cada linha do bloco.",[14,1645,1647],{"id":1646},"tabelas-imagens-números-de-página","Tabelas, imagens, números de página",[19,1649,1650],{},"As opções de texto não entram em outros elementos. Cada um tem sua própria porta de alinhamento:",[67,1652,1654],{"className":69,"code":1653,"language":71,"meta":72,"style":72},"// Table: alinhamento por coluna, casado por posição com o slice de cabeçalho.\nc.Table(header, rows, template.ColumnAlign(\n    document.AlignLeft, document.AlignRight, document.AlignRight,\n))\n\n// Image: alinhamento dentro da coluna que a contém.\nc.Image(logoBytes, template.WithAlign(document.AlignRight))\n\n// Números de página aceitam TextOptions, então AlignRight funciona direto.\nc.PageNumber(template.AlignRight())\n",[23,1655,1656,1661,1691,1720,1724,1728,1733,1766,1770,1775],{"__ignoreMap":72},[76,1657,1658],{"class":78,"line":79},[76,1659,1660],{"class":158},"// Table: alinhamento por coluna, casado por posição com o slice de cabeçalho.\n",[76,1662,1663,1665,1667,1670,1672,1675,1677,1680,1682,1684,1686,1689],{"class":78,"line":118},[76,1664,141],{"class":82},[76,1666,64],{"class":86},[76,1668,1669],{"class":89},"Table",[76,1671,128],{"class":86},[76,1673,1674],{"class":82},"header",[76,1676,135],{"class":86},[76,1678,1679],{"class":82}," rows",[76,1681,135],{"class":86},[76,1683,218],{"class":82},[76,1685,64],{"class":86},[76,1687,1688],{"class":89},"ColumnAlign",[76,1690,371],{"class":86},[76,1692,1693,1696,1698,1701,1703,1705,1707,1709,1711,1713,1715,1717],{"class":78,"line":162},[76,1694,1695],{"class":82},"    document",[76,1697,64],{"class":86},[76,1699,1700],{"class":82},"AlignLeft",[76,1702,135],{"class":86},[76,1704,1364],{"class":82},[76,1706,64],{"class":86},[76,1708,223],{"class":82},[76,1710,135],{"class":86},[76,1712,1364],{"class":82},[76,1714,64],{"class":86},[76,1716,223],{"class":82},[76,1718,1719],{"class":86},",\n",[76,1721,1722],{"class":78,"line":194},[76,1723,576],{"class":86},[76,1725,1726],{"class":78,"line":229},[76,1727,264],{"emptyLinePlaceholder":263},[76,1729,1730],{"class":78,"line":235},[76,1731,1732],{"class":158},"// Image: alinhamento dentro da coluna que a contém.\n",[76,1734,1735,1737,1739,1742,1744,1747,1749,1751,1753,1756,1758,1760,1762,1764],{"class":78,"line":300},[76,1736,141],{"class":82},[76,1738,64],{"class":86},[76,1740,1741],{"class":89},"Image",[76,1743,128],{"class":86},[76,1745,1746],{"class":82},"logoBytes",[76,1748,135],{"class":86},[76,1750,218],{"class":82},[76,1752,64],{"class":86},[76,1754,1755],{"class":89},"WithAlign",[76,1757,128],{"class":86},[76,1759,387],{"class":82},[76,1761,64],{"class":86},[76,1763,223],{"class":82},[76,1765,576],{"class":86},[76,1767,1768],{"class":78,"line":310},[76,1769,264],{"emptyLinePlaceholder":263},[76,1771,1772],{"class":78,"line":320},[76,1773,1774],{"class":158},"// Números de página aceitam TextOptions, então AlignRight funciona direto.\n",[76,1776,1777,1779,1781,1784,1786,1788,1790,1792],{"class":78,"line":330},[76,1778,141],{"class":82},[76,1780,64],{"class":86},[76,1782,1783],{"class":89},"PageNumber",[76,1785,128],{"class":86},[76,1787,104],{"class":82},[76,1789,64],{"class":86},[76,1791,223],{"class":89},[76,1793,226],{"class":86},[19,1795,1796,1798,1799,1802,1803,1805,1806,1809,1810,1812],{},[23,1797,1688],{}," recebe valores ",[23,1800,1801],{},"document.TextAlign",", não valores ",[23,1804,1630],{}," — ",[23,1807,1808],{},"document.AlignRight",", não ",[23,1811,63],{},". Fácil de trocar, e o compilador avisa na hora.",[14,1814,1816],{"id":1815},"quando-o-row-não-ajuda","Quando o row não ajuda",[19,1818,1819],{},"Para algo fixado numa coordenada independentemente do resto da página — um carimbo de PAGO, uma marca d'água diagonal, uma marca de canto — saia da grade:",[67,1821,1823],{"className":69,"code":1822,"language":71,"meta":72,"style":72},"page.Absolute(document.Mm(140), document.Mm(60),\n    func(c *template.ColBuilder) {\n        c.Text(\"PAGO\", template.AlignRight(), template.Bold(),\n            template.FontSize(28), template.TextColor(pdf.RGBHex(0xC62828)))\n    },\n    template.AbsoluteWidth(document.Mm(50)),\n)\n",[23,1824,1825,1863,1882,1917,1955,1959,1985],{"__ignoreMap":72},[76,1826,1827,1829,1831,1834,1836,1838,1840,1842,1844,1847,1850,1852,1854,1856,1858,1861],{"class":78,"line":79},[76,1828,83],{"class":82},[76,1830,64],{"class":86},[76,1832,1833],{"class":89},"Absolute",[76,1835,128],{"class":86},[76,1837,387],{"class":82},[76,1839,64],{"class":86},[76,1841,423],{"class":89},[76,1843,128],{"class":86},[76,1845,1846],{"class":131},"140",[76,1848,1849],{"class":86},"),",[76,1851,1364],{"class":82},[76,1853,64],{"class":86},[76,1855,423],{"class":89},[76,1857,128],{"class":86},[76,1859,1860],{"class":131},"60",[76,1862,395],{"class":86},[76,1864,1865,1868,1870,1872,1874,1876,1878,1880],{"class":78,"line":118},[76,1866,1867],{"class":86},"    func(",[76,1869,141],{"class":96},[76,1871,100],{"class":86},[76,1873,104],{"class":103},[76,1875,64],{"class":86},[76,1877,150],{"class":103},[76,1879,112],{"class":86},[76,1881,115],{"class":86},[76,1883,1884,1886,1888,1890,1892,1894,1897,1899,1901,1903,1905,1907,1909,1911,1913,1915],{"class":78,"line":162},[76,1885,197],{"class":82},[76,1887,64],{"class":86},[76,1889,202],{"class":89},[76,1891,128],{"class":86},[76,1893,207],{"class":86},[76,1895,1896],{"class":210},"PAGO",[76,1898,207],{"class":86},[76,1900,135],{"class":86},[76,1902,218],{"class":82},[76,1904,64],{"class":86},[76,1906,223],{"class":89},[76,1908,561],{"class":86},[76,1910,218],{"class":82},[76,1912,64],{"class":86},[76,1914,558],{"class":89},[76,1916,723],{"class":86},[76,1918,1919,1922,1924,1926,1928,1931,1933,1935,1937,1939,1941,1943,1945,1948,1950,1953],{"class":78,"line":194},[76,1920,1921],{"class":82},"            template",[76,1923,64],{"class":86},[76,1925,568],{"class":89},[76,1927,128],{"class":86},[76,1929,1930],{"class":131},"28",[76,1932,1849],{"class":86},[76,1934,218],{"class":82},[76,1936,64],{"class":86},[76,1938,603],{"class":89},[76,1940,128],{"class":86},[76,1942,608],{"class":82},[76,1944,64],{"class":86},[76,1946,1947],{"class":89},"RGBHex",[76,1949,128],{"class":86},[76,1951,1952],{"class":131},"0xC62828",[76,1954,621],{"class":86},[76,1956,1957],{"class":78,"line":229},[76,1958,1427],{"class":86},[76,1960,1961,1964,1966,1969,1971,1973,1975,1977,1979,1982],{"class":78,"line":235},[76,1962,1963],{"class":82},"    template",[76,1965,64],{"class":86},[76,1967,1968],{"class":89},"AbsoluteWidth",[76,1970,128],{"class":86},[76,1972,387],{"class":82},[76,1974,64],{"class":86},[76,1976,423],{"class":89},[76,1978,128],{"class":86},[76,1980,1981],{"class":131},"50",[76,1983,1984],{"class":86},")),\n",[76,1986,1987],{"class":78,"line":300},[76,1988,333],{"class":86},[19,1990,1991],{},"Essa é a saída de emergência, não o idiomatismo. Se você se pegar calculando coordenadas x para conteúdo comum, a resposta era a coluna de preenchimento.",[19,1993,1994,1995,1997,1998,2001,2002,2005],{},"Uma última coisa que vale saber: ",[23,1996,59],{}," limita cada span individual a 1–12, mas ninguém verifica o ",[1619,1999,2000],{},"total",". Três chamadas ",[23,2003,2004],{},"Col(5)"," no mesmo row dão larguras percentuais somando 125 %, e a terceira coluna extrapola a margem direita em vez de quebrar linha. O gpdf não avisa. Conte seus spans.",[14,2007,2009],{"id":2008},"receitas-relacionadas","Receitas relacionadas",[2011,2012,2013,2021,2028,2038],"ul",{},[2014,2015,2016,2020],"li",{},[28,2017,2019],{"href":2018},"/pt/blog/12-column-grid","Como funciona a grade de 12 colunas no gpdf?"," — a grade por inteiro",[2014,2022,2023,2027],{},[28,2024,2026],{"href":2025},"/pt/blog/nest-row-in-col","Como aninhar um Row dentro de um Col?"," — a outra pergunta sobre a grade plana",[2014,2029,2030,2034,2035],{},[28,2031,2033],{"href":2032},"/pt/blog/table-column-widths","Como definir a largura das colunas de uma tabela?"," — larguras e alinhamento dentro de ",[23,2036,2037],{},"c.Table",[2014,2039,2040,2044],{},[28,2041,2043],{"href":2042},"/pt/blog/invoice-pdf-go-under-50-lines","Gere um PDF de nota fiscal em Go em menos de 50 linhas"," — esse padrão num documento inteiro",[14,2046,2048],{"id":2047},"experimente-o-gpdf","Experimente o gpdf",[19,2050,2051],{},"gpdf é uma biblioteca Go para gerar PDF. Licença MIT, zero dependências externas, suporte CJK nativo.",[67,2053,2057],{"className":2054,"code":2055,"language":2056,"meta":72,"style":72},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","go get github.com/gpdf-dev/gpdf\n","bash",[23,2058,2059],{"__ignoreMap":72},[76,2060,2061,2063,2066],{"class":78,"line":79},[76,2062,71],{"class":103},[76,2064,2065],{"class":210}," get",[76,2067,2068],{"class":210}," github.com/gpdf-dev/gpdf\n",[19,2070,2071,2075,2076],{},[28,2072,2074],{"href":30,"rel":2073},[32],"⭐ Dê uma estrela no GitHub"," · ",[28,2077,2080],{"href":2078,"rel":2079},"https://gpdf.dev/pt/docs/quickstart",[32],"Leia a documentação",[2082,2083,2084],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":72,"searchDepth":118,"depth":118,"links":2086},[2087,2088,2089,2090,2091,2092,2093,2094,2095],{"id":16,"depth":118,"text":17},{"id":37,"depth":118,"text":38},{"id":241,"depth":118,"text":242},{"id":1296,"depth":118,"text":1297},{"id":1519,"depth":118,"text":1520},{"id":1646,"depth":118,"text":1647},{"id":1815,"depth":118,"text":1816},{"id":2008,"depth":118,"text":2009},{"id":2047,"depth":118,"text":2048},"2026-09-02","Duas coisas são necessárias: um Col vazio de preenchimento para empurrar a coluna até a borda direita e template.AlignRight() no texto de dentro.",false,"md",{"name":2101,"totalTime":2102,"tools":2103,"steps":2106},"Alinhar uma coluna à borda direita de um Row no gpdf","PT10M",[2104,2105],"Go 1.22+","github.com/gpdf-dev/gpdf",[2107,2110,2113,2116,2119],{"name":2108,"text":2109},"Decida a qual direita você se refere","Colocar a caixa da coluna na borda direita do row e alinhar o texto dentro dessa coluna são dois problemas distintos com soluções distintas. A maioria dos layouts precisa dos dois.",{"name":2111,"text":2112},"Adicione um Col de preenchimento para os spans somarem 12","Chame r.Col com um callback vazio antes da coluna que você quer à direita. r.Col(8, func(c *template.ColBuilder) {}) seguido de r.Col(4, ...) encosta a coluna de 4 spans na margem direita.",{"name":2114,"text":2115},"Passe AlignRight nas opções de texto","Adicione template.AlignRight() a cada c.Text dentro dessa coluna. Sem isso o texto fica na borda esquerda de uma coluna que está à direita, e esse é o erro mais comum aqui.",{"name":2117,"text":2118},"Use a opção específica de tabelas e imagens","As opções de texto não alcançam o interior de um Table nem de um Image. Use template.ColumnAlign(document.AlignRight) numa tabela e template.WithAlign(document.AlignRight) numa imagem.",{"name":2120,"text":2121},"Recorra a page.Absolute só quando o row não resolver","page.Absolute(x, y, fn, template.AbsoluteWidth(w)) posiciona conteúdo em coordenadas fixas fora da grade. Serve para carimbos e marcas d'água, não para conteúdo alinhado à direita comum.",null,{},"/pt/blog/align-column-right-edge",{"title":5,"description":2097},"pt/blog/028.align-column-right-edge",[2128,2129,2130],"recipe","tutorial","templates","1XHkJywCAMp1cxIRbCkL1KMZs64-sbpWryHPEKBbLqE",1788360673177]