Εισαγωγή

Aspose.PDF FOSS για Go τώρα εξάγει έγγραφα PDF σε HTML, αποκαλύπτει προαιρετικά στρώματα περιεχομένου στο δέντρο σελίδων και παρέχει μια διεπαφή για δημιουργία εγγράφων Tagged PDF (πρόσβαση). Αυτές οι προσθήκες επεκτείνουν τους τύπους Document, Page και Form με δυνατότητες διαχείρισης εγγράφων που υπερβαίνουν τις βασικές ροές ανοίγματος/αποθήκευσης: μετατρέπουν ένα PDF σε μια αυτόνομη σελίδα HTML, εναλλάσσουν την ορατότητα του στρωματοποιημένου περιεχομένου, επισημαίνουν τη λογική δομή για συμμόρφωση με PDF/UA, και ανταλλάσσουν δεδομένα πεδίων AcroForm ως JSON.

Η βιβλιοθήκη είναι ένα module 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, τη διαχείριση προαιρετικού περιεχομένου (στρώματος), τη δημιουργία tagged-content, και την εξαγωγή/εισαγωγή φορμών JSON — όλες βασισμένες στην τρέχουσα επιφάνεια API.


Κύρια Χαρακτηριστικά

Εξαγωγή PDF σε HTML

Document.SaveHTML και Document.WriteHTML μετατρέπουν ένα φορτωμένο PDF σε HTML, ελεγχόμενο από HTMLSaveOptions.Mode (HTMLModeText για ένα ορατό, επιλέξιμο στρώμα κειμένου πάνω σε raster φόντο χωρίς γλύφους· HTMLModeNative για ένα ενσωματωμένο SVG διανυσματικό στρώμα· HTMLModeFlow για ρεφλουέ HTML). Διαδραστικά πεδία AcroForm μπορούν να μετατραπούν σε πραγματικούς ελέγχους φόρμας HTML με InteractiveForms: true.

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-go
package 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")
}

Υποστηριζόμενες μορφές

ΜορφήΕπέκτασηΑνάγνωσηΕγγραφή
PDFpdfΝαι-
HTMLhtml-Ναι
JSONjson-Ναι

Ανοιχτός κώδικας & Άδειες

Aspose.PDF FOSS για Go κυκλοφορεί υπό την άδεια MIT: χωρίς περιορισμούς χρήσης, χωρίς χρεώσεις χρόνου εκτέλεσης και χωρίς απαιτήσεις εγγραφής για εμπορική ή προσωπική χρήση. Ο πηγαίος κώδικας φιλοξενείται στο github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.


Ξεκινώντας

Σχετικοί Πόροι