06 页面设置 - ZeroHawkeye/wordZero GitHub Wiki
页面设置
WordZero 提供了完整的页面设置功能,包括页面尺寸、方向、边距、页眉页脚等。本章将详细介绍如何配置文档的页面属性。
📄 页面基础设置
页面尺寸和方向
package main
import (
"github.com/ZeroHawkeye/wordZero/pkg/document"
)
func main() {
doc := document.New()
// 设置A4纸张,纵向
doc.SetPageSize(document.PageSizeA4)
doc.SetPageOrientation(document.OrientationPortrait)
// 设置页面边距(单位:磅)
doc.SetPageMargins(72, 72, 72, 72) // 上、右、下、左各1英寸
// 添加内容
doc.AddParagraph("这是一个设置了页面属性的文档")
doc.Save("page_settings_demo.docx")
}
支持的页面尺寸
WordZero 支持多种标准页面尺寸:
页面尺寸 | 常量 | 尺寸 |
---|---|---|
A4 | document.PageSizeA4 |
210mm × 297mm |
A3 | document.PageSizeA3 |
297mm × 420mm |
A5 | document.PageSizeA5 |
148mm × 210mm |
Letter | document.PageSizeLetter |
8.5" × 11" |
Legal | document.PageSizeLegal |
8.5" × 14" |
自定义 | document.PageSizeCustom |
用户定义 |
页面方向
// 纵向(默认)
doc.SetPageOrientation(document.OrientationPortrait)
// 横向
doc.SetPageOrientation(document.OrientationLandscape)
📏 页面边距设置
基础边距设置
// 设置统一边距(1英寸 = 72磅)
doc.SetPageMargins(72, 72, 72, 72) // 上、右、下、左
// 设置不同边距
doc.SetPageMargins(
90, // 上边距 1.25英寸
72, // 右边距 1英寸
72, // 下边距 1英寸
108, // 左边距 1.5英寸
)
高级边距设置
// 设置详细边距,包括页眉页脚距离
err := doc.SetDetailedPageMargins(&document.DetailedMargins{
Top: 90, // 上边距
Right: 72, // 右边距
Bottom: 72, // 下边距
Left: 108, // 左边距
Header: 36, // 页眉距离页面顶部
Footer: 36, // 页脚距离页面底部
Gutter: 0, // 装订线宽度
})
if err != nil {
log.Printf("设置边距失败: %v", err)
}
📃 页眉和页脚
添加页眉
// 添加简单页眉
err := doc.AddHeader(document.HeaderFooterTypeDefault, "文档标题 - WordZero演示")
if err != nil {
log.Printf("添加页眉失败: %v", err)
}
// 添加带页码的页眉
err = doc.AddHeaderWithPageNumber(document.HeaderFooterTypeDefault, "公司名称 - 内部文档", true)
if err != nil {
log.Printf("添加页眉失败: %v", err)
}
添加页脚
// 添加页脚
err := doc.AddFooter(document.HeaderFooterTypeDefault, "© 2024 WordZero. All rights reserved.")
if err != nil {
log.Printf("添加页脚失败: %v", err)
}
// 添加带页码的页脚
err = doc.AddFooterWithPageNumber(document.HeaderFooterTypeDefault, "第", true)
if err != nil {
log.Printf("添加带页码的页脚失败: %v", err)
}
首页不同的页眉页脚
// 设置首页使用不同的页眉页脚
doc.SetDifferentFirstPage(true)
// 首页页眉
err := doc.AddHeader(document.HeaderFooterTypeFirst, "首页专用页眉")
if err != nil {
log.Printf("添加首页页眉失败: %v", err)
}
// 首页页脚
err = doc.AddFooter(document.HeaderFooterTypeFirst, "首页专用页脚")
if err != nil {
log.Printf("添加首页页脚失败: %v", err)
}
📖 分栏设置
设置分栏
// 设置两栏
doc.SetColumns(2)
// 设置三栏
doc.SetColumns(3)
// 设置自定义栏宽和间距
err := doc.SetCustomColumns(&document.ColumnSettings{
Count: 2,
Spacing: 720, // 栏间距(缇)
Equal: true, // 等宽栏
})
if err != nil {
log.Printf("设置分栏失败: %v", err)
}
🔢 页码设置
基础页码
// 设置页码起始数字
doc.SetPageNumberStart(1)
// 设置页码格式
doc.SetPageNumberFormat(document.PageNumFormatDecimal) // 1, 2, 3...
// 其他页码格式
doc.SetPageNumberFormat(document.PageNumFormatRoman) // I, II, III...
doc.SetPageNumberFormat(document.PageNumFormatRomanLower) // i, ii, iii...
doc.SetPageNumberFormat(document.PageNumFormatLetter) // A, B, C...
doc.SetPageNumberFormat(document.PageNumFormatLetterLower) // a, b, c...
在文档中插入页码
// 注意:以下方法在最新版本中已移除
// 现在应该使用 AddHeaderWithPageNumber 或 AddFooterWithPageNumber 方法
/*
// 在段落中插入页码
para := doc.AddParagraph("当前页码:")
para.AddPageNumber()
para.AddFormattedText(" / ", nil)
para.AddTotalPages() // 总页数
*/
// 新方法:使用带页码的页眉或页脚
err := doc.AddFooterWithPageNumber(document.HeaderFooterTypeDefault, "第", true)
if err != nil {
log.Printf("添加带页码的页脚失败: %v", err)
}
📋 完整页面设置示例
package main
import (
"fmt"
"log"
"github.com/ZeroHawkeye/wordZero/pkg/document"
"github.com/ZeroHawkeye/wordZero/pkg/style"
)
func main() {
// 创建文档
doc := document.New()
fmt.Println("设置页面属性...")
// 1. 基础页面设置
doc.SetPageSize(document.PageSizeA4)
doc.SetPageOrientation(document.OrientationPortrait)
// 2. 设置页面边距(上、右、下、左)
doc.SetPageMargins(90, 72, 72, 108) // 稍大的上边距和左边距
// 3. 设置首页不同
doc.SetDifferentFirstPage(true)
// 4. 添加首页页眉(空白)
err := doc.AddHeader(document.HeaderFooterTypeFirst, "")
if err != nil {
log.Printf("添加首页页眉失败: %v", err)
}
// 5. 添加首页页脚
err = doc.AddFooter(document.HeaderFooterTypeFirst, "WordZero 页面设置演示文档")
if err != nil {
log.Printf("添加首页页脚失败: %v", err)
}
// 6. 添加普通页面页眉
err = doc.AddHeaderWithPageNumber(document.HeaderFooterTypeDefault, "WordZero使用指南 - 页面设置", false)
if err != nil {
log.Printf("添加页眉失败: %v", err)
}
// 7. 添加普通页面页脚
err = doc.AddFooterWithPageNumber(document.HeaderFooterTypeDefault, "© 2024 WordZero项目组", true)
if err != nil {
log.Printf("添加页脚失败: %v", err)
}
// 8. 设置页码起始和格式
doc.SetPageNumberStart(1)
doc.SetPageNumberFormat(document.PageNumFormatDecimal)
// 9. 添加文档内容
// 首页内容
title := doc.AddParagraph("WordZero 页面设置指南")
title.SetStyle(style.StyleTitle)
subtitle := doc.AddParagraph("完整的页面配置演示")
subtitle.SetStyle(style.StyleSubtitle)
// 添加一些内容段落
intro := doc.AddParagraph("本文档演示了WordZero的完整页面设置功能,包括页面尺寸、边距、页眉页脚等。")
intro.SetStyle(style.StyleNormal)
// 添加章节
chapter1 := doc.AddParagraph("第一章 页面基础设置")
chapter1.SetStyle(style.StyleHeading1)
content1 := doc.AddParagraph("页面设置是文档格式化的基础,正确的页面设置能够提升文档的专业性和可读性。")
content1.SetStyle(style.StyleNormal)
section1 := doc.AddParagraph("1.1 页面尺寸")
section1.SetStyle(style.StyleHeading2)
content2 := doc.AddParagraph("WordZero支持多种标准页面尺寸,包括A4、A3、A5、Letter、Legal等。")
content2.SetStyle(style.StyleNormal)
section2 := doc.AddParagraph("1.2 页面方向")
section2.SetStyle(style.StyleHeading2)
content3 := doc.AddParagraph("支持纵向和横向两种页面方向,适应不同的文档需求。")
content3.SetStyle(style.StyleNormal)
// 添加分页,演示页眉页脚
// doc.AddPageBreak()
chapter2 := doc.AddParagraph("第二章 页眉页脚设置")
chapter2.SetStyle(style.StyleHeading1)
content4 := doc.AddParagraph("页眉页脚是文档的重要组成部分,可以包含标题、页码、版权信息等。")
content4.SetStyle(style.StyleNormal)
// 再添加一页内容
// doc.AddPageBreak()
chapter3 := doc.AddParagraph("第三章 边距和分栏")
chapter3.SetStyle(style.StyleHeading1)
content5 := doc.AddParagraph("合理的边距设置能够提供舒适的阅读体验,分栏功能适用于报刊类文档。")
content5.SetStyle(style.StyleNormal)
// 10. 保存文档
err := doc.Save("complete_page_settings_demo.docx")
if err != nil {
log.Fatalf("保存文档失败: %v", err)
}
fmt.Println("✅ 页面设置演示文档创建完成!")
fmt.Println("文档包含:")
fmt.Println("- A4纸张,纵向")
fmt.Println("- 自定义边距")
fmt.Println("- 首页不同的页眉页脚")
fmt.Println("- 普通页面的页眉页脚")
fmt.Println("- 页码显示")
fmt.Println("- 多页内容演示")
}
📐 单位换算参考
页面设置中常用的单位换算:
单位 | 换算 | 说明 |
---|---|---|
英寸 | 1" = 72磅 = 1440缇 | 常用于边距设置 |
厘米 | 1cm ≈ 28.35磅 ≈ 567缇 | 公制单位 |
毫米 | 1mm ≈ 2.84磅 ≈ 56.7缇 | 精确测量 |
磅 | 1磅 = 20缇 | 字体和间距 |
常用边距设置:
- 1英寸边距:72磅
- 2cm边距:约57磅
- 25mm边距:约71磅
💡 页面设置最佳实践
1. 标准页面设置
// ✅ 推荐:使用标准设置
doc.SetPageSize(document.PageSizeA4)
doc.SetPageOrientation(document.OrientationPortrait)
doc.SetPageMargins(72, 72, 72, 72) // 1英寸边距
2. 页眉页脚一致性
// ✅ 保持页眉页脚简洁统一
err := doc.AddHeader(document.HeaderFooterTypeDefault, "文档标题")
if err != nil {
log.Printf("添加页眉失败: %v", err)
}
3. 合理的页码设置
// ✅ 在页脚居中显示页码
err := doc.AddFooterWithPageNumber(document.HeaderFooterTypeDefault, "", true)
if err != nil {
log.Printf("添加页脚失败: %v", err)
}
⚠️ 注意事项
- 页面尺寸: 选择合适的页面尺寸,考虑打印和显示需求
- 边距设置: 确保边距足够,避免内容被截断
- 页眉页脚: 保持简洁,不要占用过多空间
- 分栏使用: 谨慎使用分栏,注意内容的可读性
常见问题
页眉页脚不显示
- 检查边距设置是否合理
- 确认页眉页脚距离设置
- 验证内容是否添加正确
页码错乱
- 确认页码起始设置
- 检查分节符的使用
- 验证页码格式设置
下一步
掌握页面设置后,您可以继续学习:
合理的页面设置是专业文档的基础,正确配置页面属性能大大提升文档的整体效果!