Skip to content

Commit bc0f3c8

Browse files
authored
Merge pull request #90 from aspose-pdf-cloud/pdfcloud-4969-added-snippets-ables
PDFCLOUD-4969: added snippets for Tables
2 parents f818cdf + 9ec095e commit bc0f3c8

11 files changed

+394
-0
lines changed

uses_cases/tables/tables_append.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
6+
asposepdfcloud "github.com/aspose-pdf-cloud/aspose-pdf-cloud-go/v25"
7+
)
8+
9+
func AppendTable(pdf_api *asposepdfcloud.PdfApiService, document string, pageNumber int32, outputDocument string, remoteFolder string) {
10+
// Append table to the document
11+
uploadFile(pdf_api, document)
12+
13+
args := map[string]interface{}{
14+
"folder": remoteFolder,
15+
}
16+
17+
var new_table = InitializeTable()
18+
19+
_, httpResponse, err := pdf_api.PostPageTables(document, pageNumber, []asposepdfcloud.Table{*new_table}, args)
20+
if err != nil {
21+
fmt.Println(err.Error())
22+
} else if httpResponse.StatusCode < 200 || httpResponse.StatusCode > 299 {
23+
fmt.Println("AppendTable()): Failed to append table to the document.")
24+
} else {
25+
fmt.Println("AppendTable(): table appended successfully on page", pageNumber, " to the document '"+document+"'.")
26+
downloadFile(pdf_api, document, outputDocument, "add_table_")
27+
}
28+
29+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
6+
asposepdfcloud "github.com/aspose-pdf-cloud/aspose-pdf-cloud-go/v25"
7+
)
8+
9+
func DeleteTables(pdf_api *asposepdfcloud.PdfApiService, document string, outputDocument string, remoteFolder string) {
10+
// Delete tables from the document
11+
uploadFile(pdf_api, document)
12+
13+
args := map[string]interface{}{
14+
"folder": remoteFolder,
15+
}
16+
17+
_, httpResponse, err := pdf_api.DeleteDocumentTables(document, args)
18+
if err != nil {
19+
fmt.Println(err.Error())
20+
} else if httpResponse.StatusCode < 200 || httpResponse.StatusCode > 299 {
21+
fmt.Println("DeleteTables()): Failed to delete tables from the document.")
22+
} else {
23+
fmt.Println("DeleteTables(): table deleted successfully from the document '" + document + "'.")
24+
downloadFile(pdf_api, document, outputDocument, "del_tables_")
25+
}
26+
27+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
6+
asposepdfcloud "github.com/aspose-pdf-cloud/aspose-pdf-cloud-go/v25"
7+
)
8+
9+
func DeleteTableById(pdf_api *asposepdfcloud.PdfApiService, document string, tableId string, outputDocument string, remoteFolder string) {
10+
// Delete table from the document
11+
uploadFile(pdf_api, document)
12+
13+
args := map[string]interface{}{
14+
"folder": remoteFolder,
15+
}
16+
17+
_, httpResponse, err := pdf_api.DeleteTable(document, tableId, args)
18+
if err != nil {
19+
fmt.Println(err.Error())
20+
} else if httpResponse.StatusCode < 200 || httpResponse.StatusCode > 299 {
21+
fmt.Println("DeleteTableById()): Failed to delete table from the document.")
22+
} else {
23+
fmt.Println("DeleteTableById(): table deleted successfully in the document '" + document + "'.")
24+
downloadFile(pdf_api, document, outputDocument, "del_table_")
25+
}
26+
27+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
6+
asposepdfcloud "github.com/aspose-pdf-cloud/aspose-pdf-cloud-go/v25"
7+
)
8+
9+
func DeleteTablesOnPage(pdf_api *asposepdfcloud.PdfApiService, document string, pageNumber int32, outputDocument string, remoteFolder string) {
10+
// Delete tables from the document
11+
uploadFile(pdf_api, document)
12+
13+
args := map[string]interface{}{
14+
"folder": remoteFolder,
15+
}
16+
17+
_, httpResponse, err := pdf_api.DeletePageTables(document, pageNumber, args)
18+
if err != nil {
19+
fmt.Println(err.Error())
20+
} else if httpResponse.StatusCode < 200 || httpResponse.StatusCode > 299 {
21+
fmt.Println("DeleteTablesOnPage()): Failed to delete tables from the document.")
22+
} else {
23+
fmt.Println("DeleteTablesOnPage(): tables on ", pageNumber, " page deleted successfully from the document '"+document+"'.")
24+
downloadFile(pdf_api, document, outputDocument, "del_page_tables_")
25+
}
26+
27+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
6+
asposepdfcloud "github.com/aspose-pdf-cloud/aspose-pdf-cloud-go/v25"
7+
)
8+
9+
func ExtractTables(pdf_api *asposepdfcloud.PdfApiService, document string, remoteFolder string) {
10+
// Extract all tables form the document and show table info
11+
uploadFile(pdf_api, document)
12+
13+
args := map[string]interface{}{
14+
"folder": remoteFolder,
15+
}
16+
17+
result, httpResponse, err := pdf_api.GetDocumentTables(document, args)
18+
if err != nil {
19+
fmt.Println(err.Error())
20+
} else if httpResponse.StatusCode < 200 || httpResponse.StatusCode > 299 {
21+
fmt.Println("ExtractTables(): Failed to extract tablev from the document.")
22+
} else {
23+
if result.Tables == nil || len(result.Tables.List) == 0 {
24+
fmt.Println("ExtractTables(): Tables not found in the document.")
25+
} else {
26+
for i, t := range result.Tables.List {
27+
fmt.Println("table", i, " => id: '"+t.Id+"', page: '", t.PageNum, "', rows: '", len(t.RowList), "', columns: '", len(t.RowList[0].CellList), "'")
28+
}
29+
}
30+
}
31+
32+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
6+
asposepdfcloud "github.com/aspose-pdf-cloud/aspose-pdf-cloud-go/v25"
7+
)
8+
9+
func ExtractTableById(pdf_api *asposepdfcloud.PdfApiService, document string, tableId string, remoteFolder string) {
10+
// Extract table form the document and show table info
11+
uploadFile(pdf_api, document)
12+
13+
args := map[string]interface{}{
14+
"folder": remoteFolder,
15+
}
16+
17+
result, httpResponse, err := pdf_api.GetTable(document, tableId, args)
18+
if err != nil {
19+
fmt.Println(err.Error())
20+
} else if httpResponse.StatusCode < 200 || httpResponse.StatusCode > 299 {
21+
fmt.Println("ExtractTableById(): Failed to extract table from the document.")
22+
} else {
23+
fmt.Println("foud => id: '"+result.Table.Id+"', page: '", result.Table.PageNum, "', rows: '", len(result.Table.RowList), "', columns: '", len(result.Table.RowList[0].CellList), "'")
24+
}
25+
26+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
6+
asposepdfcloud "github.com/aspose-pdf-cloud/aspose-pdf-cloud-go/v25"
7+
)
8+
9+
func ExtractTablesOnPage(pdf_api *asposepdfcloud.PdfApiService, document string, pageNumber int32, remoteFolder string) {
10+
// Extract table form the document and show table info
11+
uploadFile(pdf_api, document)
12+
13+
args := map[string]interface{}{
14+
"folder": remoteFolder,
15+
}
16+
17+
result, httpResponse, err := pdf_api.GetPageTables(document, pageNumber, args)
18+
if err != nil {
19+
fmt.Println(err.Error())
20+
} else if httpResponse.StatusCode < 200 || httpResponse.StatusCode > 299 {
21+
fmt.Println("ExtractTablesOnPage(): Failed to extract table from the document.")
22+
} else {
23+
if result.Tables == nil || len(result.Tables.List) == 0 {
24+
fmt.Println("ExtractTablesOnPage(): Tables not found on ", pageNumber, "page in the document.")
25+
} else {
26+
for i, t := range result.Tables.List {
27+
fmt.Println("table", i, " => id: '"+t.Id+"', page: '", t.PageNum, "', rows: '", len(t.RowList), "', columns: '", len(t.RowList[0].CellList), "'")
28+
}
29+
}
30+
}
31+
32+
}

