Skip to content

Commit f282931

Browse files
Aspose.PDF for Go via C++ 25.11
1 parent ff4224f commit f282931

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+556
-222
lines changed

README.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@ Contains unique features for converting PDF to other formats.
1111
- **Other core operation:** WordCount, CharacterCount, Bytes
1212
- **Page main core operation:** Add, Insert, Delete, Count
1313
- **Page other core operation:** WordCount, CharacterCount, IsBlank
14-
- **Organize:** Optimize, OptimizeResource, Grayscale, Rotate, SetBackground, Repair, Flatten
15-
- **Page organize:** Rotate, SetSize, Grayscale, AddText
16-
- **Remove operation:** RemoveAnnotations, RemoveAttachments, RemoveBlankPages, RemoveBookmarks, RemoveHiddenText, RemoveImages, RemoveTables, RemoveJavaScripts
17-
- **Page remove operation:** PageRemoveAnnotations, PageRemoveHiddenText, PageRemoveImages, PageRemoveTables
14+
- **Organize:** Optimize, OptimizeResource, OptimizeFileSize, Grayscale, Rotate, SetBackground, Repair, Flatten, AddPageNum, AddHeader, AddFooter, AddWatermark
15+
- **Page organize:** Rotate, SetSize, Grayscale, AddPageNum, AddText, AddHeader, AddFooter, AddWatermark
16+
- **Remove operation:** RemoveAnnotations, RemoveAttachments, RemoveBlankPages, RemoveBookmarks, RemoveHiddenText, RemoveImages, RemoveTables, RemoveJavaScripts, RemoveWatermarks
17+
- **Page remove operation:** PageRemoveAnnotations, PageRemoveHiddenText, PageRemoveImages, PageRemoveTables, PageRemoveWatermarks
18+
- **Font embedding:** EmbedFonts and UnembedFonts
1819
- **Others:** Get contents as plain text
1920

