Introduction

Bu yazıda, Go’da temel PDF belge yönetimi işlemlerini nasıl yapacağınızı öğreneceksiniz Aspose.PDF FOSS: belgeleri açmak ve kaydetmek, yeni PDF’ler oluşturmak, bir belgenin sayfaya bölünmesi, çok sayıda PDF’yi birleştirmek ve sayfa satırlarını çıkarmak. ve okuma veya yazma belgesel metadata. tüm işlemler herhangi bir yerli C veya C++ bağımlılığı olmadan mevcuttur.

Kütüphane bir modül olarak kullanılır. github.com/aspose-pdf-foss/aspose-pdf-foss-for-go, MIT lisanslı, ve 1.24 veya daha sonra gitmek gerektirir. go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go.

Bu yazı, bu Document, Page, PageRange,ve DocumentInfo Bu tür şekillerde Temel belge yönetimi yüzeyi.


Temel Operasyonlar

Belgelerin açılması ve kaydedilmesi

pdf.Open Bir PDF’yi diskten indirin ve bir *Document. OpenWithPassword Yapıyor Şifre korumalı dosyalar için de geçerlidir. Document.Save Sonuçları birine geri döndürmek için Dosya Yolu. Document.WriteTo Birine yazıyor io.Writer In-memory veya ağ için Senaryo ile.

// Open a standard PDF
doc, err := pdf.Open("input.pdf")
if err != nil {
	panic(err)
}

// Open an encrypted PDF
protected, err := pdf.OpenWithPassword("locked.pdf", "userpassword")
if err != nil {
	panic(err)
}

// Save to a new path
err = doc.Save("output.pdf")
fmt.Println(protected.PageCount())

Yeni bir belge oluşturmak

pdf.NewDocument boş bir şey yaratır *Document.Kullanım AddBlankPageFromFormat Standart bir kağıt boyutuna sahip beyaz bir sayfa eklemek. PageFormat Konstantin olarak adlandırılan formlar (PageFormatA4, PageFormatLetter, vb ).

doc := pdf.NewDocumentFromFormat(pdf.PageFormatA4)

doc.Save("new_document.pdf")

Bir belgeyi bölmek

Document.Split PDF’yi ayrı sayfaya ayırın *Document değerler - her biri Geri gönderilen belge tam olarak bir sayfayı içerir ve bağımsız olarak kaydedilebilir. Bu, batch-generat raporları paylaşmak veya faturalar sayfalarını ayırmak için yararlıdır.

doc, _ := pdf.Open("multi_page.pdf")
pages, err := doc.Split()
if err != nil {
	panic(err)
}

for i, p := range pages {
	filename := fmt.Sprintf("page_%03d.pdf", i+1)
	if err := p.Save(filename); err != nil {
		fmt.Printf("Failed to save page %d: %v\n", i+1, err)
	}
}
fmt.Printf("Split into %d pages\n", len(pages))

Çeşitli PDF’ler

Document.Append Bir İkinci Birleşme *Document Alıcıya yerinde, açılırken Tüm sayfalar kaynağından. çağrı Append Daha önce çok sayıda belgeyi tekrarlayan tek bir Save.Kaynak belgesinin değiştirilmemesi.

base, _ := pdf.Open("report_intro.pdf")
section1, _ := pdf.Open("section1.pdf")
section2, _ := pdf.Open("section2.pdf")
appendix, _ := pdf.Open("appendix.pdf")

base.Append(section1)
base.Append(section2)
base.Append(appendix)

base.Save("complete_report.pdf")

Bir sayfa aralığı çıkarmak

PageRange 1 (bir) temel bir aralığı oluşturur, kullanılır From/To * Sürücüler: Sırtlar geçiriyor Document.Extract Yeni bir üretici üretmek için *Document Sadece seçilmiş olanları içerir. Bu, bölüm başına ihracat veya düzenlenmiş kopyalar oluşturmak için yararlıdır. Belirli sayfaları kaçırın.

doc, _ := pdf.Open("long_report.pdf")

// Extract pages 3 through 7
subset, err := doc.Extract(pdf.PageRange{From: 3, To: 7})
if err != nil {
	panic(err)
}
subset.Save("pages_3_to_7.pdf")

Metadata Okuma ve Yazma Belgeleri

Document.Info geri döner a DocumentInfo Struktür Fuarı Bilgi Sözlük alanları: Title, Author, Subject, Keywords, Creator, Producer, CreationDate,ve ModDate. doğrudan alanları değiştirin, sonra arama Document.SetInfo Güncellenmiş yapıları arama yapmadan önce yazmak için Save.

doc, _ := pdf.Open("report.pdf")
info, _ := doc.Info()

// Read current values
fmt.Printf("Title: %s\nAuthor: %s\n", info.Title, info.Author)

// Update fields
info.Title = "Annual Report 2026"
info.Author = "Finance Team"
info.Keywords = "annual, report, finance, 2026"

doc.SetInfo(info)
doc.Save("report_updated.pdf")

Bireysel sayfalar için erişim

Document.Page(n) A’yı geri getirmek *Page 1 bazlı bir indeks. Document.PageCount Geri dönüş sayfa toplam sayısı. sayfalar, sayfanın okuma kutularına geometrik özellikleri gösterir ve boyutları .

doc, _ := pdf.Open("document.pdf")
fmt.Printf("Page count: %d\n", doc.PageCount())

page, _ := doc.Page(1)
size, err := page.Size()
if err != nil {
	panic(err)
}
fmt.Printf("Page 1 size: %.0f x %.0f pt\n", size.Width, size.Height)

Hızlı Başlangıç

Modül ile kurulumu go get,aşağıdaki örnekleri tamamlayın.Örnek açılıyor Bir kaynak belgesi, ilk üç sayfasını yeni bir belgeye çıkarır, güncelleştirme DocumentInfo Metadata alanları ve sonuçları diskten kaydeder.

go get github.com/aspose-pdf-foss/aspose-pdf-foss-for-go

Bir belgeyi açan, 1-3 sayfaları çıkarıp sonuç güncellenmiş metadata ile kaydedilen tam bir örnek:

package main

import (
	"fmt"
	pdf "github.com/aspose-pdf-foss/aspose-pdf-foss-for-go"
)

func main() {
	// Open source document
	src, err := pdf.Open("source.pdf")
	if err != nil {
		panic(err)
	}

	// Extract pages 1-3
	subset, err := src.Extract(pdf.PageRange{From: 1, To: 3})
	if err != nil {
		panic(err)
	}

	// Update metadata
	info, _ := subset.Info()
	info.Title = "Pages 1-3 Extract"
	info.Author = "Document Pipeline"
	subset.SetInfo(info)

	if err := subset.Save("extract_pages_1_3.pdf"); err != nil {
		panic(err)
	}
	fmt.Printf("Saved %d pages\n", subset.PageCount())
}

Açık Kaynak ve Lisans

Aspose.PDF FOSS for Go is released under the MIT license. There are no usage restrictions, -Hiçbir çalışma ücreti ve kayıt gereksinimleri yok. kaynak kodu mevcuttur: github.com/aspose-pdf-foss/asspose - pdf-for-go için.


Başlamaya başlar

İlgili Kaynaklar