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