소개
Aspose.PDF FOSS for Go는 이제 PDF 문서를 HTML으로 내보내고, 페이지 트리에서 선택적 콘텐츠 레이어를 노출하며, Tagged PDF(접근성) 문서를 작성하기 위한 인터페이스를 제공합니다. 이러한 추가 기능은 Document, Page, Form 타입을 문서 관리 기능으로 확장하여 기본 열기/저장 워크플로를 넘어섭니다: PDF를 자체 포함된 HTML 페이지로 변환하고, 레이어드 콘텐츠의 가시성을 전환하며, PDF/UA 준수를 위한 논리 구조에 마크업을 추가하고, AcroForm 필드 데이터를 JSON로 교환합니다.
이 라이브러리는 Go 모듈이며, github.com/aspose-pdf-foss/aspose-pdf-foss-for-go이고, MIT 라이선스 하에 배포되며 네이티브 C 또는 C++ 의존성이 없습니다.
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go이 게시물에서는 새로운 HTML 내보내기 모드, 선택적 콘텐츠(레이어) 처리, 태그된 콘텐츠 작성, 그리고 양식 JSON 내보내기/가져오기를 살펴봅니다 — 모두 현재 API 표면을 기반으로 합니다.
핵심 기능
PDF를 HTML로 내보내기
Document.SaveHTML와 Document.WriteHTML은 로드된 PDF를 HTML(으)로 변환하며, HTMLSaveOptions.Mode에 의해 제어됩니다 (HTMLModeText은 글리프가 없는 래스터 배경 위에 보이고 선택 가능한 텍스트 레이어를 위해; HTMLModeNative는 인라인 SVG 벡터 레이어를 위해; HTMLModeFlow는 재흐름 가능한 HTML을 위해). 대화형 AcroForm 필드는 InteractiveForms: true을 사용하여 실제 HTML 폼 컨트롤로 변환될 수 있습니다.
doc, _ := pdf.Open("input.pdf")
// Faithful mode (default): full page raster + transparent selectable text layer.
doc.SaveHTML("out.html")
// Visible-text mode: real styled HTML text over a glyph-less background raster.
doc.SaveHTML("out.html", pdf.HTMLSaveOptions{Mode: pdf.HTMLModeText})
// Native mode: page graphics as one inline SVG layer.
doc.SaveHTML("out.html", pdf.HTMLSaveOptions{Mode: pdf.HTMLModeNative})
// Flow mode: reflowable HTML, paragraphs and headings in reading order.
doc.SaveHTML("article.html", pdf.HTMLSaveOptions{Mode: pdf.HTMLModeFlow})
// Interactive forms become fillable HTML controls.
doc.SaveHTML("form.html", pdf.HTMLSaveOptions{Mode: pdf.HTMLModeText, InteractiveForms: true})
옵션 콘텐츠 레이어
Document.AddLayer은 새로운 옵션 콘텐츠 그룹(OCG)을 생성하고 *Layer을 반환합니다; Document.Layers는 문서에 이미 존재하는 모든 레이어를 나열합니다. 페이지는 Page.BeginLayer / Page.EndLayer를 사용하여 콘텐츠가 해당 레이어에 속함을 표시합니다. Layer.SetVisible(false)는 기본적으로 레이어의 콘텐츠를 숨깁니다.
doc := pdf.NewDocumentFromFormat(pdf.PageFormatA4)
layer := doc.AddLayer("Watermark")
page, _ := doc.Page(1)
page.BeginLayer(layer)
page.AddText("DRAFT", pdf.TextStyle{Font: pdf.FontHelveticaBold, Size: 48},
pdf.Rectangle{LLX: 150, LLY: 400, URX: 450, URY: 460})
page.EndLayer()
layer.SetVisible(false) // hide the watermark by default
doc.Save("layered.pdf")
태그가 지정된 PDF 및 접근성
Document.TaggedContent은 문서의 논리 구조 트리를 소유하는 *TaggedContent 파사드를 반환합니다. TaggedContent.SetTitle / SetLanguage는 카탈로그 수준 메타데이터를 설정하며, 이는 PDF/UA이 필요로 합니다. 그리고 Page.TagContent는 마크된 콘텐츠 안에서 그리기 호출을 괄호로 묶으며 *StructElement 노드를 추가합니다.
doc := pdf.NewDocumentFromFormat(pdf.PageFormatA4)
tc := doc.TaggedContent()
tc.SetTitle("Quarterly Report")
tc.SetLanguage("en-US")
page, _ := doc.Page(1)
page.TagContent(tc.Root(), pdf.StructH1, func() error {
return page.AddText("Quarterly Report", pdf.TextStyle{Font: pdf.FontHelveticaBold, Size: 24},
pdf.Rectangle{LLX: 50, LLY: 760, URX: 545, URY: 800})
})
fig, _ := page.TagContent(tc.Root(), pdf.StructFigure, func() error {
return page.AddImage("chart.png", pdf.Rectangle{LLX: 50, LLY: 540, URX: 300, URY: 680})
})
fig.SetAlt("Bar chart of Q3 sales by region") // required for figures
doc.Save("accessible.pdf") // doc.ValidatePDFUA() is now Conformant
폼 데이터를 JSON(으)로 내보내기
Form.ExportJSON은 모든 AcroForm 필드의 유형과 값을 JSON으로 직렬화합니다; Form.ImportJSON은 JSON 페이로드를 폼에 다시 적용하고 업데이트된 필드 수를 반환합니다. JSONExportOptions.Indent는 출력물을 보기 좋게 포맷합니다.
doc, _ := pdf.Open("filled.pdf")
data, _ := doc.Form().ExportJSON(pdf.JSONExportOptions{Indent: true})
// Fill a template from a JSON payload; discard the applied-field count.
template, _ := pdf.Open("template.pdf")
_, _ = template.Form().ImportJSON(data)
빠른 시작
go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-gopackage main
import (
"fmt"
pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)
func main() {
doc, err := pdf.Open("input.pdf")
if err != nil {
panic(err)
}
err = doc.SaveHTML("out.html", pdf.HTMLSaveOptions{Mode: pdf.HTMLModeText})
if err != nil {
panic(err)
}
fmt.Println("HTML export complete")
}
지원되는 형식
| 형식 | 확장자 | 읽기 | 쓰기 |
|---|---|---|---|
| 예 | - | ||
| HTML | html | - | 예 |
| JSON | json | - | 예 |
오픈 소스 및 라이선스
Aspose.PDF FOSS for Go는 MIT 라이선스로 배포됩니다: 사용 제한이 없으며, 런타임 비용도 없고, 상업적 또는 개인적 사용을 위한 등록 요구 사항도 없습니다. 소스 코드는 github.com/aspose-pdf-foss/aspose-pdf-foss-for-go에 호스팅됩니다.