[{"data":1,"prerenderedAt":882},["ShallowReactive",2],{"docs-pt-guide/flatten":3},{"id":4,"title":5,"body":6,"description":875,"extension":876,"meta":877,"navigation":95,"path":878,"seo":879,"stem":880,"__hash__":881},"docsPt/pt/docs/2.guide/10.flatten.md","Achatamento de formularios",{"type":7,"value":8,"toc":865},"minimark",[9,14,18,22,25,41,45,57,335,339,344,376,380,387,398,402,411,512,516,519,797,801,831,835,861],[10,11,13],"h2",{"id":12},"visao-geral","Visao Geral",[15,16],"version-badge",{"version":17},"1.0.4",[19,20,21],"p",{},"O gpdf pode achatar campos AcroForm interativos (campos de texto, caixas de selecao, botoes de radio, etc.) em conteudo de pagina estatico. Apos o achatamento, os campos do formulario nao sao mais editaveis — sua aparencia visual e incorporada na pagina.",[19,23,24],{},"Casos de uso comuns:",[26,27,28,32,35,38],"ul",{},[29,30,31],"li",{},"Arquivar formularios preenchidos como documentos estaticos",[29,33,34],{},"Impedir edicoes adicionais em formularios enviados",[29,36,37],{},"Preparar formularios para impressao ou distribuicao",[29,39,40],{},"Converter PDFs interativos em PDFs estaticos",[10,42,44],{"id":43},"achatamento-basico","Achatamento Basico",[19,46,47,48,52,53,56],{},"Use ",[49,50,51],"code",{},"FlattenForms()"," em um documento existente aberto com ",[49,54,55],{},"gpdf.Open()",":",[58,59,64],"pre",{"className":60,"code":61,"language":62,"meta":63,"style":63},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import gpdf \"github.com/gpdf-dev/gpdf\"\n\n// Ler um PDF com campos de formulario preenchidos\npdfBytes, _ := os.ReadFile(\"filled-form.pdf\")\n\ndoc, err := gpdf.Open(pdfBytes)\nif err != nil {\n    log.Fatal(err)\n}\n\n// Achatar todos os campos de formulario em conteudo estatico\nif err := doc.FlattenForms(); err != nil {\n    log.Fatal(err)\n}\n\nresult, _ := doc.Save()\nos.WriteFile(\"flattened.pdf\", result, 0644)\n","go","",[49,65,66,90,97,104,143,148,175,192,210,216,221,227,255,270,275,280,302],{"__ignoreMap":63},[67,68,71,75,79,83,87],"span",{"class":69,"line":70},"line",1,[67,72,74],{"class":73},"s7zQu","import",[67,76,78],{"class":77},"sTEyZ"," gpdf ",[67,80,82],{"class":81},"sMK4o","\"",[67,84,86],{"class":85},"sBMFI","github.com/gpdf-dev/gpdf",[67,88,89],{"class":81},"\"\n",[67,91,93],{"class":69,"line":92},2,[67,94,96],{"emptyLinePlaceholder":95},true,"\n",[67,98,100],{"class":69,"line":99},3,[67,101,103],{"class":102},"sHwdD","// Ler um PDF com campos de formulario preenchidos\n",[67,105,107,110,113,116,119,122,125,129,132,134,138,140],{"class":69,"line":106},4,[67,108,109],{"class":77},"pdfBytes",[67,111,112],{"class":81},",",[67,114,115],{"class":77}," _ ",[67,117,118],{"class":81},":=",[67,120,121],{"class":77}," os",[67,123,124],{"class":81},".",[67,126,128],{"class":127},"s2Zo4","ReadFile",[67,130,131],{"class":81},"(",[67,133,82],{"class":81},[67,135,137],{"class":136},"sfazB","filled-form.pdf",[67,139,82],{"class":81},[67,141,142],{"class":81},")\n",[67,144,146],{"class":69,"line":145},5,[67,147,96],{"emptyLinePlaceholder":95},[67,149,151,154,156,159,161,164,166,169,171,173],{"class":69,"line":150},6,[67,152,153],{"class":77},"doc",[67,155,112],{"class":81},[67,157,158],{"class":77}," err ",[67,160,118],{"class":81},[67,162,163],{"class":77}," gpdf",[67,165,124],{"class":81},[67,167,168],{"class":127},"Open",[67,170,131],{"class":81},[67,172,109],{"class":77},[67,174,142],{"class":81},[67,176,178,181,183,186,189],{"class":69,"line":177},7,[67,179,180],{"class":73},"if",[67,182,158],{"class":77},[67,184,185],{"class":81},"!=",[67,187,188],{"class":81}," nil",[67,190,191],{"class":81}," {\n",[67,193,195,198,200,203,205,208],{"class":69,"line":194},8,[67,196,197],{"class":77},"    log",[67,199,124],{"class":81},[67,201,202],{"class":127},"Fatal",[67,204,131],{"class":81},[67,206,207],{"class":77},"err",[67,209,142],{"class":81},[67,211,213],{"class":69,"line":212},9,[67,214,215],{"class":81},"}\n",[67,217,219],{"class":69,"line":218},10,[67,220,96],{"emptyLinePlaceholder":95},[67,222,224],{"class":69,"line":223},11,[67,225,226],{"class":102},"// Achatar todos os campos de formulario em conteudo estatico\n",[67,228,230,232,234,236,239,241,244,247,249,251,253],{"class":69,"line":229},12,[67,231,180],{"class":73},[67,233,158],{"class":77},[67,235,118],{"class":81},[67,237,238],{"class":77}," doc",[67,240,124],{"class":81},[67,242,243],{"class":127},"FlattenForms",[67,245,246],{"class":81},"();",[67,248,158],{"class":77},[67,250,185],{"class":81},[67,252,188],{"class":81},[67,254,191],{"class":81},[67,256,258,260,262,264,266,268],{"class":69,"line":257},13,[67,259,197],{"class":77},[67,261,124],{"class":81},[67,263,202],{"class":127},[67,265,131],{"class":81},[67,267,207],{"class":77},[67,269,142],{"class":81},[67,271,273],{"class":69,"line":272},14,[67,274,215],{"class":81},[67,276,278],{"class":69,"line":277},15,[67,279,96],{"emptyLinePlaceholder":95},[67,281,283,286,288,290,292,294,296,299],{"class":69,"line":282},16,[67,284,285],{"class":77},"result",[67,287,112],{"class":81},[67,289,115],{"class":77},[67,291,118],{"class":81},[67,293,238],{"class":77},[67,295,124],{"class":81},[67,297,298],{"class":127},"Save",[67,300,301],{"class":81},"()\n",[67,303,305,308,310,313,315,317,320,322,324,327,329,333],{"class":69,"line":304},17,[67,306,307],{"class":77},"os",[67,309,124],{"class":81},[67,311,312],{"class":127},"WriteFile",[67,314,131],{"class":81},[67,316,82],{"class":81},[67,318,319],{"class":136},"flattened.pdf",[67,321,82],{"class":81},[67,323,112],{"class":81},[67,325,326],{"class":77}," result",[67,328,112],{"class":81},[67,330,332],{"class":331},"sbssI"," 0644",[67,334,142],{"class":81},[10,336,338],{"id":337},"o-que-e-achatado","O Que e Achatado",[19,340,341,343],{},[49,342,51],{}," processa todas as anotacoes widget (widgets de campos de formulario) que possuem fluxos de aparencia:",[26,345,346,357,366],{},[29,347,348,352,353,356],{},[349,350,351],"strong",{},"Campos de texto"," (",[49,354,355],{},"Tx",") — o texto inserido e renderizado como conteudo estatico",[29,358,359,352,362,365],{},[349,360,361],{},"Caixas de selecao e botoes de radio",[49,363,364],{},"Btn",") — o estado selecionado e renderizado",[29,367,368,371,372,375],{},[349,369,370],{},"Outros tipos de widget"," — qualquer widget com um fluxo de aparencia (dicionario ",[49,373,374],{},"/AP",")",[10,377,379],{"id":378},"o-que-e-preservado","O Que e Preservado",[19,381,382,383,386],{},"Anotacoes que nao sao widget ",[349,384,385],{},"nao"," sao removidas:",[26,388,389,392,395],{},[29,390,391],{},"Anotacoes de link (hyperlinks)",[29,393,394],{},"Anotacoes de texto (comentarios, notas adesivas)",[29,396,397],{},"Outras anotacoes que nao sao de formulario",[10,399,401],{"id":400},"seguro-para-chamar-em-qualquer-pdf","Seguro para Chamar em Qualquer PDF",[19,403,404,405,407,408,56],{},"Se o PDF nao possui campos AcroForm, ",[49,406,51],{}," e um no-op e retorna ",[49,409,410],{},"nil",[58,412,414],{"className":60,"code":413,"language":62,"meta":63,"style":63},"doc, _ := gpdf.Open(regularPDFBytes)\n\n// Seguro — nao faz nada se nao existem formularios\nif err := doc.FlattenForms(); err != nil {\n    log.Fatal(err)\n}\n\nresult, _ := doc.Save()\n",[49,415,416,439,443,448,472,486,490,494],{"__ignoreMap":63},[67,417,418,420,422,424,426,428,430,432,434,437],{"class":69,"line":70},[67,419,153],{"class":77},[67,421,112],{"class":81},[67,423,115],{"class":77},[67,425,118],{"class":81},[67,427,163],{"class":77},[67,429,124],{"class":81},[67,431,168],{"class":127},[67,433,131],{"class":81},[67,435,436],{"class":77},"regularPDFBytes",[67,438,142],{"class":81},[67,440,441],{"class":69,"line":92},[67,442,96],{"emptyLinePlaceholder":95},[67,444,445],{"class":69,"line":99},[67,446,447],{"class":102},"// Seguro — nao faz nada se nao existem formularios\n",[67,449,450,452,454,456,458,460,462,464,466,468,470],{"class":69,"line":106},[67,451,180],{"class":73},[67,453,158],{"class":77},[67,455,118],{"class":81},[67,457,238],{"class":77},[67,459,124],{"class":81},[67,461,243],{"class":127},[67,463,246],{"class":81},[67,465,158],{"class":77},[67,467,185],{"class":81},[67,469,188],{"class":81},[67,471,191],{"class":81},[67,473,474,476,478,480,482,484],{"class":69,"line":145},[67,475,197],{"class":77},[67,477,124],{"class":81},[67,479,202],{"class":127},[67,481,131],{"class":81},[67,483,207],{"class":77},[67,485,142],{"class":81},[67,487,488],{"class":69,"line":150},[67,489,215],{"class":81},[67,491,492],{"class":69,"line":177},[67,493,96],{"emptyLinePlaceholder":95},[67,495,496,498,500,502,504,506,508,510],{"class":69,"line":194},[67,497,285],{"class":77},[67,499,112],{"class":81},[67,501,115],{"class":77},[67,503,118],{"class":81},[67,505,238],{"class":77},[67,507,124],{"class":81},[67,509,298],{"class":127},[67,511,301],{"class":81},[10,513,515],{"id":514},"achatamento-sobreposicao","Achatamento + Sobreposicao",[19,517,518],{},"Combine achatamento com overlay para adicionar carimbos ou marcas d'agua apos o achatamento:",[58,520,522],{"className":60,"code":521,"language":62,"meta":63,"style":63},"doc, _ := gpdf.Open(filledFormPDF)\n\n// Passo 1: Achatar campos de formulario\ndoc.FlattenForms()\n\n// Passo 2: Adicionar um carimbo \"PROCESSED\"\ndoc.Overlay(0, func(p *template.PageBuilder) {\n    p.Absolute(document.Mm(130), document.Mm(15), func(c *template.ColBuilder) {\n        c.Text(\"PROCESSED\",\n            template.FontSize(24),\n            template.Bold(),\n            template.TextColor(pdf.RGB(0, 0.5, 0)),\n        )\n    })\n})\n\nresult, _ := doc.Save()\n",[49,523,524,547,551,556,566,570,575,612,672,694,712,724,760,765,770,775,779],{"__ignoreMap":63},[67,525,526,528,530,532,534,536,538,540,542,545],{"class":69,"line":70},[67,527,153],{"class":77},[67,529,112],{"class":81},[67,531,115],{"class":77},[67,533,118],{"class":81},[67,535,163],{"class":77},[67,537,124],{"class":81},[67,539,168],{"class":127},[67,541,131],{"class":81},[67,543,544],{"class":77},"filledFormPDF",[67,546,142],{"class":81},[67,548,549],{"class":69,"line":92},[67,550,96],{"emptyLinePlaceholder":95},[67,552,553],{"class":69,"line":99},[67,554,555],{"class":102},"// Passo 1: Achatar campos de formulario\n",[67,557,558,560,562,564],{"class":69,"line":106},[67,559,153],{"class":77},[67,561,124],{"class":81},[67,563,243],{"class":127},[67,565,301],{"class":81},[67,567,568],{"class":69,"line":145},[67,569,96],{"emptyLinePlaceholder":95},[67,571,572],{"class":69,"line":150},[67,573,574],{"class":102},"// Passo 2: Adicionar um carimbo \"PROCESSED\"\n",[67,576,577,579,581,584,586,589,591,594,597,600,603,605,608,610],{"class":69,"line":177},[67,578,153],{"class":77},[67,580,124],{"class":81},[67,582,583],{"class":127},"Overlay",[67,585,131],{"class":81},[67,587,588],{"class":331},"0",[67,590,112],{"class":81},[67,592,593],{"class":81}," func(",[67,595,19],{"class":596},"sHdIc",[67,598,599],{"class":81}," *",[67,601,602],{"class":85},"template",[67,604,124],{"class":81},[67,606,607],{"class":85},"PageBuilder",[67,609,375],{"class":81},[67,611,191],{"class":81},[67,613,614,617,619,622,624,627,629,632,634,637,640,643,645,647,649,652,654,656,659,661,663,665,668,670],{"class":69,"line":194},[67,615,616],{"class":77},"    p",[67,618,124],{"class":81},[67,620,621],{"class":127},"Absolute",[67,623,131],{"class":81},[67,625,626],{"class":77},"document",[67,628,124],{"class":81},[67,630,631],{"class":127},"Mm",[67,633,131],{"class":81},[67,635,636],{"class":331},"130",[67,638,639],{"class":81},"),",[67,641,642],{"class":77}," document",[67,644,124],{"class":81},[67,646,631],{"class":127},[67,648,131],{"class":81},[67,650,651],{"class":331},"15",[67,653,639],{"class":81},[67,655,593],{"class":81},[67,657,658],{"class":596},"c",[67,660,599],{"class":81},[67,662,602],{"class":85},[67,664,124],{"class":81},[67,666,667],{"class":85},"ColBuilder",[67,669,375],{"class":81},[67,671,191],{"class":81},[67,673,674,677,679,682,684,686,689,691],{"class":69,"line":212},[67,675,676],{"class":77},"        c",[67,678,124],{"class":81},[67,680,681],{"class":127},"Text",[67,683,131],{"class":81},[67,685,82],{"class":81},[67,687,688],{"class":136},"PROCESSED",[67,690,82],{"class":81},[67,692,693],{"class":81},",\n",[67,695,696,699,701,704,706,709],{"class":69,"line":218},[67,697,698],{"class":77},"            template",[67,700,124],{"class":81},[67,702,703],{"class":127},"FontSize",[67,705,131],{"class":81},[67,707,708],{"class":331},"24",[67,710,711],{"class":81},"),\n",[67,713,714,716,718,721],{"class":69,"line":223},[67,715,698],{"class":77},[67,717,124],{"class":81},[67,719,720],{"class":127},"Bold",[67,722,723],{"class":81},"(),\n",[67,725,726,728,730,733,735,738,740,743,745,747,749,752,754,757],{"class":69,"line":229},[67,727,698],{"class":77},[67,729,124],{"class":81},[67,731,732],{"class":127},"TextColor",[67,734,131],{"class":81},[67,736,737],{"class":77},"pdf",[67,739,124],{"class":81},[67,741,742],{"class":127},"RGB",[67,744,131],{"class":81},[67,746,588],{"class":331},[67,748,112],{"class":81},[67,750,751],{"class":331}," 0.5",[67,753,112],{"class":81},[67,755,756],{"class":331}," 0",[67,758,759],{"class":81},")),\n",[67,761,762],{"class":69,"line":257},[67,763,764],{"class":81},"        )\n",[67,766,767],{"class":69,"line":272},[67,768,769],{"class":81},"    })\n",[67,771,772],{"class":69,"line":277},[67,773,774],{"class":81},"})\n",[67,776,777],{"class":69,"line":282},[67,778,96],{"emptyLinePlaceholder":95},[67,780,781,783,785,787,789,791,793,795],{"class":69,"line":304},[67,782,285],{"class":77},[67,784,112],{"class":81},[67,786,115],{"class":77},[67,788,118],{"class":81},[67,790,238],{"class":77},[67,792,124],{"class":81},[67,794,298],{"class":127},[67,796,301],{"class":81},[10,798,800],{"id":799},"referencia-da-api","Referencia da API",[802,803,804,817],"table",{},[805,806,807],"thead",{},[808,809,810,814],"tr",{},[811,812,813],"th",{},"Metodo",[811,815,816],{},"Descricao",[818,819,820],"tbody",{},[808,821,822,828],{},[823,824,825],"td",{},[49,826,827],{},"doc.FlattenForms()",[823,829,830],{},"Achatar todos os campos AcroForm em conteudo de pagina estatico",[10,832,834],{"id":833},"proximos-passos","Proximos Passos",[26,836,837,845,852],{},[29,838,839,844],{},[840,841,843],"a",{"href":842},"/pt/docs/guide/overlay","Overlay de PDF Existente"," — Adicionar conteudo sobre PDFs existentes",[29,846,847,851],{},[840,848,850],{"href":849},"/pt/docs/guide/security","Seguranca"," — Criptografia, PDF/A e assinaturas digitais",[29,853,854,857,858],{},[840,855,800],{"href":856},"/pt/docs/api-reference/gpdf"," — Referencia completa do pacote ",[49,859,860],{},"gpdf",[862,863,864],"style",{},"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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .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}",{"title":63,"searchDepth":92,"depth":92,"links":866},[867,868,869,870,871,872,873,874],{"id":12,"depth":92,"text":13},{"id":43,"depth":92,"text":44},{"id":337,"depth":92,"text":338},{"id":378,"depth":92,"text":379},{"id":400,"depth":92,"text":401},{"id":514,"depth":92,"text":515},{"id":799,"depth":92,"text":800},{"id":833,"depth":92,"text":834},"Achatar campos AcroForm em conteudo de pagina estatico","md",{},"/pt/docs/guide/flatten",{"title":5,"description":875},"pt/docs/2.guide/10.flatten","L-5yMqJ-QauJWHcf4A2ZV5XiiKHX3xYtVCSU8heJwgQ",1776529292979]