[{"data":1,"prerenderedAt":1427},["ShallowReactive",2],{"docs-ko-api-reference/pdf":3},{"id":4,"title":5,"body":6,"description":1420,"extension":1421,"meta":1422,"navigation":119,"path":1423,"seo":1424,"stem":1425,"__hash__":1426},"docsKo/ko/docs/3.api-reference/3.pdf.md","PDF 프리미티브",{"type":7,"value":8,"toc":1406},"minimark",[9,13,26,55,58,61,66,279,283,384,388,399,475,478,576,580,637,641,703,707,710,944,948,951,1159,1163,1169,1388,1391,1399,1402],[10,11,12],"h2",{"id":12},"개요",[14,15,16,20,21,25],"p",{},[17,18,19],"code",{},"pdf"," 패키지 (Layer 1)는 저수준 PDF 프리미티브를 제공합니다. 대부분의 사용자는 이 패키지에서 ",[22,23,24],"strong",{},"색상 함수","만 필요합니다 — 나머지는 레이아웃 엔진 내부에서 사용됩니다.",[27,28,33],"pre",{"className":29,"code":30,"language":31,"meta":32,"style":32},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import \"github.com/gpdf-dev/gpdf/pdf\"\n","go","",[17,34,35],{"__ignoreMap":32},[36,37,40,44,48,52],"span",{"class":38,"line":39},"line",1,[36,41,43],{"class":42},"s7zQu","import",[36,45,47],{"class":46},"sMK4o"," \"",[36,49,51],{"class":50},"sBMFI","github.com/gpdf-dev/gpdf/pdf",[36,53,54],{"class":46},"\"\n",[10,56,57],{"id":57},"색상",[14,59,60],{},"색상은 pdf 패키지에서 가장 일반적으로 사용되는 타입입니다.",[62,63,65],"h3",{"id":64},"색상-생성자","색상 생성자",[27,67,69],{"className":29,"code":68,"language":31,"meta":32,"style":32},"// RGB (float values 0.0 – 1.0)\npdf.RGB(1.0, 0.5, 0.0)     // Orange\n\n// Hex (uint32)\npdf.RGBHex(0xFF6B6B)       // Coral\npdf.RGBHex(0x1A237E)       // Dark blue\n\n// Grayscale (0.0 = black, 1.0 = white)\npdf.Gray(0.0)              // Black\npdf.Gray(0.5)              // Medium gray\npdf.Gray(1.0)              // White\n\n// CMYK (for print)\npdf.CMYK(0, 1, 1, 0)      // Red in CMYK\n",[17,70,71,77,114,121,127,147,166,171,177,197,216,234,239,245],{"__ignoreMap":32},[36,72,73],{"class":38,"line":39},[36,74,76],{"class":75},"sHwdD","// RGB (float values 0.0 – 1.0)\n",[36,78,80,83,86,90,93,97,100,103,105,108,111],{"class":38,"line":79},2,[36,81,19],{"class":82},"sTEyZ",[36,84,85],{"class":46},".",[36,87,89],{"class":88},"s2Zo4","RGB",[36,91,92],{"class":46},"(",[36,94,96],{"class":95},"sbssI","1.0",[36,98,99],{"class":46},",",[36,101,102],{"class":95}," 0.5",[36,104,99],{"class":46},[36,106,107],{"class":95}," 0.0",[36,109,110],{"class":46},")",[36,112,113],{"class":75},"     // Orange\n",[36,115,117],{"class":38,"line":116},3,[36,118,120],{"emptyLinePlaceholder":119},true,"\n",[36,122,124],{"class":38,"line":123},4,[36,125,126],{"class":75},"// Hex (uint32)\n",[36,128,130,132,134,137,139,142,144],{"class":38,"line":129},5,[36,131,19],{"class":82},[36,133,85],{"class":46},[36,135,136],{"class":88},"RGBHex",[36,138,92],{"class":46},[36,140,141],{"class":95},"0xFF6B6B",[36,143,110],{"class":46},[36,145,146],{"class":75},"       // Coral\n",[36,148,150,152,154,156,158,161,163],{"class":38,"line":149},6,[36,151,19],{"class":82},[36,153,85],{"class":46},[36,155,136],{"class":88},[36,157,92],{"class":46},[36,159,160],{"class":95},"0x1A237E",[36,162,110],{"class":46},[36,164,165],{"class":75},"       // Dark blue\n",[36,167,169],{"class":38,"line":168},7,[36,170,120],{"emptyLinePlaceholder":119},[36,172,174],{"class":38,"line":173},8,[36,175,176],{"class":75},"// Grayscale (0.0 = black, 1.0 = white)\n",[36,178,180,182,184,187,189,192,194],{"class":38,"line":179},9,[36,181,19],{"class":82},[36,183,85],{"class":46},[36,185,186],{"class":88},"Gray",[36,188,92],{"class":46},[36,190,191],{"class":95},"0.0",[36,193,110],{"class":46},[36,195,196],{"class":75},"              // Black\n",[36,198,200,202,204,206,208,211,213],{"class":38,"line":199},10,[36,201,19],{"class":82},[36,203,85],{"class":46},[36,205,186],{"class":88},[36,207,92],{"class":46},[36,209,210],{"class":95},"0.5",[36,212,110],{"class":46},[36,214,215],{"class":75},"              // Medium gray\n",[36,217,219,221,223,225,227,229,231],{"class":38,"line":218},11,[36,220,19],{"class":82},[36,222,85],{"class":46},[36,224,186],{"class":88},[36,226,92],{"class":46},[36,228,96],{"class":95},[36,230,110],{"class":46},[36,232,233],{"class":75},"              // White\n",[36,235,237],{"class":38,"line":236},12,[36,238,120],{"emptyLinePlaceholder":119},[36,240,242],{"class":38,"line":241},13,[36,243,244],{"class":75},"// CMYK (for print)\n",[36,246,248,250,252,255,257,260,262,265,267,269,271,274,276],{"class":38,"line":247},14,[36,249,19],{"class":82},[36,251,85],{"class":46},[36,253,254],{"class":88},"CMYK",[36,256,92],{"class":46},[36,258,259],{"class":95},"0",[36,261,99],{"class":46},[36,263,264],{"class":95}," 1",[36,266,99],{"class":46},[36,268,264],{"class":95},[36,270,99],{"class":46},[36,272,273],{"class":95}," 0",[36,275,110],{"class":46},[36,277,278],{"class":75},"      // Red in CMYK\n",[62,280,282],{"id":281},"미리-정의된-색상","미리 정의된 색상",[27,284,286],{"className":29,"code":285,"language":31,"meta":32,"style":32},"pdf.Black    // Gray(0)\npdf.White    // Gray(1)\npdf.Red      // RGB(1, 0, 0)\npdf.Green    // RGB(0, 1, 0)\npdf.Blue     // RGB(0, 0, 1)\npdf.Yellow   // RGB(1, 1, 0)\npdf.Cyan     // RGB(0, 1, 1)\npdf.Magenta  // RGB(1, 0, 1)\n",[17,287,288,300,312,324,336,348,360,372],{"__ignoreMap":32},[36,289,290,292,294,297],{"class":38,"line":39},[36,291,19],{"class":82},[36,293,85],{"class":46},[36,295,296],{"class":82},"Black    ",[36,298,299],{"class":75},"// Gray(0)\n",[36,301,302,304,306,309],{"class":38,"line":79},[36,303,19],{"class":82},[36,305,85],{"class":46},[36,307,308],{"class":82},"White    ",[36,310,311],{"class":75},"// Gray(1)\n",[36,313,314,316,318,321],{"class":38,"line":116},[36,315,19],{"class":82},[36,317,85],{"class":46},[36,319,320],{"class":82},"Red      ",[36,322,323],{"class":75},"// RGB(1, 0, 0)\n",[36,325,326,328,330,333],{"class":38,"line":123},[36,327,19],{"class":82},[36,329,85],{"class":46},[36,331,332],{"class":82},"Green    ",[36,334,335],{"class":75},"// RGB(0, 1, 0)\n",[36,337,338,340,342,345],{"class":38,"line":129},[36,339,19],{"class":82},[36,341,85],{"class":46},[36,343,344],{"class":82},"Blue     ",[36,346,347],{"class":75},"// RGB(0, 0, 1)\n",[36,349,350,352,354,357],{"class":38,"line":149},[36,351,19],{"class":82},[36,353,85],{"class":46},[36,355,356],{"class":82},"Yellow   ",[36,358,359],{"class":75},"// RGB(1, 1, 0)\n",[36,361,362,364,366,369],{"class":38,"line":168},[36,363,19],{"class":82},[36,365,85],{"class":46},[36,367,368],{"class":82},"Cyan     ",[36,370,371],{"class":75},"// RGB(0, 1, 1)\n",[36,373,374,376,378,381],{"class":38,"line":173},[36,375,19],{"class":82},[36,377,85],{"class":46},[36,379,380],{"class":82},"Magenta  ",[36,382,383],{"class":75},"// RGB(1, 0, 1)\n",[62,385,387],{"id":386},"색상-사용","색상 사용",[14,389,390,391,394,395,398],{},"색상은 ",[17,392,393],{},"TextColor()"," 및 ",[17,396,397],{},"BgColor()"," 텍스트 옵션과 함께 사용됩니다:",[27,400,402],{"className":29,"code":401,"language":31,"meta":32,"style":32},"c.Text(\"Red on yellow\",\n    template.TextColor(pdf.Red),\n    template.BgColor(pdf.Yellow),\n)\n",[17,403,404,428,450,470],{"__ignoreMap":32},[36,405,406,409,411,414,416,419,423,425],{"class":38,"line":39},[36,407,408],{"class":82},"c",[36,410,85],{"class":46},[36,412,413],{"class":88},"Text",[36,415,92],{"class":46},[36,417,418],{"class":46},"\"",[36,420,422],{"class":421},"sfazB","Red on yellow",[36,424,418],{"class":46},[36,426,427],{"class":46},",\n",[36,429,430,433,435,438,440,442,444,447],{"class":38,"line":79},[36,431,432],{"class":82},"    template",[36,434,85],{"class":46},[36,436,437],{"class":88},"TextColor",[36,439,92],{"class":46},[36,441,19],{"class":82},[36,443,85],{"class":46},[36,445,446],{"class":82},"Red",[36,448,449],{"class":46},"),\n",[36,451,452,454,456,459,461,463,465,468],{"class":38,"line":116},[36,453,432],{"class":82},[36,455,85],{"class":46},[36,457,458],{"class":88},"BgColor",[36,460,92],{"class":46},[36,462,19],{"class":82},[36,464,85],{"class":46},[36,466,467],{"class":82},"Yellow",[36,469,449],{"class":46},[36,471,472],{"class":38,"line":123},[36,473,474],{"class":46},")\n",[14,476,477],{},"테이블/선 옵션에도 사용됩니다:",[27,479,481],{"className":29,"code":480,"language":31,"meta":32,"style":32},"// Table header\ntemplate.TableHeaderStyle(\n    template.TextColor(pdf.White),\n    template.BgColor(pdf.RGBHex(0x1A237E)),\n)\n\n// Line color\ntemplate.LineColor(pdf.Blue)\n",[17,482,483,488,501,520,543,547,551,556],{"__ignoreMap":32},[36,484,485],{"class":38,"line":39},[36,486,487],{"class":75},"// Table header\n",[36,489,490,493,495,498],{"class":38,"line":79},[36,491,492],{"class":82},"template",[36,494,85],{"class":46},[36,496,497],{"class":88},"TableHeaderStyle",[36,499,500],{"class":46},"(\n",[36,502,503,505,507,509,511,513,515,518],{"class":38,"line":116},[36,504,432],{"class":82},[36,506,85],{"class":46},[36,508,437],{"class":88},[36,510,92],{"class":46},[36,512,19],{"class":82},[36,514,85],{"class":46},[36,516,517],{"class":82},"White",[36,519,449],{"class":46},[36,521,522,524,526,528,530,532,534,536,538,540],{"class":38,"line":123},[36,523,432],{"class":82},[36,525,85],{"class":46},[36,527,458],{"class":88},[36,529,92],{"class":46},[36,531,19],{"class":82},[36,533,85],{"class":46},[36,535,136],{"class":88},[36,537,92],{"class":46},[36,539,160],{"class":95},[36,541,542],{"class":46},")),\n",[36,544,545],{"class":38,"line":129},[36,546,474],{"class":46},[36,548,549],{"class":38,"line":149},[36,550,120],{"emptyLinePlaceholder":119},[36,552,553],{"class":38,"line":168},[36,554,555],{"class":75},"// Line color\n",[36,557,558,560,562,565,567,569,571,574],{"class":38,"line":173},[36,559,492],{"class":82},[36,561,85],{"class":46},[36,563,564],{"class":88},"LineColor",[36,566,92],{"class":46},[36,568,19],{"class":82},[36,570,85],{"class":46},[36,572,573],{"class":82},"Blue",[36,575,474],{"class":46},[62,577,579],{"id":578},"색-공간","색 공간",[27,581,583],{"className":29,"code":582,"language":31,"meta":32,"style":32},"type ColorSpace int\n\nconst (\n    ColorSpaceRGB  ColorSpace = iota\n    ColorSpaceGray\n    ColorSpaceCMYK\n)\n",[17,584,585,597,601,609,623,628,633],{"__ignoreMap":32},[36,586,587,590,593],{"class":38,"line":39},[36,588,589],{"class":46},"type",[36,591,592],{"class":50}," ColorSpace",[36,594,596],{"class":595},"spNyl"," int\n",[36,598,599],{"class":38,"line":79},[36,600,120],{"emptyLinePlaceholder":119},[36,602,603,606],{"class":38,"line":116},[36,604,605],{"class":46},"const",[36,607,608],{"class":46}," (\n",[36,610,611,614,617,620],{"class":38,"line":123},[36,612,613],{"class":82},"    ColorSpaceRGB  ",[36,615,616],{"class":50},"ColorSpace",[36,618,619],{"class":46}," =",[36,621,622],{"class":46}," iota\n",[36,624,625],{"class":38,"line":129},[36,626,627],{"class":82},"    ColorSpaceGray\n",[36,629,630],{"class":38,"line":149},[36,631,632],{"class":82},"    ColorSpaceCMYK\n",[36,634,635],{"class":38,"line":168},[36,636,474],{"class":46},[62,638,640],{"id":639},"color-타입","Color 타입",[27,642,644],{"className":29,"code":643,"language":31,"meta":32,"style":32},"type Color struct {\n    R, G, B float64     // RGB components (0.0 – 1.0)\n    A       float64     // Alpha or K (for CMYK)\n    Space   ColorSpace\n}\n",[17,645,646,659,680,690,698],{"__ignoreMap":32},[36,647,648,650,653,656],{"class":38,"line":39},[36,649,589],{"class":46},[36,651,652],{"class":50}," Color",[36,654,655],{"class":46}," struct",[36,657,658],{"class":46}," {\n",[36,660,661,664,666,669,671,674,677],{"class":38,"line":79},[36,662,663],{"class":82},"    R",[36,665,99],{"class":46},[36,667,668],{"class":82}," G",[36,670,99],{"class":46},[36,672,673],{"class":82}," B ",[36,675,676],{"class":595},"float64",[36,678,679],{"class":75},"     // RGB components (0.0 – 1.0)\n",[36,681,682,685,687],{"class":38,"line":116},[36,683,684],{"class":82},"    A       ",[36,686,676],{"class":595},[36,688,689],{"class":75},"     // Alpha or K (for CMYK)\n",[36,691,692,695],{"class":38,"line":123},[36,693,694],{"class":82},"    Space   ",[36,696,697],{"class":50},"ColorSpace\n",[36,699,700],{"class":38,"line":129},[36,701,702],{"class":46},"}\n",[10,704,706],{"id":705},"writer-고급","Writer (고급)",[14,708,709],{},"PDF Writer는 저수준 PDF 객체 생성을 처리합니다. 대부분의 사용자는 이것을 직접 사용할 필요가 없습니다.",[27,711,713],{"className":29,"code":712,"language":31,"meta":32,"style":32},"type Writer struct {}\n\nfunc NewWriter(w io.Writer) *Writer\nfunc (pw *Writer) AllocObject() ObjectRef\nfunc (pw *Writer) WriteObject(ref ObjectRef, obj Object) error\nfunc (pw *Writer) RegisterFont(name string, data []byte) error\nfunc (pw *Writer) AddPage(page *PageContent) error\nfunc (pw *Writer) Close() error\nfunc (pw *Writer) SetDocumentInfo(info DocumentInfo)\n",[17,714,715,727,731,761,787,825,865,896,917],{"__ignoreMap":32},[36,716,717,719,722,724],{"class":38,"line":39},[36,718,589],{"class":46},[36,720,721],{"class":50}," Writer",[36,723,655],{"class":46},[36,725,726],{"class":46}," {}\n",[36,728,729],{"class":38,"line":79},[36,730,120],{"emptyLinePlaceholder":119},[36,732,733,736,739,741,745,748,750,753,755,758],{"class":38,"line":116},[36,734,735],{"class":46},"func",[36,737,738],{"class":88}," NewWriter",[36,740,92],{"class":46},[36,742,744],{"class":743},"sHdIc","w",[36,746,747],{"class":50}," io",[36,749,85],{"class":46},[36,751,752],{"class":50},"Writer",[36,754,110],{"class":46},[36,756,757],{"class":46}," *",[36,759,760],{"class":50},"Writer\n",[36,762,763,765,768,771,774,776,778,781,784],{"class":38,"line":123},[36,764,735],{"class":46},[36,766,767],{"class":46}," (",[36,769,770],{"class":743},"pw ",[36,772,773],{"class":46},"*",[36,775,752],{"class":50},[36,777,110],{"class":46},[36,779,780],{"class":88}," AllocObject",[36,782,783],{"class":46},"()",[36,785,786],{"class":50}," ObjectRef\n",[36,788,789,791,793,795,797,799,801,804,806,809,812,814,817,820,822],{"class":38,"line":129},[36,790,735],{"class":46},[36,792,767],{"class":46},[36,794,770],{"class":743},[36,796,773],{"class":46},[36,798,752],{"class":50},[36,800,110],{"class":46},[36,802,803],{"class":88}," WriteObject",[36,805,92],{"class":46},[36,807,808],{"class":743},"ref",[36,810,811],{"class":50}," ObjectRef",[36,813,99],{"class":46},[36,815,816],{"class":743}," obj",[36,818,819],{"class":50}," Object",[36,821,110],{"class":46},[36,823,824],{"class":595}," error\n",[36,826,827,829,831,833,835,837,839,842,844,847,850,852,855,858,861,863],{"class":38,"line":149},[36,828,735],{"class":46},[36,830,767],{"class":46},[36,832,770],{"class":743},[36,834,773],{"class":46},[36,836,752],{"class":50},[36,838,110],{"class":46},[36,840,841],{"class":88}," RegisterFont",[36,843,92],{"class":46},[36,845,846],{"class":743},"name",[36,848,849],{"class":595}," string",[36,851,99],{"class":46},[36,853,854],{"class":743}," data",[36,856,857],{"class":46}," []",[36,859,860],{"class":595},"byte",[36,862,110],{"class":46},[36,864,824],{"class":595},[36,866,867,869,871,873,875,877,879,882,884,887,889,892,894],{"class":38,"line":168},[36,868,735],{"class":46},[36,870,767],{"class":46},[36,872,770],{"class":743},[36,874,773],{"class":46},[36,876,752],{"class":50},[36,878,110],{"class":46},[36,880,881],{"class":88}," AddPage",[36,883,92],{"class":46},[36,885,886],{"class":743},"page",[36,888,757],{"class":46},[36,890,891],{"class":50},"PageContent",[36,893,110],{"class":46},[36,895,824],{"class":595},[36,897,898,900,902,904,906,908,910,913,915],{"class":38,"line":173},[36,899,735],{"class":46},[36,901,767],{"class":46},[36,903,770],{"class":743},[36,905,773],{"class":46},[36,907,752],{"class":50},[36,909,110],{"class":46},[36,911,912],{"class":88}," Close",[36,914,783],{"class":46},[36,916,824],{"class":595},[36,918,919,921,923,925,927,929,931,934,936,939,942],{"class":38,"line":179},[36,920,735],{"class":46},[36,922,767],{"class":46},[36,924,770],{"class":743},[36,926,773],{"class":46},[36,928,752],{"class":50},[36,930,110],{"class":46},[36,932,933],{"class":88}," SetDocumentInfo",[36,935,92],{"class":46},[36,937,938],{"class":743},"info",[36,940,941],{"class":50}," DocumentInfo",[36,943,474],{"class":46},[10,945,947],{"id":946},"pdf-객체-고급","PDF 객체 (고급)",[14,949,950],{},"저수준 PDF 객체 타입:",[27,952,954],{"className":29,"code":953,"language":31,"meta":32,"style":32},"// Scalar types\ntype Name string\ntype LiteralString string\ntype HexString string\ntype Integer int64\ntype Real float64\ntype Boolean bool\ntype Null struct{}\n\n// Composite types\ntype Dict map[string]Object\ntype Array []Object\n\n// Stream (content, images, fonts)\ntype Stream struct {\n    Data       []byte\n    Dictionary Dict\n}\n\n// Object reference\ntype ObjectRef struct {\n    Number     int\n    Generation int\n}\n",[17,955,956,961,971,980,989,999,1009,1019,1029,1033,1038,1057,1068,1072,1077,1089,1101,1110,1115,1120,1126,1137,1146,1154],{"__ignoreMap":32},[36,957,958],{"class":38,"line":39},[36,959,960],{"class":75},"// Scalar types\n",[36,962,963,965,968],{"class":38,"line":79},[36,964,589],{"class":46},[36,966,967],{"class":50}," Name",[36,969,970],{"class":595}," string\n",[36,972,973,975,978],{"class":38,"line":116},[36,974,589],{"class":46},[36,976,977],{"class":50}," LiteralString",[36,979,970],{"class":595},[36,981,982,984,987],{"class":38,"line":123},[36,983,589],{"class":46},[36,985,986],{"class":50}," HexString",[36,988,970],{"class":595},[36,990,991,993,996],{"class":38,"line":129},[36,992,589],{"class":46},[36,994,995],{"class":50}," Integer",[36,997,998],{"class":595}," int64\n",[36,1000,1001,1003,1006],{"class":38,"line":149},[36,1002,589],{"class":46},[36,1004,1005],{"class":50}," Real",[36,1007,1008],{"class":595}," float64\n",[36,1010,1011,1013,1016],{"class":38,"line":168},[36,1012,589],{"class":46},[36,1014,1015],{"class":50}," Boolean",[36,1017,1018],{"class":595}," bool\n",[36,1020,1021,1023,1026],{"class":38,"line":173},[36,1022,589],{"class":46},[36,1024,1025],{"class":50}," Null",[36,1027,1028],{"class":46}," struct{}\n",[36,1030,1031],{"class":38,"line":179},[36,1032,120],{"emptyLinePlaceholder":119},[36,1034,1035],{"class":38,"line":199},[36,1036,1037],{"class":75},"// Composite types\n",[36,1039,1040,1042,1045,1048,1051,1054],{"class":38,"line":218},[36,1041,589],{"class":46},[36,1043,1044],{"class":50}," Dict",[36,1046,1047],{"class":46}," map[",[36,1049,1050],{"class":595},"string",[36,1052,1053],{"class":46},"]",[36,1055,1056],{"class":50},"Object\n",[36,1058,1059,1061,1064,1066],{"class":38,"line":236},[36,1060,589],{"class":46},[36,1062,1063],{"class":50}," Array",[36,1065,857],{"class":46},[36,1067,1056],{"class":50},[36,1069,1070],{"class":38,"line":241},[36,1071,120],{"emptyLinePlaceholder":119},[36,1073,1074],{"class":38,"line":247},[36,1075,1076],{"class":75},"// Stream (content, images, fonts)\n",[36,1078,1080,1082,1085,1087],{"class":38,"line":1079},15,[36,1081,589],{"class":46},[36,1083,1084],{"class":50}," Stream",[36,1086,655],{"class":46},[36,1088,658],{"class":46},[36,1090,1092,1095,1098],{"class":38,"line":1091},16,[36,1093,1094],{"class":82},"    Data       ",[36,1096,1097],{"class":46},"[]",[36,1099,1100],{"class":595},"byte\n",[36,1102,1104,1107],{"class":38,"line":1103},17,[36,1105,1106],{"class":82},"    Dictionary ",[36,1108,1109],{"class":50},"Dict\n",[36,1111,1113],{"class":38,"line":1112},18,[36,1114,702],{"class":46},[36,1116,1118],{"class":38,"line":1117},19,[36,1119,120],{"emptyLinePlaceholder":119},[36,1121,1123],{"class":38,"line":1122},20,[36,1124,1125],{"class":75},"// Object reference\n",[36,1127,1129,1131,1133,1135],{"class":38,"line":1128},21,[36,1130,589],{"class":46},[36,1132,811],{"class":50},[36,1134,655],{"class":46},[36,1136,658],{"class":46},[36,1138,1140,1143],{"class":38,"line":1139},22,[36,1141,1142],{"class":82},"    Number     ",[36,1144,1145],{"class":595},"int\n",[36,1147,1149,1152],{"class":38,"line":1148},23,[36,1150,1151],{"class":82},"    Generation ",[36,1153,1145],{"class":595},[36,1155,1157],{"class":38,"line":1156},24,[36,1158,702],{"class":46},[10,1160,1162],{"id":1161},"폰트-패키지-고급","폰트 패키지 (고급)",[14,1164,1165,1168],{},[17,1166,1167],{},"pdf/font"," 서브 패키지는 TrueType 폰트 파싱 및 서브셋팅을 처리합니다:",[27,1170,1172],{"className":29,"code":1171,"language":31,"meta":32,"style":32},"import \"github.com/gpdf-dev/gpdf/pdf/font\"\n\n// Parse a TrueType font\nttf, err := font.ParseTrueType(data)\n\n// Get font name and metrics\nname := ttf.Name()\nmetrics := ttf.Metrics()  // Ascender, Descender, CapHeight, XHeight\n\n// Create a subset with only used glyphs\nsubset, err := ttf.Subset(runes)\n\n// Measure text width\nwidth := font.MeasureString(ttf, \"Hello\", 12.0)\n\n// Break text into lines\nlines := font.LineBreak(ttf, text, 12.0, maxWidth)\n",[17,1173,1174,1185,1189,1194,1222,1226,1231,1249,1268,1272,1277,1302,1306,1311,1345,1349,1354],{"__ignoreMap":32},[36,1175,1176,1178,1180,1183],{"class":38,"line":39},[36,1177,43],{"class":42},[36,1179,47],{"class":46},[36,1181,1182],{"class":50},"github.com/gpdf-dev/gpdf/pdf/font",[36,1184,54],{"class":46},[36,1186,1187],{"class":38,"line":79},[36,1188,120],{"emptyLinePlaceholder":119},[36,1190,1191],{"class":38,"line":116},[36,1192,1193],{"class":75},"// Parse a TrueType font\n",[36,1195,1196,1199,1201,1204,1207,1210,1212,1215,1217,1220],{"class":38,"line":123},[36,1197,1198],{"class":82},"ttf",[36,1200,99],{"class":46},[36,1202,1203],{"class":82}," err ",[36,1205,1206],{"class":46},":=",[36,1208,1209],{"class":82}," font",[36,1211,85],{"class":46},[36,1213,1214],{"class":88},"ParseTrueType",[36,1216,92],{"class":46},[36,1218,1219],{"class":82},"data",[36,1221,474],{"class":46},[36,1223,1224],{"class":38,"line":129},[36,1225,120],{"emptyLinePlaceholder":119},[36,1227,1228],{"class":38,"line":149},[36,1229,1230],{"class":75},"// Get font name and metrics\n",[36,1232,1233,1236,1238,1241,1243,1246],{"class":38,"line":168},[36,1234,1235],{"class":82},"name ",[36,1237,1206],{"class":46},[36,1239,1240],{"class":82}," ttf",[36,1242,85],{"class":46},[36,1244,1245],{"class":88},"Name",[36,1247,1248],{"class":46},"()\n",[36,1250,1251,1254,1256,1258,1260,1263,1265],{"class":38,"line":173},[36,1252,1253],{"class":82},"metrics ",[36,1255,1206],{"class":46},[36,1257,1240],{"class":82},[36,1259,85],{"class":46},[36,1261,1262],{"class":88},"Metrics",[36,1264,783],{"class":46},[36,1266,1267],{"class":75},"  // Ascender, Descender, CapHeight, XHeight\n",[36,1269,1270],{"class":38,"line":179},[36,1271,120],{"emptyLinePlaceholder":119},[36,1273,1274],{"class":38,"line":199},[36,1275,1276],{"class":75},"// Create a subset with only used glyphs\n",[36,1278,1279,1282,1284,1286,1288,1290,1292,1295,1297,1300],{"class":38,"line":218},[36,1280,1281],{"class":82},"subset",[36,1283,99],{"class":46},[36,1285,1203],{"class":82},[36,1287,1206],{"class":46},[36,1289,1240],{"class":82},[36,1291,85],{"class":46},[36,1293,1294],{"class":88},"Subset",[36,1296,92],{"class":46},[36,1298,1299],{"class":82},"runes",[36,1301,474],{"class":46},[36,1303,1304],{"class":38,"line":236},[36,1305,120],{"emptyLinePlaceholder":119},[36,1307,1308],{"class":38,"line":241},[36,1309,1310],{"class":75},"// Measure text width\n",[36,1312,1313,1316,1318,1320,1322,1325,1327,1329,1331,1333,1336,1338,1340,1343],{"class":38,"line":247},[36,1314,1315],{"class":82},"width ",[36,1317,1206],{"class":46},[36,1319,1209],{"class":82},[36,1321,85],{"class":46},[36,1323,1324],{"class":88},"MeasureString",[36,1326,92],{"class":46},[36,1328,1198],{"class":82},[36,1330,99],{"class":46},[36,1332,47],{"class":46},[36,1334,1335],{"class":421},"Hello",[36,1337,418],{"class":46},[36,1339,99],{"class":46},[36,1341,1342],{"class":95}," 12.0",[36,1344,474],{"class":46},[36,1346,1347],{"class":38,"line":1079},[36,1348,120],{"emptyLinePlaceholder":119},[36,1350,1351],{"class":38,"line":1091},[36,1352,1353],{"class":75},"// Break text into lines\n",[36,1355,1356,1359,1361,1363,1365,1368,1370,1372,1374,1377,1379,1381,1383,1386],{"class":38,"line":1103},[36,1357,1358],{"class":82},"lines ",[36,1360,1206],{"class":46},[36,1362,1209],{"class":82},[36,1364,85],{"class":46},[36,1366,1367],{"class":88},"LineBreak",[36,1369,92],{"class":46},[36,1371,1198],{"class":82},[36,1373,99],{"class":46},[36,1375,1376],{"class":82}," text",[36,1378,99],{"class":46},[36,1380,1342],{"class":95},[36,1382,99],{"class":46},[36,1384,1385],{"class":82}," maxWidth",[36,1387,474],{"class":46},[10,1389,1390],{"id":1390},"아키텍처",[27,1392,1397],{"className":1393,"code":1395,"language":1396},[1394],"language-text","Layer 3: template ─── Builder API, JSON Schema, Components\n    │\n    ▼\nLayer 2: document ─── Nodes, Box Model, Layout Engine\n    │\n    ▼\nLayer 1: pdf ──────── Writer, Streams, Fonts, Images\n    │\n    ▼\n          io.Writer (file, HTTP response, buffer...)\n","text",[17,1398,1395],{"__ignoreMap":32},[14,1400,1401],{},"각 레이어는 아래 레이어에만 의존합니다 — 위쪽으로는 절대 의존하지 않습니다.",[1403,1404,1405],"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 .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 .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 .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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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":32,"searchDepth":79,"depth":79,"links":1407},[1408,1409,1416,1417,1418,1419],{"id":12,"depth":79,"text":12},{"id":57,"depth":79,"text":57,"children":1410},[1411,1412,1413,1414,1415],{"id":64,"depth":116,"text":65},{"id":281,"depth":116,"text":282},{"id":386,"depth":116,"text":387},{"id":578,"depth":116,"text":579},{"id":639,"depth":116,"text":640},{"id":705,"depth":79,"text":706},{"id":946,"depth":79,"text":947},{"id":1161,"depth":79,"text":1162},{"id":1390,"depth":79,"text":1390},"저수준 PDF 생성 API 레퍼런스 (Layer 1)","md",{},"/ko/docs/api-reference/pdf",{"title":5,"description":1420},"ko/docs/3.api-reference/3.pdf","rhllITjOkHczItjqpZE7PIYi6cCA3UCIbOO2L1Pyv6I",1776529290359]