[{"data":1,"prerenderedAt":883},["ShallowReactive",2],{"docs-ko-guide/flatten":3},{"id":4,"title":5,"body":6,"description":876,"extension":877,"meta":878,"navigation":93,"path":879,"seo":880,"stem":881,"__hash__":882},"docsKo/ko/docs/2.guide/10.flatten.md","폼 플래트닝",{"type":7,"value":8,"toc":866},"minimark",[9,13,17,21,24,40,44,55,333,337,342,374,378,385,396,400,410,511,515,518,797,801,831,835,862],[10,11,12],"h2",{"id":12},"개요",[14,15],"version-badge",{"version":16},"1.0.4",[18,19,20],"p",{},"gpdf는 대화형 AcroForm 필드(텍스트 필드, 체크박스, 라디오 버튼 등)를 정적 페이지 콘텐츠로 플래트닝할 수 있습니다. 플래트닝 후 폼 필드는 더 이상 편집할 수 없으며, 시각적 표현이 페이지에 고정됩니다.",[18,22,23],{},"일반적인 사용 사례:",[25,26,27,31,34,37],"ul",{},[28,29,30],"li",{},"작성된 폼을 정적 문서로 보관",[28,32,33],{},"제출된 폼의 추가 편집 방지",[28,35,36],{},"인쇄 또는 배포를 위한 폼 준비",[28,38,39],{},"대화형 PDF를 정적 PDF로 변환",[10,41,43],{"id":42},"기본-플래트닝","기본 플래트닝",[18,45,46,50,51,54],{},[47,48,49],"code",{},"gpdf.Open()","으로 연 기존 문서에서 ",[47,52,53],{},"FlattenForms()","를 사용합니다:",[56,57,62],"pre",{"className":58,"code":59,"language":60,"meta":61,"style":61},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import gpdf \"github.com/gpdf-dev/gpdf\"\n\n// 작성된 폼 필드가 있는 PDF 읽기\npdfBytes, _ := os.ReadFile(\"filled-form.pdf\")\n\ndoc, err := gpdf.Open(pdfBytes)\nif err != nil {\n    log.Fatal(err)\n}\n\n// 모든 폼 필드를 정적 콘텐츠로 플래트닝\nif err := doc.FlattenForms(); err != nil {\n    log.Fatal(err)\n}\n\nresult, _ := doc.Save()\nos.WriteFile(\"flattened.pdf\", result, 0644)\n","go","",[47,63,64,88,95,102,141,146,173,190,208,214,219,225,253,268,273,278,300],{"__ignoreMap":61},[65,66,69,73,77,81,85],"span",{"class":67,"line":68},"line",1,[65,70,72],{"class":71},"s7zQu","import",[65,74,76],{"class":75},"sTEyZ"," gpdf ",[65,78,80],{"class":79},"sMK4o","\"",[65,82,84],{"class":83},"sBMFI","github.com/gpdf-dev/gpdf",[65,86,87],{"class":79},"\"\n",[65,89,91],{"class":67,"line":90},2,[65,92,94],{"emptyLinePlaceholder":93},true,"\n",[65,96,98],{"class":67,"line":97},3,[65,99,101],{"class":100},"sHwdD","// 작성된 폼 필드가 있는 PDF 읽기\n",[65,103,105,108,111,114,117,120,123,127,130,132,136,138],{"class":67,"line":104},4,[65,106,107],{"class":75},"pdfBytes",[65,109,110],{"class":79},",",[65,112,113],{"class":75}," _ ",[65,115,116],{"class":79},":=",[65,118,119],{"class":75}," os",[65,121,122],{"class":79},".",[65,124,126],{"class":125},"s2Zo4","ReadFile",[65,128,129],{"class":79},"(",[65,131,80],{"class":79},[65,133,135],{"class":134},"sfazB","filled-form.pdf",[65,137,80],{"class":79},[65,139,140],{"class":79},")\n",[65,142,144],{"class":67,"line":143},5,[65,145,94],{"emptyLinePlaceholder":93},[65,147,149,152,154,157,159,162,164,167,169,171],{"class":67,"line":148},6,[65,150,151],{"class":75},"doc",[65,153,110],{"class":79},[65,155,156],{"class":75}," err ",[65,158,116],{"class":79},[65,160,161],{"class":75}," gpdf",[65,163,122],{"class":79},[65,165,166],{"class":125},"Open",[65,168,129],{"class":79},[65,170,107],{"class":75},[65,172,140],{"class":79},[65,174,176,179,181,184,187],{"class":67,"line":175},7,[65,177,178],{"class":71},"if",[65,180,156],{"class":75},[65,182,183],{"class":79},"!=",[65,185,186],{"class":79}," nil",[65,188,189],{"class":79}," {\n",[65,191,193,196,198,201,203,206],{"class":67,"line":192},8,[65,194,195],{"class":75},"    log",[65,197,122],{"class":79},[65,199,200],{"class":125},"Fatal",[65,202,129],{"class":79},[65,204,205],{"class":75},"err",[65,207,140],{"class":79},[65,209,211],{"class":67,"line":210},9,[65,212,213],{"class":79},"}\n",[65,215,217],{"class":67,"line":216},10,[65,218,94],{"emptyLinePlaceholder":93},[65,220,222],{"class":67,"line":221},11,[65,223,224],{"class":100},"// 모든 폼 필드를 정적 콘텐츠로 플래트닝\n",[65,226,228,230,232,234,237,239,242,245,247,249,251],{"class":67,"line":227},12,[65,229,178],{"class":71},[65,231,156],{"class":75},[65,233,116],{"class":79},[65,235,236],{"class":75}," doc",[65,238,122],{"class":79},[65,240,241],{"class":125},"FlattenForms",[65,243,244],{"class":79},"();",[65,246,156],{"class":75},[65,248,183],{"class":79},[65,250,186],{"class":79},[65,252,189],{"class":79},[65,254,256,258,260,262,264,266],{"class":67,"line":255},13,[65,257,195],{"class":75},[65,259,122],{"class":79},[65,261,200],{"class":125},[65,263,129],{"class":79},[65,265,205],{"class":75},[65,267,140],{"class":79},[65,269,271],{"class":67,"line":270},14,[65,272,213],{"class":79},[65,274,276],{"class":67,"line":275},15,[65,277,94],{"emptyLinePlaceholder":93},[65,279,281,284,286,288,290,292,294,297],{"class":67,"line":280},16,[65,282,283],{"class":75},"result",[65,285,110],{"class":79},[65,287,113],{"class":75},[65,289,116],{"class":79},[65,291,236],{"class":75},[65,293,122],{"class":79},[65,295,296],{"class":125},"Save",[65,298,299],{"class":79},"()\n",[65,301,303,306,308,311,313,315,318,320,322,325,327,331],{"class":67,"line":302},17,[65,304,305],{"class":75},"os",[65,307,122],{"class":79},[65,309,310],{"class":125},"WriteFile",[65,312,129],{"class":79},[65,314,80],{"class":79},[65,316,317],{"class":134},"flattened.pdf",[65,319,80],{"class":79},[65,321,110],{"class":79},[65,323,324],{"class":75}," result",[65,326,110],{"class":79},[65,328,330],{"class":329},"sbssI"," 0644",[65,332,140],{"class":79},[10,334,336],{"id":335},"플래트닝되는-요소","플래트닝되는 요소",[18,338,339,341],{},[47,340,53],{},"는 외형 스트림이 있는 모든 위젯 어노테이션(폼 필드 위젯)을 처리합니다:",[25,343,344,355,364],{},[28,345,346,350,351,354],{},[347,348,349],"strong",{},"텍스트 필드"," (",[47,352,353],{},"Tx",") — 입력된 텍스트가 정적 콘텐츠로 렌더링됩니다",[28,356,357,350,360,363],{},[347,358,359],{},"체크박스 및 라디오 버튼",[47,361,362],{},"Btn",") — 선택된 상태가 렌더링됩니다",[28,365,366,369,370,373],{},[347,367,368],{},"기타 위젯 타입"," — 외형 스트림(",[47,371,372],{},"/AP"," 딕셔너리)이 있는 모든 위젯",[10,375,377],{"id":376},"보존되는-요소","보존되는 요소",[18,379,380,381,384],{},"위젯이 아닌 어노테이션은 제거되지 ",[347,382,383],{},"않습니다",":",[25,386,387,390,393],{},[28,388,389],{},"링크 어노테이션 (하이퍼링크)",[28,391,392],{},"텍스트 어노테이션 (댓글, 스티커 노트)",[28,394,395],{},"기타 비폼 어노테이션",[10,397,399],{"id":398},"모든-pdf에서-안전하게-호출-가능","모든 PDF에서 안전하게 호출 가능",[18,401,402,403,405,406,409],{},"PDF에 AcroForm 필드가 없는 경우 ",[47,404,53],{},"는 아무 작업도 수행하지 않고 ",[47,407,408],{},"nil","을 반환합니다:",[56,411,413],{"className":58,"code":412,"language":60,"meta":61,"style":61},"doc, _ := gpdf.Open(regularPDFBytes)\n\n// 안전 — 폼이 없으면 아무 작업도 수행하지 않음\nif err := doc.FlattenForms(); err != nil {\n    log.Fatal(err)\n}\n\nresult, _ := doc.Save()\n",[47,414,415,438,442,447,471,485,489,493],{"__ignoreMap":61},[65,416,417,419,421,423,425,427,429,431,433,436],{"class":67,"line":68},[65,418,151],{"class":75},[65,420,110],{"class":79},[65,422,113],{"class":75},[65,424,116],{"class":79},[65,426,161],{"class":75},[65,428,122],{"class":79},[65,430,166],{"class":125},[65,432,129],{"class":79},[65,434,435],{"class":75},"regularPDFBytes",[65,437,140],{"class":79},[65,439,440],{"class":67,"line":90},[65,441,94],{"emptyLinePlaceholder":93},[65,443,444],{"class":67,"line":97},[65,445,446],{"class":100},"// 안전 — 폼이 없으면 아무 작업도 수행하지 않음\n",[65,448,449,451,453,455,457,459,461,463,465,467,469],{"class":67,"line":104},[65,450,178],{"class":71},[65,452,156],{"class":75},[65,454,116],{"class":79},[65,456,236],{"class":75},[65,458,122],{"class":79},[65,460,241],{"class":125},[65,462,244],{"class":79},[65,464,156],{"class":75},[65,466,183],{"class":79},[65,468,186],{"class":79},[65,470,189],{"class":79},[65,472,473,475,477,479,481,483],{"class":67,"line":143},[65,474,195],{"class":75},[65,476,122],{"class":79},[65,478,200],{"class":125},[65,480,129],{"class":79},[65,482,205],{"class":75},[65,484,140],{"class":79},[65,486,487],{"class":67,"line":148},[65,488,213],{"class":79},[65,490,491],{"class":67,"line":175},[65,492,94],{"emptyLinePlaceholder":93},[65,494,495,497,499,501,503,505,507,509],{"class":67,"line":192},[65,496,283],{"class":75},[65,498,110],{"class":79},[65,500,113],{"class":75},[65,502,116],{"class":79},[65,504,236],{"class":75},[65,506,122],{"class":79},[65,508,296],{"class":125},[65,510,299],{"class":79},[10,512,514],{"id":513},"플래트닝-오버레이","플래트닝 + 오버레이",[18,516,517],{},"플래트닝 후 스탬프나 워터마크를 추가하려면 플래트닝과 오버레이를 결합합니다:",[56,519,521],{"className":58,"code":520,"language":60,"meta":61,"style":61},"doc, _ := gpdf.Open(filledFormPDF)\n\n// 1단계: 폼 필드 플래트닝\ndoc.FlattenForms()\n\n// 2단계: \"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",[47,522,523,546,550,555,565,569,574,612,672,694,712,724,760,765,770,775,779],{"__ignoreMap":61},[65,524,525,527,529,531,533,535,537,539,541,544],{"class":67,"line":68},[65,526,151],{"class":75},[65,528,110],{"class":79},[65,530,113],{"class":75},[65,532,116],{"class":79},[65,534,161],{"class":75},[65,536,122],{"class":79},[65,538,166],{"class":125},[65,540,129],{"class":79},[65,542,543],{"class":75},"filledFormPDF",[65,545,140],{"class":79},[65,547,548],{"class":67,"line":90},[65,549,94],{"emptyLinePlaceholder":93},[65,551,552],{"class":67,"line":97},[65,553,554],{"class":100},"// 1단계: 폼 필드 플래트닝\n",[65,556,557,559,561,563],{"class":67,"line":104},[65,558,151],{"class":75},[65,560,122],{"class":79},[65,562,241],{"class":125},[65,564,299],{"class":79},[65,566,567],{"class":67,"line":143},[65,568,94],{"emptyLinePlaceholder":93},[65,570,571],{"class":67,"line":148},[65,572,573],{"class":100},"// 2단계: \"PROCESSED\" 스탬프 추가\n",[65,575,576,578,580,583,585,588,590,593,596,599,602,604,607,610],{"class":67,"line":175},[65,577,151],{"class":75},[65,579,122],{"class":79},[65,581,582],{"class":125},"Overlay",[65,584,129],{"class":79},[65,586,587],{"class":329},"0",[65,589,110],{"class":79},[65,591,592],{"class":79}," func(",[65,594,18],{"class":595},"sHdIc",[65,597,598],{"class":79}," *",[65,600,601],{"class":83},"template",[65,603,122],{"class":79},[65,605,606],{"class":83},"PageBuilder",[65,608,609],{"class":79},")",[65,611,189],{"class":79},[65,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":67,"line":192},[65,615,616],{"class":75},"    p",[65,618,122],{"class":79},[65,620,621],{"class":125},"Absolute",[65,623,129],{"class":79},[65,625,626],{"class":75},"document",[65,628,122],{"class":79},[65,630,631],{"class":125},"Mm",[65,633,129],{"class":79},[65,635,636],{"class":329},"130",[65,638,639],{"class":79},"),",[65,641,642],{"class":75}," document",[65,644,122],{"class":79},[65,646,631],{"class":125},[65,648,129],{"class":79},[65,650,651],{"class":329},"15",[65,653,639],{"class":79},[65,655,592],{"class":79},[65,657,658],{"class":595},"c",[65,660,598],{"class":79},[65,662,601],{"class":83},[65,664,122],{"class":79},[65,666,667],{"class":83},"ColBuilder",[65,669,609],{"class":79},[65,671,189],{"class":79},[65,673,674,677,679,682,684,686,689,691],{"class":67,"line":210},[65,675,676],{"class":75},"        c",[65,678,122],{"class":79},[65,680,681],{"class":125},"Text",[65,683,129],{"class":79},[65,685,80],{"class":79},[65,687,688],{"class":134},"PROCESSED",[65,690,80],{"class":79},[65,692,693],{"class":79},",\n",[65,695,696,699,701,704,706,709],{"class":67,"line":216},[65,697,698],{"class":75},"            template",[65,700,122],{"class":79},[65,702,703],{"class":125},"FontSize",[65,705,129],{"class":79},[65,707,708],{"class":329},"24",[65,710,711],{"class":79},"),\n",[65,713,714,716,718,721],{"class":67,"line":221},[65,715,698],{"class":75},[65,717,122],{"class":79},[65,719,720],{"class":125},"Bold",[65,722,723],{"class":79},"(),\n",[65,725,726,728,730,733,735,738,740,743,745,747,749,752,754,757],{"class":67,"line":227},[65,727,698],{"class":75},[65,729,122],{"class":79},[65,731,732],{"class":125},"TextColor",[65,734,129],{"class":79},[65,736,737],{"class":75},"pdf",[65,739,122],{"class":79},[65,741,742],{"class":125},"RGB",[65,744,129],{"class":79},[65,746,587],{"class":329},[65,748,110],{"class":79},[65,750,751],{"class":329}," 0.5",[65,753,110],{"class":79},[65,755,756],{"class":329}," 0",[65,758,759],{"class":79},")),\n",[65,761,762],{"class":67,"line":255},[65,763,764],{"class":79},"        )\n",[65,766,767],{"class":67,"line":270},[65,768,769],{"class":79},"    })\n",[65,771,772],{"class":67,"line":275},[65,773,774],{"class":79},"})\n",[65,776,777],{"class":67,"line":280},[65,778,94],{"emptyLinePlaceholder":93},[65,780,781,783,785,787,789,791,793,795],{"class":67,"line":302},[65,782,283],{"class":75},[65,784,110],{"class":79},[65,786,113],{"class":75},[65,788,116],{"class":79},[65,790,236],{"class":75},[65,792,122],{"class":79},[65,794,296],{"class":125},[65,796,299],{"class":79},[10,798,800],{"id":799},"api-레퍼런스","API 레퍼런스",[802,803,804,817],"table",{},[805,806,807],"thead",{},[808,809,810,814],"tr",{},[811,812,813],"th",{},"메서드",[811,815,816],{},"설명",[818,819,820],"tbody",{},[808,821,822,828],{},[823,824,825],"td",{},[47,826,827],{},"doc.FlattenForms()",[823,829,830],{},"모든 AcroForm 필드를 정적 페이지 콘텐츠로 플래트닝",[10,832,834],{"id":833},"다음-단계","다음 단계",[25,836,837,845,852],{},[28,838,839,844],{},[840,841,843],"a",{"href":842},"/ko/docs/guide/overlay","기존 PDF 오버레이"," — 기존 PDF 위에 콘텐츠 추가",[28,846,847,851],{},[840,848,850],{"href":849},"/ko/docs/guide/security","보안"," — 암호화, PDF/A, 디지털 서명",[28,853,854,857,858,861],{},[840,855,800],{"href":856},"/ko/docs/api-reference/gpdf"," — 전체 ",[47,859,860],{},"gpdf"," 패키지 레퍼런스",[863,864,865],"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":61,"searchDepth":90,"depth":90,"links":867},[868,869,870,871,872,873,874,875],{"id":12,"depth":90,"text":12},{"id":42,"depth":90,"text":43},{"id":335,"depth":90,"text":336},{"id":376,"depth":90,"text":377},{"id":398,"depth":90,"text":399},{"id":513,"depth":90,"text":514},{"id":799,"depth":90,"text":800},{"id":833,"depth":90,"text":834},"AcroForm 필드를 정적 페이지 콘텐츠로 플래트닝","md",{},"/ko/docs/guide/flatten",{"title":5,"description":876},"ko/docs/2.guide/10.flatten","raN5-qOlsarUA_XEUc5o00SztffMx1CgRwJkduYV4U8",1776529288295]