2021
### PDF converting and saving
@@ -122,6 +123,8 @@ func main() {
122123
if err != nil {
123124
log.Fatal(err)
124125
}
126+
// Release allocated resources
127+
defer pdf.Close()
125128
// Add new page
126129
err = pdf.PageAdd()
127130
if err != nil {
@@ -142,8 +145,6 @@ func main() {
142145
if err != nil {
143146
log.Fatal(err)
144147
}
145-
// Release allocated resources
146-
defer pdf.Close()
147148
}
148149
```
149150
@@ -165,13 +166,13 @@ func main() {
165166
if err != nil {
166167
log.Fatal(err)
167168
}
169+
// Close() releases allocated resources for PDF-document
170+
defer pdf.Close()
168171
// SaveDocX(filename string) saves previously opened PDF-document as DocX-document with filename
169172
err = pdf.SaveDocX("sample.docx")
170173
if err != nil {
171174
log.Fatal(err)
172175
}
173-
// Close() releases allocated resources for PDF-document
174-
defer pdf.Close()
175176
}
176177
```
177178
### Extract Text From Whole PDF
@@ -188,17 +189,16 @@ func main() {
188189
pdf, err := asposepdf.Open("sample.pdf")
189190
if err != nil {
190191
log.Fatal(err)
191-
192192
}
193+
// Close() releases allocated resources for PDF-document
194+
defer pdf.Close()
193195
// ExtractText() returns PDF-document contents as plain text
194196
txt, err := pdf.ExtractText()
195197
if err != nil {
196198
log.Fatal(err)
197199
}
198200
// Print
199201
fmt.Println("Extracted text:\n", txt)
200-
// Close() releases allocated resources for PDF-document
201-
defer pdf.Close()
202202
}
203203
```
204204
@@ -250,15 +250,15 @@ Applying a license to enable full functionality of the Aspose.PDF for Go using a
250250
if err != nil {
251251
log.Fatal(err)
252252
}
253+
// Close() releases allocated resources for PDF-document
254+
defer pdf.Close()
253255
// SetLicense(filename string) licenses with filename
254256
err = pdf.SetLicense("Aspose.PDF.GoViaCPP.lic")
255257
if err != nil {
256258
log.Fatal(err)
257259
}
258260
// Working with PDF-document
259261
// ...
260-
// Close() releases allocated resources for PDF-document
261-
defer pdf.Close()
262262
}
263263
```
264264

asposepdf_test.go

Lines changed: 74 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -37,25 +37,23 @@ func TestNewAndSave(t *testing.T) {
3737

3838
pdf_new, err := New()
3939
if err != nil {
40-
t.Errorf("New(): %v", err)
40+
t.Fatalf("New(): %v", err)
41+
}
42+
defer pdf_new.Close()
43+
err = pdf_new.SaveAs(pdf_new_filename)
44+
if err != nil {
45+
t.Errorf("SaveAs(%s): %v", pdf_new_filename, err)
4146
} else {
42-
err = pdf_new.SaveAs(pdf_new_filename)
47+
pdf_empty, err := Open(pdf_new_filename)
4348
if err != nil {
44-
t.Errorf("SaveAs(%s): %v", pdf_new_filename, err)
45-
} else {
46-
pdf_empty, err := Open(pdf_new_filename)
47-
if err != nil {
48-
t.Errorf("Open(%s): %v", pdf_new_filename, err)
49-
} else {
50-
err = pdf_empty.Save()
51-
if err != nil {
52-
t.Errorf("Save(%s): %v", pdf_new_filename, err)
53-
}
54-
}
55-
defer pdf_empty.Close()
49+
t.Fatalf("Open(%s): %v", pdf_new_filename, err)
50+
}
51+
defer pdf_empty.Close()
52+
err = pdf_empty.Save()
53+
if err != nil {
54+
t.Errorf("Save(%s): %v", pdf_new_filename, err)
5655
}
5756
}
58-
defer pdf_new.Close()
5957

6058
// Check file size != 0
6159
fi, err := os.Stat(pdf_new_filename)
@@ -69,7 +67,7 @@ func TestMergeDocuments(t *testing.T) {
6967
// Create the first PDF-document
7068
pdf1, err := New()
7169
if err != nil {
72-
t.Errorf("New(): %v", err)
70+
t.Fatalf("New(): %v", err)
7371
}
7472
defer pdf1.Close()
7573

@@ -79,7 +77,7 @@ func TestMergeDocuments(t *testing.T) {
7977
// Create the second PDF-document
8078
pdf2, err := New()
8179
if err != nil {
82-
t.Errorf("New(): %v", err)
80+
t.Fatalf("New(): %v", err)
8381
}
8482
defer pdf2.Close()
8583

@@ -89,7 +87,7 @@ func TestMergeDocuments(t *testing.T) {
8987
// Create the third PDF-document
9088
pdf3, err := New()
9189
if err != nil {
92-
t.Errorf("New(): %v", err)
90+
t.Fatalf("New(): %v", err)
9391
}
9492
defer pdf3.Close()
9593

@@ -101,7 +99,7 @@ func TestMergeDocuments(t *testing.T) {
10199
// Merge all three documents
102100
mergedDoc, err := MergeDocuments([]*Document{pdf1, pdf2, pdf3})
103101
if err != nil {
104-
t.Errorf("MergeDocuments(): %v", err)
102+
t.Fatalf("MergeDocuments(): %v", err)
105103
}
106104
defer mergedDoc.Close()
107105

@@ -117,7 +115,7 @@ func TestSplitDocument(t *testing.T) {
117115
// Create a PDF-document with 4 pages
118116
pdf, err := New()
119117
if err != nil {
120-
t.Errorf("New(): %v", err)
118+
t.Fatalf("New(): %v", err)
121119
}
122120
defer pdf.Close()
123121

@@ -128,7 +126,7 @@ func TestSplitDocument(t *testing.T) {
128126
// Split the PDF-document into 3 parts: pages 1-2, page 3, pages 4 to end
129127
pdfs, err := SplitDocument(pdf, "1-2;3;4-")
130128
if err != nil {
131-
t.Errorf("SplitDocument(): %v", err)
129+
t.Fatalf("SplitDocument(): %v", err)
132130
}
133131

134132
if len(pdfs) != 3 {
@@ -157,7 +155,7 @@ func TestSplit(t *testing.T) {
157155
// Create a PDF-document with 4 pages
158156
pdf, err := New()
159157
if err != nil {
160-
t.Errorf("New(): %v", err)
158+
t.Fatalf("New(): %v", err)
161159
}
162160
defer pdf.Close()
163161

@@ -168,7 +166,7 @@ func TestSplit(t *testing.T) {
168166
// Split the PDF-document into 3 parts: pages 1-2, page 3, pages 4 to end
169167
pdfs, err := pdf.Split("1-2;3;4-")
170168
if err != nil {
171-
t.Errorf("Split(): %v", err)
169+
t.Fatalf("Split(): %v", err)
172170
}
173171

174172
if len(pdfs) != 3 {
@@ -197,7 +195,7 @@ func TestSplitAtPage(t *testing.T) {
197195
// Create a PDF-document with 4 pages
198196
pdf, err := New()
199197
if err != nil {
200-
t.Errorf("New(): %v", err)
198+
t.Fatalf("New(): %v", err)
201199
}
202200
defer pdf.Close()
203201

@@ -208,7 +206,7 @@ func TestSplitAtPage(t *testing.T) {
208206
// Split the PDF-document into two parts: first 2 pages, and remaining pages
209207
left, right, err := SplitAtPage(pdf, 2)
210208
if err != nil {
211-
t.Errorf("SplitAtPage(): %v", err)
209+
t.Fatalf("SplitAtPage(): %v", err)
212210
}
213211

214212
// Defer closing both PDF-documents
@@ -227,7 +225,7 @@ func TestSplitAt(t *testing.T) {
227225
// Create a PDF-document with 4 pages
228226
pdf, err := New()
229227
if err != nil {
230-
t.Errorf("New(): %v", err)
228+
t.Fatalf("New(): %v", err)
231229
}
232230
defer pdf.Close()
233231

@@ -238,7 +236,7 @@ func TestSplitAt(t *testing.T) {
238236
// Use the SplitAt method to split the document into two parts at page 2
239237
left, right, err := pdf.SplitAt(2)
240238
if err != nil {
241-
t.Errorf("SplitAt(): %v", err)
239+
t.Fatalf("SplitAt(): %v", err)
242240
}
243241

244242
// Defer closing both resulting documents
@@ -254,8 +252,11 @@ func TestSplitAt(t *testing.T) {
254252
}
255253

256254
func TestPages(t *testing.T) {
257-
258-
pdf, _ := New()
255+
// Create a PDF-document with 4 pages
256+
pdf, err := New()
257+
if err != nil {
258+
t.Fatalf("New(): %v", err)
259+
}
259260
defer pdf.Close()
260261

261262
// Add page
@@ -273,8 +274,11 @@ func TestPages(t *testing.T) {
273274
}
274275

275276
func TestStats(t *testing.T) {
276-
277-
pdf, _ := New()
277+
// Create a PDF-document with 4 pages
278+
pdf, err := New()
279+
if err != nil {
280+
t.Fatalf("New(): %v", err)
281+
}
278282
defer pdf.Close()
279283

280284
// Text with stamp: "Evaluation Only. Created with Aspose.PDF ..."
@@ -311,7 +315,7 @@ func TestAppend(t *testing.T) {
311315
// Create the first PDF-document
312316
pdf1, err := New()
313317
if err != nil {
314-
t.Errorf("New(): %v", err)
318+
t.Fatalf("New(): %v", err)
315319
}
316320
defer pdf1.Close()
317321

@@ -327,7 +331,7 @@ func TestAppend(t *testing.T) {
327331
// Create the second PDF-document
328332
pdf2, err := New()
329333
if err != nil {
330-
t.Errorf("New(): %v", err)
334+
t.Fatalf("New(): %v", err)
331335
}
332336
defer pdf2.Close()
333337

@@ -404,32 +408,6 @@ func TestAppendPages(t *testing.T) {
404408
}
405409
}
406410

407-
func TestAbout(t *testing.T) {
408-
// Create a new document instance
409-
doc, err := New()
410-
if err != nil {
411-
t.Fatalf("New(): %v", err)
412-
}
413-
defer doc.Close()
414-
415-
// Call About()
416-
info, err := doc.About()
417-
if err != nil {
418-
t.Fatalf("About(): %v", err)
419-
}
420-
421-
// Validate required fields (basic presence checks)
422-
if info.Product == "" {
423-
t.Errorf("Product field is empty")
424-
}
425-
if info.Version == "" {
426-
t.Errorf("Version field is empty")
427-
}
428-
429-
// Log full structure
430-
t.Logf("About result: %+v", info)
431-
}
432-
433411
func TestExtractText(t *testing.T) {
434412
// Create a new document
435413
doc, err := New()
@@ -551,6 +529,7 @@ func TestOrganize(t *testing.T) {
551529
organizeFunctions := []organizeFunction{
552530
{"Optimize", (*Document).Optimize},
553531
{"OptimizeResource", (*Document).OptimizeResource},
532+
{"OptimizeFileSize", func(doc *Document) error { return doc.OptimizeFileSize(25) }},
554533
{"Grayscale", (*Document).Grayscale},
555534
{"Rotate", func(doc *Document) error { return doc.Rotate(RotationOn270) }},
556535
{"SetBackground", func(doc *Document) error { return doc.SetBackground(255, 255, 200) }},
@@ -561,7 +540,12 @@ func TestOrganize(t *testing.T) {
561540
{"AddPageNum", (*Document).AddPageNum},
562541
{"AddTextHeader", func(doc *Document) error { return doc.AddTextHeader("Header") }},
563542
{"AddTextFooter", func(doc *Document) error { return doc.AddTextFooter("Footer") }},
543+
{"AddWatermark", func(doc *Document) error {
544+
return doc.AddWatermark("Watermark", "Arial", 16, "#010101", 100, 100, 45, true, 0.5)
545+
}},
564546
{"Flatten", (*Document).Flatten},
547+
{"EmbedFonts", (*Document).EmbedFonts},
548+
{"UnembedFonts", (*Document).UnembedFonts},
565549
{"RemoveAnnotations", (*Document).RemoveAnnotations},
566550
{"RemoveAttachments", (*Document).RemoveAttachments},
567551
{"RemoveBlankPages", (*Document).RemoveBlankPages},
@@ -570,6 +554,7 @@ func TestOrganize(t *testing.T) {
570554
{"RemoveImages", (*Document).RemoveImages},
571555
{"RemoveJavaScripts", (*Document).RemoveJavaScripts},
572556
{"RemoveTables", (*Document).RemoveTables},
557+
{"RemoveWatermarks", (*Document).RemoveWatermarks},
573558
{"PageRotate", func(doc *Document) error { return doc.PageRotate(1, RotationOn270) }},
574559
{"PageSetSize", func(doc *Document) error { return doc.PageSetSize(1, PageSizeA1) }},
575560
{"PageGrayscale", func(doc *Document) error { return doc.PageGrayscale(1) }},
@@ -581,10 +566,14 @@ func TestOrganize(t *testing.T) {
581566
{"PageAddPageNum", func(doc *Document) error { return doc.PageAddPageNum(1) }},
582567
{"PageAddTextHeader", func(doc *Document) error { return doc.PageAddTextHeader(1, "Page Header") }},
583568
{"PageAddTextFooter", func(doc *Document) error { return doc.PageAddTextFooter(1, "Page Footer") }},
569+
{"PageAddWatermark", func(doc *Document) error {
570+
return doc.PageAddWatermark(1, "Watermark", "Arial", 16, "#010101", 100, 100, 45, true, 0.5)
571+
}},
584572
{"PageRemoveAnnotations", func(doc *Document) error { return doc.PageRemoveAnnotations(1) }},
585573
{"PageRemoveHiddenText", func(doc *Document) error { return doc.PageRemoveHiddenText(1) }},
586574
{"PageRemoveImages", func(doc *Document) error { return doc.PageRemoveImages(1) }},
587575
{"PageRemoveTables", func(doc *Document) error { return doc.PageRemoveTables(1) }},
576+
{"PageRemoveWatermarks", func(doc *Document) error { return doc.PageRemoveWatermarks(1) }},
588577
}
589578

590579
for _, test := range organizeFunctions {
@@ -663,3 +652,29 @@ func TestBytes(t *testing.T) {
663652
// Assert that the byte slice is not empty
664653
assert_ne(t, int64(0), int64(len(data)))
665654
}
655+
656+
func TestAbout(t *testing.T) {
657+
// Create a new document instance
658+
doc, err := New()
659+
if err != nil {
660+
t.Fatalf("New(): %v", err)
661+
}
662+
defer doc.Close()
663+
664+
// Call About()
665+
info, err := doc.About()
666+
if err != nil {
667+
t.Fatalf("About(): %v", err)
668+
}
669+
670+
// Validate required fields (basic presence checks)
671+
if info.Product == "" {
672+
t.Errorf("Product field is empty")
673+
}
674+
if info.Version == "" {
675+
t.Errorf("Version field is empty")
676+
}
677+
678+
// Log full structure
679+
t.Logf("About result: %+v", info)
680+
}

0 commit comments

Comments
 (0)