Documentation
¶
Overview ¶
Package webreader 包提供适合浏览器调用的 OFD 文档访问接口。
Index ¶
- func RegisterFallbackFont(source FontSource) error
- type AnnotationBoundary
- type AnnotationInfo
- type AttachmentInfo
- type Bookmark
- type CertificateDetail
- type DocumentInfo
- type DocumentStats
- type FontInfo
- type FontRef
- type FontResource
- type FontSource
- type FontUsage
- type FontUsageOptions
- type FontUsageReport
- type FontUsageSummary
- type Glyph
- type MediaInfo
- type OpenOptions
- type OutlineDest
- type OutlineNode
- type OutlineTree
- type PageInfo
- type PageLink
- type Reader
- func (r *Reader) Annotations() ([]AnnotationInfo, error)
- func (r *Reader) AttachmentData(scope int, id string, maxBytes int64) ([]byte, error)
- func (r *Reader) Attachments() ([]AttachmentInfo, error)
- func (r *Reader) Close() error
- func (r *Reader) FontList() ([]FontInfo, error)
- func (r *Reader) FontUsage(ref FontRef, options FontUsageOptions) (FontUsage, error)
- func (r *Reader) FontUsageAll(options FontUsageOptions) (FontUsageReport, error)
- func (r *Reader) Fonts() ([]FontResource, error)
- func (r *Reader) Info() (DocumentInfo, error)
- func (r *Reader) Media() ([]MediaInfo, error)
- func (r *Reader) MediaData(scope int, mediaID uint64, maxBytes int64) ([]byte, error)
- func (r *Reader) Outline() (OutlineTree, error)
- func (r *Reader) Page(index int) (PageInfo, error)
- func (r *Reader) PageCount() int
- func (r *Reader) PageLinks() ([]PageLink, error)
- func (r *Reader) Pages() ([]PageInfo, error)
- func (r *Reader) Preferences() (ViewPreferences, error)
- func (r *Reader) RemoveFallbackFont(family string) error
- func (r *Reader) RenderPDF(indices []int, options RenderOptions) (outputBytes []byte, err error)
- func (r *Reader) RenderPDFTo(output io.Writer, indices []int, options RenderOptions) (err error)
- func (r *Reader) RenderPage(index int, options RenderOptions) ([]byte, error)
- func (r *Reader) RenderPages(indices []int, options RenderOptions) ([][]byte, error)
- func (r *Reader) Search(query string) ([]SearchResult, error)
- func (r *Reader) SignatureCertificate(scope int, signatureID string, slot string) ([]byte, error)
- func (r *Reader) SignatureSeal(scope int, signatureID string, stampIndex int) ([]byte, string, error)
- func (r *Reader) SignatureValue(scope int, signatureID string) ([]byte, error)
- func (r *Reader) Signatures() ([]SignatureInfo, error)
- func (r *Reader) Stats() (DocumentStats, error)
- func (r *Reader) Text(index int) ([]TextRun, error)
- func (r *Reader) UseFallbackFont(family string) error
- type Rect
- type RenderFormat
- type RenderOptions
- type SearchResult
- type SignatureInfo
- type SignatureReference
- type SignatureStamp
- type TextRun
- type ViewPreferences
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RegisterFallbackFont ¶ added in v0.1.2
func RegisterFallbackFont(source FontSource) error
RegisterFallbackFont 在进程内全局注册回退字体,与具体 Reader 无关。 同一字体族只注册一次(幂等)且不复制字体数据;之后可通过 Reader.UseFallbackFont 应用到某个文档。
Types ¶
type AnnotationBoundary ¶ added in v0.1.3
AnnotationBoundary 是注解外观的边界框,单位为毫米。
type AnnotationInfo ¶ added in v0.1.3
type AnnotationInfo struct {
Scope int
// Page 是注解所在页面的全局索引。
Page int
// ID 是注解标识。
ID string
// Type 是注解类型,如 Link、Highlight、Stamp。
Type string
// Subtype 是注解子类型,未声明时为空。
Subtype string
// Creator 是创建注解的软件或用户,未声明时为空。
Creator string
// LastModDate 是最后修改日期(YYYY-MM-DD),未声明时为空。
LastModDate string
// Visible 表示注解是否可见,未声明时为 true。
Visible bool
// Remark 是注解备注,未声明时为空。
Remark string
// Boundary 是注解外观边界,未声明时为 nil。
Boundary *AnnotationBoundary
// URI 是链接注解的外部链接目标,非空时点击打开链接。
URI string
// TargetPage 是链接注解的跳转目标页全局索引,-1 表示没有页面目标。
TargetPage int
// Dest 是链接注解跳转目标的位置与缩放,nil 表示没有位置信息。
Dest *OutlineDest
}
AnnotationInfo 描述文档中的一个注解。
type AttachmentInfo ¶ added in v0.1.3
type AttachmentInfo struct {
// Scope 是附件所属文档体的索引。
Scope int
// ID 是附件 ID。
ID string
// Name 是附件名称。
Name string
// Format 是附件格式,未声明时为空。
Format string
// Size 是附件声明的字节数,HasSize 为 false 时表示未声明。
Size int64
HasSize bool
// ActualSize 是附件在包中的实际字节数,0 表示未知或文件不存在。
ActualSize int64
// Usage 是附件用途,未声明时为空。
Usage string
// Visible 表示附件是否可见,未声明时为 true。
Visible bool
// Exists 表示附件文件是否存在于包中。
Exists bool
}
AttachmentInfo 描述文档中的一个附件,只包含清单元数据。
type Bookmark ¶ added in v0.1.3
type Bookmark struct {
// Name 是书签名称。
Name string
// Page 是从 0 开始的目标页索引,-1 表示无法解析。
Page int
// Dest 是书签目标的位置与缩放。
Dest *OutlineDest
}
Bookmark 描述文档书签(命名目标)。
type CertificateDetail ¶ added in v0.1.3
type CertificateDetail struct {
// Slot 是所属层级:印章或外层。
Slot string
// SlotKey 是层级的机器可读标识:seal 或 outer,用于导出证书。
SlotKey string
// Subject、Issuer 是证书主体与签发者。
Subject string
Issuer string
// CommonName、Organization、OrganizationalUnit、Country、Locality、Province 是证书主体字段。
CommonName string
Organization string
OrganizationalUnit string
Country string
Locality string
Province string
// SerialNumber 是证书序列号。
SerialNumber string
// NotBefore、NotAfter 是证书有效期(RFC3339)。
NotBefore string
NotAfter string
// PublicKey 是公钥算法名称。
PublicKey string
// Algorithm、SignatureFormat 是签名算法与编码格式。
Algorithm string
SignatureFormat string
// SignatureValid 表示该层签名通过公钥验证。
SignatureValid bool
// CertificateValid 表示证书在签名时间点有效。
CertificateValid bool
// TrustChecked、Trusted、TrustError 是证书链校验结果。
TrustChecked bool
Trusted bool
TrustError string
// RevocationChecked、RevocationStatus、RevocationError 是吊销校验结果。
RevocationChecked bool
RevocationStatus string
RevocationError string
// Error 是验证失败原因。
Error string
}
CertificateDetail 描述签名某一层(印章/外层)的证书与验证明细。
type DocumentInfo ¶ added in v0.1.1
type DocumentInfo struct {
DocID string
Title string
Author string
Subject string
Abstract string
CreationDate string
ModDate string
Creator string
Version string
}
DocumentInfo 描述 OFD 文档的元数据信息。
type DocumentStats ¶ added in v0.1.3
type DocumentStats struct {
// Fonts 是声明字体的数量。
Fonts int
// Attachments 是附件数量。
Attachments int
// Media 是多媒资资源数量。
Media int
// AnnotationPages 是声明了注解的页面数量。
AnnotationPages int
// Signatures 是签名数量。
Signatures int
}
DocumentStats 汇总文档声明的资源数量(不读取资源内容)。
type FontInfo ¶ added in v0.1.3
type FontInfo struct {
// ID 是字体在所属文档内的标识。
ID uint64
// Scope 是字体所属文档体的索引,与 ID 一起唯一标识一个字体。
Scope int
// Name 是 OFD 声明的字体名称(FontName)。
Name string
// Family 是字体族名称(FamilyName),可能为空。
Family string
// Bold、Italic 表示字体声明为粗体或斜体。
Bold bool
Italic bool
// Serif 表示衬线字体,FixedWidth 表示等宽字体。
Serif bool
FixedWidth bool
// Format 是嵌入字体文件的格式(如 ttf、otf),无嵌入时为空。
Format string
// Embedded 表示文档是否内嵌了字体文件。
Embedded bool
}
FontInfo 描述文档声明的一个字体,不包含嵌入字体数据。
type FontResource ¶
type FontResource struct {
ID uint64
Family string
Name string
Bold bool
Italic bool
Format string
Data []byte
}
FontResource 描述文档中可注入浏览器的嵌入字体。 Data 为空表示该字体只声明了名称,没有嵌入字体文件。
type FontSource ¶
FontSource 是由调用方提供给 WASM 渲染器的字体文件。 浏览器无法读取本机系统字体文件,因此无内嵌字体时应传入可访问的 TTF/OTF Web Font 数据,例如 Google Fonts 的 Noto Sans SC。
type FontUsage ¶ added in v0.1.3
type FontUsage struct {
// Pages 是使用该字体的页面索引,升序排列。
Pages []int
// Scanned 是实际扫描的页数。
Scanned int
// Truncated 表示因达到扫描页数或结果数量上限而提前结束,结果可能不完整。
Truncated bool
}
FontUsage 描述某个字体在文档文字中的使用情况。 为避免超大文档长时间扫描,统计页数和结果数量由 FontUsageOptions 限制。
type FontUsageOptions ¶ added in v0.1.3
type FontUsageOptions struct {
// MaxScan 是最多扫描的页数,0 使用默认值 maxFontUsageScan,上限为 maxFontUsageScanHard。
MaxScan int
// MaxPages 是每个字体最多返回的页面数,0 使用默认值 maxFontUsagePages,上限为 maxFontUsagePagesHard。
MaxPages int
}
FontUsageOptions 控制按字体统计使用页面时的扫描上限,零值使用默认值。
type FontUsageReport ¶ added in v0.1.3
type FontUsageReport struct {
// Fonts 按字体 ID 升序排列。
Fonts []FontUsageSummary
// Scanned 是实际扫描的页数。
Scanned int
// Truncated 表示因扫描页数或单个字体结果数量上限而可能不完整。
Truncated bool
}
FontUsageReport 是一次批量字体使用统计的结果。
type FontUsageSummary ¶ added in v0.1.3
type FontUsageSummary struct {
// Scope 是字体所属文档体的索引。
Scope int
// ID 是字体在所属文档内的标识。
ID uint64
// Pages 是使用该字体的页面索引,升序排列,最多 maxFontUsagePages 个。
Pages []int
}
FontUsageSummary 描述一个字体在文档中的使用页面。
type MediaInfo ¶ added in v0.1.3
type MediaInfo struct {
// Scope 是资源所属文档体的索引。
Scope int
// ID 是多媒体资源标识。
ID uint64
// Name 是资源文件名,未解析时为空。
Name string
// Type 是多媒体类型,通常为 Image、Audio 或 Video。
Type string
// Format 是多媒体格式,未声明时为空。
Format string
// Size 是资源在包中的实际字节数,0 表示未知或文件不存在。
Size int64
// Exists 表示资源文件是否存在于包中。
Exists bool
}
MediaInfo 描述文档中的一个多媒体资源(图片/音频/视频),只包含清单元数据。
type OpenOptions ¶
type OpenOptions struct {
// PageCacheCapacity 是页面缓存最多保留的页面数量,0 表示使用默认值。
PageCacheCapacity int
// PageCacheBytes 是页面缓存允许使用的估算最大字节数,0 表示使用默认值。
PageCacheBytes int64
}
OpenOptions 配置 OFD 打开行为。
type OutlineDest ¶ added in v0.1.3
type OutlineDest struct {
// Type 是目标类型,如 XYZ、Fit、FitH、FitV、FitR。
Type string
// Left、Top、Right、Bottom 是目标视图的边界。
Left *float64
Top *float64
Right *float64
Bottom *float64
// Zoom 是目标缩放比例。
Zoom *float64
}
OutlineDest 描述跳转目标的位置与缩放,单位与 OFD 页面坐标一致(毫米)。 字段为 nil 表示文档未指定该值。
type OutlineNode ¶ added in v0.1.3
type OutlineNode struct {
// Title 是大纲项标题。
Title string
// Page 是从 0 开始的目标页索引,-1 表示没有可跳转目标。
Page int
// URI 是外部链接目标,非空时点击打开链接。
URI string
// Dest 是页面跳转目标的位置与缩放,nil 表示没有位置信息。
Dest *OutlineDest
// Expanded 是文档声明的是否默认展开子项,nil 表示未声明。
Expanded *bool
// Children 是子大纲项。
Children []OutlineNode
}
OutlineNode 描述文档大纲中的一个节点。
type OutlineTree ¶ added in v0.1.3
type OutlineTree struct {
// PageMode 是文档声明的页面显示模式,例如 UseOutlines;为空表示未声明。
PageMode string
// Nodes 是顶层大纲项。
Nodes []OutlineNode
// Bookmarks 是文档书签列表。
Bookmarks []Bookmark
}
OutlineTree 描述文档大纲、书签以及文档声明的打开显示模式。
type PageLink ¶ added in v0.1.3
type PageLink struct {
// Scope 是链接所属文档体的索引。
Scope int
// Page 是链接所在页面的全局索引。
Page int
// ID 是承载链接的图元标识,未声明时为空。
ID string
// Boundary 是图元边界(毫米)。
Boundary AnnotationBoundary
// URI 是外部链接目标,非空时点击打开链接。
URI string
// TargetPage 是跳转目标页全局索引,-1 表示没有页面目标。
TargetPage int
// Dest 是跳转目标的位置与缩放,nil 表示没有位置信息。
Dest *OutlineDest
}
PageLink 描述页面正文图元上的可点击链接。与 AnnotationInfo 中的 Link 注解 不同,这类链接直接挂在页面内容(图层)的文字、路径、图像或复合图元上。
type Reader ¶
type Reader struct {
// contains filtered or unexported fields
}
Reader 是一个已打开的 OFD 文档。 Reader 负责持有文档资源,使用完毕后必须调用 Close。
func OpenWithOptions ¶
func OpenWithOptions(data []byte, options OpenOptions) (*Reader, error)
OpenWithOptions 从内存中的 OFD 数据创建浏览器文档引擎。
func (*Reader) Annotations ¶ added in v0.1.3
func (r *Reader) Annotations() ([]AnnotationInfo, error)
Annotations 返回所有页面中的注解,按页面顺序排列。
func (*Reader) AttachmentData ¶ added in v0.1.3
AttachmentData 读取指定附件的二进制内容。maxBytes 为 0 时使用默认上限, 超过 maxAttachmentBytesHard 时按硬上限处理。
func (*Reader) Attachments ¶ added in v0.1.3
func (r *Reader) Attachments() ([]AttachmentInfo, error)
Attachments 返回所有文档体的附件清单(只读元数据,不读取附件内容)。
func (*Reader) FontUsage ¶ added in v0.1.3
func (r *Reader) FontUsage(ref FontRef, options FontUsageOptions) (FontUsage, error)
FontUsage 返回使用指定字体的页面。为避免超大文档长时间扫描,扫描页数和 结果数量由 options 限制;Truncated 表示结果可能不完整。
func (*Reader) FontUsageAll ¶ added in v0.1.3
func (r *Reader) FontUsageAll(options FontUsageOptions) (FontUsageReport, error)
FontUsageAll 一次扫描统计所有字体的使用页面,供字体列表批量展示。 扫描页数和单个字体的结果数量由 options 限制。
func (*Reader) Fonts ¶
func (r *Reader) Fonts() ([]FontResource, error)
Fonts 返回文档中声明的字体资源。只有包含 FontFile 的字体会带有 Data, 调用方可以将这些数据交给浏览器 FontFace 构造器进行注入。
func (*Reader) Info ¶ added in v0.1.1
func (r *Reader) Info() (DocumentInfo, error)
Info 返回 OFD 文档的元数据信息。
func (*Reader) MediaData ¶ added in v0.1.3
MediaData 读取指定多媒体资源的二进制内容。maxBytes 为 0 时使用默认上限, 超过 maxAttachmentBytesHard 时按硬上限处理。
func (*Reader) Outline ¶ added in v0.1.3
func (r *Reader) Outline() (OutlineTree, error)
Outline 返回文档大纲树、书签列表以及文档声明的显示模式。 跳转目标按全局页索引解析(跨文档体累加),无法解析的目标为 -1。 没有大纲或书签时返回空切片。
func (*Reader) Preferences ¶ added in v0.1.3
func (r *Reader) Preferences() (ViewPreferences, error)
Preferences 返回文档声明的阅读器显示偏好(取第一个声明了偏好的文档体)。 没有声明时返回零值。
func (*Reader) RemoveFallbackFont ¶ added in v0.1.3
RemoveFallbackFont 取消当前文档先前通过 UseFallbackFont 登记的回退字体族, 使缺失字体恢复为内嵌或默认字体。全局字体注册表不回滚,但本 Reader 已解析的 文档与文字/搜索缓存会失效,以便下次渲染使用默认字体。
func (*Reader) RenderPDF ¶
func (r *Reader) RenderPDF(indices []int, options RenderOptions) (outputBytes []byte, err error)
RenderPDF 将多个页面按传入顺序写入一个保留文字和矢量内容的 PDF 文档。 该接口会把完整 PDF 保存在内存中,需要导出大量页面时应使用 RenderPDFTo。
func (*Reader) RenderPDFTo ¶ added in v0.1.2
RenderPDFTo 将多个页面按传入顺序写入 output,保留文字和矢量内容。 output 会在 PDF 生成过程中接收数据,适合流式保存大 PDF,因此不限制页数。
func (*Reader) RenderPage ¶
func (r *Reader) RenderPage(index int, options RenderOptions) ([]byte, error)
RenderPage 将指定页面渲染为 PNG、JPG 或 SVG 数据。
func (*Reader) RenderPages ¶
func (r *Reader) RenderPages(indices []int, options RenderOptions) ([][]byte, error)
RenderPages 将多个页面按传入顺序渲染为 PNG、JPG 或 SVG 数据。 所有页面共享一次 Reader 锁和同一份文档状态;渲染本身仍按顺序执行。
func (*Reader) Search ¶
func (r *Reader) Search(query string) ([]SearchResult, error)
Search 在所有页面的文字对象中查找 query,匹配不区分大小写。
func (*Reader) SignatureCertificate ¶ added in v0.1.3
SignatureCertificate 返回指定签名某一层(seal/outer)证书的 DER 内容。
func (*Reader) SignatureSeal ¶ added in v0.1.3
func (r *Reader) SignatureSeal(scope int, signatureID string, stampIndex int) ([]byte, string, error)
SignatureSeal 返回指定签名第 stampIndex 个签章的印章文件内容与类型。
func (*Reader) SignatureValue ¶ added in v0.1.3
SignatureValue 返回指定签名的签名值(SignedValue.dat)内容。
func (*Reader) Signatures ¶ added in v0.1.3
func (r *Reader) Signatures() ([]SignatureInfo, error)
Signatures 返回所有文档体的签名及其摘要/验签结果。
func (*Reader) Stats ¶ added in v0.1.3
func (r *Reader) Stats() (DocumentStats, error)
Stats 汇总文档声明的资源数量,只读取声明,不加载资源内容。
func (*Reader) UseFallbackFont ¶ added in v0.1.2
UseFallbackFont 使当前文档缺失字体时使用已全局注册的回退字体族。 该字体族必须先通过 RegisterFallbackFont 注册。文字和搜索快照会失效, 因为它们的字形度量可能使用了不同的回退字体。
type RenderFormat ¶ added in v0.1.1
type RenderFormat string
RenderFormat 是页面输出格式。
const ( // RenderPNG 输出 PNG 位图。为空时也使用该格式。 RenderPNG RenderFormat = "png" // RenderSVG 输出 SVG 矢量文档。 RenderSVG RenderFormat = "svg" // RenderJPG 输出 JPG 位图。JPG 不支持透明度,透明区域使用白色填充。 RenderJPG RenderFormat = "jpg" )
type RenderOptions ¶
type RenderOptions struct {
DPI float64
Background color.Color
Format RenderFormat
}
RenderOptions 控制页面输出。DPI 控制 PNG、JPG 以及 PDF 中复杂效果的内部栅格化分辨率; PDF 页面主体保留文字和矢量内容,SVG 复杂渐变等仍可能包含栅格回退。
type SearchResult ¶
SearchResult 描述一个页面文字命中。
type SignatureInfo ¶ added in v0.1.3
type SignatureInfo struct {
// Scope 是签名所属文档体的索引。
Scope int
// ID 是签名标识。
ID string
// Provider、Company、Version 是签名提供者信息。
Provider string
Company string
Version string
// Method 是签名算法标识(通常是 OID),未声明时为空。
Method string
// Date 是签名时间,保留原始文本。
Date string
// HasDigest、DigestValid 和 DigestMethod 是摘要校验结果。
HasDigest bool
DigestValid bool
DigestMethod string
// HasVerification、Verified、Trusted、TrustChecked 是验签结果。
HasVerification bool
Verified bool
Trusted bool
TrustChecked bool
// VerificationError 是验签错误信息,无错误时为空。
VerificationError string
// Stamps 是签名关联的签章位置。
Stamps []SignatureStamp
// Certificates 是印章与外层两层的证书与验证明细。
Certificates []CertificateDetail
// References 是签名覆盖的文件引用及逐项摘要校验结果。
References []SignatureReference
// HasDataHash、DataHashMatch 是签名数据摘要(Signature.xml)校验结果。
HasDataHash bool
DataHashMatch bool
}
SignatureInfo 描述文档中的一个签名及其校验结果。
type SignatureReference ¶ added in v0.1.3
type SignatureReference struct {
// FileRef 是签名中声明的文件引用路径。
FileRef string
// Exists 表示引用的文件是否存在于包中。
Exists bool
// Match 表示摘要是否一致。
Match bool
// Error 是校验失败原因。
Error string
}
SignatureReference 描述签名覆盖的一个文件引用及其摘要校验结果。
type SignatureStamp ¶ added in v0.1.3
type SignatureStamp struct {
// Page 是签章所在页面的全局索引,-1 表示无法解析。
Page int
// ID 是签章标识。
ID string
// Boundary 是签章边界(毫米),未声明时为 nil。
Boundary *AnnotationBoundary
// HasSeal 表示是否提取到印章数据。
HasSeal bool
// SealType 是印章文件类型(如 png、jpg、ofd),无印章时为空。
SealType string
}
SignatureStamp 描述签名关联的一个签章位置。
type TextRun ¶
type TextRun struct {
Text string
X float64
Y float64
Width float64
Height float64
// Scope 是文字所属文档体的索引,与 Font 一起唯一标识使用的字体。
Scope int
Font uint64
Size float64
Weight int
ReadDirection int
CharDirection int
FontFamily string
Bold bool
Italic bool
Glyphs []Glyph
}
TextRun 描述页面中的一个文字对象。坐标和尺寸单位为毫米。 X/Y 是网页覆盖层使用的左上角坐标,不是 TextCode 的基线坐标。
type ViewPreferences ¶ added in v0.1.3
type ViewPreferences struct {
// PageLayout 是文档声明的页面布局方式,如 OneColumn、TwoPageL、TwoPageR。
PageLayout string
// ZoomMode 是文档声明的缩放模式,如 FitWidth、FitHeight、FitRect。
ZoomMode string
// Zoom 是文档声明的自定义缩放比例。
Zoom *float64
}
ViewPreferences 描述文档声明的阅读器显示偏好。