uses_cases/tables/tables_helper.go

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"path"
7+
"path/filepath"
8+
9+
asposepdfcloud "github.com/aspose-pdf-cloud/aspose-pdf-cloud-go/v25"
10+
)
11+
12+
const (
13+
REMOTE_FOLDER = "Your_Temp_Pdf_Cloud"
14+
LOCAL_FOLDER = "c:\\Samples"
15+
PDF_DOCUMENT = "sample.pdf"
16+
PDF_OUTPUT = "output_pages.pdf"
17+
PNG_PAGE_OUTPUT = "output_sample_page.png"
18+
PAGE_NUMBER = 2
19+
TABLE_ID = "GE5TCOZSGAYCYNRQGUWDINZVFQ3DGMA"
20+
21+
APP_SID = "*************" // Your Application SID
22+
APP_KEY = "*************" // Your Application Key
23+
)
24+
25+
func initPdfApi() *asposepdfcloud.PdfApiService {
26+
pdfApi := asposepdfcloud.NewPdfApiService(APP_SID, APP_KEY, "")
27+
return pdfApi
28+
}
29+
30+
// Upload local file to the remote folder with check errors
31+
func uploadFile(pdf_api *asposepdfcloud.PdfApiService, name string) {
32+
args := map[string]interface{}{
33+
"folder": REMOTE_FOLDER,
34+
}
35+
file, err := os.Open(filepath.Join(LOCAL_FOLDER, name))
36+
if err != nil {
37+
fmt.Println(err.Error())
38+
} else {
39+
_, httpResponse, err := pdf_api.UploadFile(path.Join(REMOTE_FOLDER, name), file, args)
40+
if err != nil {
41+
fmt.Println(err.Error())
42+
} else if httpResponse.StatusCode < 200 || httpResponse.StatusCode > 299 {
43+
fmt.Println("Unexpected error!")
44+
} else {
45+
fmt.Println("File '" + name + " ' succeddfully uplouaded.")
46+
}
47+
}
48+
}
49+
50+
// Download file from remote folder and save it locally with check errors
51+
func downloadFile(pdf_api *asposepdfcloud.PdfApiService, name string, output_name string, prefix string) {
52+
args := map[string]interface{}{
53+
"folder": REMOTE_FOLDER,
54+
}
55+
result_data, httpResponse, err := pdf_api.DownloadFile(path.Join(REMOTE_FOLDER, name), args)
56+
if err != nil {
57+
fmt.Println(err.Error())
58+
} else if httpResponse.StatusCode < 200 || httpResponse.StatusCode > 299 {
59+
fmt.Println("Unexpected error!")
60+
} else {
61+
fileName := path.Join(LOCAL_FOLDER, prefix+output_name)
62+
f, _ := os.Create(fileName)
63+
_, _ = f.Write(result_data)
64+
fmt.Println("File '" + prefix + fileName + "' successfully downloaded.")
65+
}
66+
}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package main
2+
3+
import (
4+
"strconv"
5+
6+
asposepdfcloud "github.com/aspose-pdf-cloud/aspose-pdf-cloud-go/v25"
7+
)
8+
9+
func InitializeTable() *asposepdfcloud.Table {
10+
// Initialize new table
11+
num_of_cols := 5
12+
num_of_rows := 5
13+
14+
header_text_state := asposepdfcloud.TextState{
15+
Font: "Arial Bold",
16+
FontSize: 11,
17+
ForegroundColor: &asposepdfcloud.Color{A: 255, R: 255, G: 255, B: 255},
18+
FontStyle: asposepdfcloud.FontStylesBold,
19+
}
20+
21+
common_text_state := asposepdfcloud.TextState{
22+
Font: "Arial Bold",
23+
FontSize: 11,
24+
ForegroundColor: &asposepdfcloud.Color{A: 255, R: 112, G: 112, B: 112},
25+
FontStyle: asposepdfcloud.FontStylesRegular,
26+
}
27+
28+
col_widths := ""
29+
for col_index := 0; col_index < num_of_cols; col_index++ {
30+
col_widths += " 70"
31+
}
32+
33+
var table_rows = []asposepdfcloud.Row{}
34+
35+
border_table_border := asposepdfcloud.GraphInfo{
36+
Color: &asposepdfcloud.Color{A: 255, R: 0, G: 255, B: 0},
37+
LineWidth: 0.5,
38+
}
39+
40+
for row_index := 0; row_index < num_of_rows; row_index++ {
41+
var row_cells = []asposepdfcloud.Cell{}
42+
43+
for col_index := 0; col_index < num_of_cols; col_index++ {
44+
cell := asposepdfcloud.Cell{DefaultCellTextState: &common_text_state}
45+
46+
if row_index == 0 {
47+
// header cells
48+
cell.BackgroundColor = &asposepdfcloud.Color{A: 255, R: 128, G: 128, B: 128}
49+
cell.DefaultCellTextState = &header_text_state
50+
} else {
51+
cell.BackgroundColor = &asposepdfcloud.Color{A: 255, R: 255, G: 255, B: 255}
52+
}
53+
54+
text_rect := asposepdfcloud.TextRect{}
55+
if row_index == 0 {
56+
text_rect.Text = "header #" + strconv.Itoa(col_index)
57+
} else {
58+
text_rect.Text = "value '" + strconv.Itoa(row_index) + "','" + strconv.Itoa(col_index) + "'"
59+
}
60+
61+
cell.Paragraphs = append(cell.Paragraphs, text_rect)
62+
63+
row_cells = append(row_cells, cell)
64+
}
65+
66+
row := asposepdfcloud.Row{Cells: row_cells}
67+
68+
table_rows = append(table_rows, row)
69+
}
70+
71+
table := asposepdfcloud.Table{Left: 150, Top: 250, ColumnWidths: col_widths, Rows: table_rows}
72+
73+
table.DefaultCellBorder = &asposepdfcloud.BorderInfo{
74+
Top: &border_table_border,
75+
Right: &border_table_border,
76+
Bottom: &border_table_border,
77+
Left: &border_table_border,
78+
RoundedBorderRadius: 2,
79+
}
80+
81+
return &table
82+
}

