feat(打印能力): 新增打印并优化界面布局
build.yaml / build (push) Successful in 46s

This commit is contained in:
xiaoqidun committed 2026-10-24 20:53:46 +08:00
1 parent 799041171b
commit 0ae9ad6562
22 files changed
+2220 -21

No files matched your search

+16 -8
View File
@@ -138,9 +138,13 @@ func (CanvasBackend) RenderPDF(r *Renderer, pages []RenderDocumentPage, writer i
return fmt.Errorf("no pages found")
}
doc := r.Reader.doc
navigation, err := newPDFNavigation(r, doc, pages)
if err != nil {
return err
navigation := &pdfNavigation{}
if !r.printing {
var err error
navigation, err = newPDFNavigation(r, doc, pages)
if err != nil {
return err
}
}
buf, direct := writer.(*bytes.Buffer)
if r.Compression.Mode != CompressionUnchanged {
@@ -182,16 +186,20 @@ func (CanvasBackend) RenderPDF(r *Renderer, pages []RenderDocumentPage, writer i
buf.Truncate(start)
return fmt.Errorf("failed to read page %d: %w", i+1, err)
}
if err := navigation.addPage(r, i, content, pages); err != nil {
buf.Truncate(start)
return fmt.Errorf("failed to read page %d navigation: %w", i+1, err)
if !r.printing {
if err := navigation.addPage(r, i, content, pages); err != nil {
buf.Truncate(start)
return fmt.Errorf("failed to read page %d navigation: %w", i+1, err)
}
}
if i > 0 {
p.NewPage(page.Box.W, page.Box.H)
renderer.images = append(renderer.images, nil)
renderer.text = append(renderer.text, codecpdf.TextPage{})
}
navigation.apply(p, i)
if !r.printing {
navigation.apply(p, i)
}
if err := r.renderCanvasPageToContext(canvas.NewContext(renderer), content, !r.TransparentBackground); err != nil {
buf.Truncate(start)
return fmt.Errorf("failed to render page %d: %w", i+1, err)
@@ -216,7 +224,7 @@ func (CanvasBackend) RenderPDF(r *Renderer, pages []RenderDocumentPage, writer i
return err
}
}
if doc != nil {
if doc != nil && !r.printing {
if err := navigation.addOutlines(doc.Outlines.OutlineElem, 0, navigation.bookmarks, navigation.pageIndex, pages); err != nil {
buf.Truncate(start)
return err