uses_cases/tables/tables_launch.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package main
2+
3+
func main() {
4+
pdfApi := initPdfApi()
5+
6+
AppendTable(pdfApi, PDF_DOCUMENT, PAGE_NUMBER, PDF_OUTPUT, REMOTE_FOLDER)
7+
8+
ExtractTables(pdfApi, PDF_DOCUMENT, REMOTE_FOLDER)
9+
ExtractTableById(pdfApi, PDF_DOCUMENT, TABLE_ID, REMOTE_FOLDER)
10+
ExtractTablesOnPage(pdfApi, PDF_DOCUMENT, PAGE_NUMBER, REMOTE_FOLDER)
11+
12+
DeleteTables(pdfApi, PDF_DOCUMENT, PDF_OUTPUT, REMOTE_FOLDER)
13+
DeleteTableById(pdfApi, PDF_DOCUMENT, TABLE_ID, PDF_OUTPUT, REMOTE_FOLDER)
14+
DeleteTablesOnPage(pdfApi, PDF_DOCUMENT, PAGE_NUMBER, PDF_OUTPUT, REMOTE_FOLDER)
15+
16+
ReplaceTable(pdfApi, PDF_DOCUMENT, TABLE_ID, PDF_OUTPUT, REMOTE_FOLDER)
17+
}

0 commit comments

Comments
 (0)