File size: 2,608 Bytes
6a7089a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | package actions
import (
"fmt"
"net/http"
"net/url"
"os"
"time"
"github.com/pinchtab/pinchtab/internal/cli"
"github.com/pinchtab/pinchtab/internal/cli/apiclient"
"github.com/spf13/cobra"
)
func PDF(client *http.Client, base, token string, cmd *cobra.Command) {
params := url.Values{}
params.Set("raw", "true")
outFile, _ := cmd.Flags().GetString("output")
tabID, _ := cmd.Flags().GetString("tab")
if v, _ := cmd.Flags().GetBool("landscape"); v {
params.Set("landscape", "true")
}
if v, _ := cmd.Flags().GetString("scale"); v != "" {
params.Set("scale", v)
}
if v, _ := cmd.Flags().GetString("paper-width"); v != "" {
params.Set("paperWidth", v)
}
if v, _ := cmd.Flags().GetString("paper-height"); v != "" {
params.Set("paperHeight", v)
}
if v, _ := cmd.Flags().GetString("margin-top"); v != "" {
params.Set("marginTop", v)
}
if v, _ := cmd.Flags().GetString("margin-bottom"); v != "" {
params.Set("marginBottom", v)
}
if v, _ := cmd.Flags().GetString("margin-left"); v != "" {
params.Set("marginLeft", v)
}
if v, _ := cmd.Flags().GetString("margin-right"); v != "" {
params.Set("marginRight", v)
}
if v, _ := cmd.Flags().GetString("page-ranges"); v != "" {
params.Set("pageRanges", v)
}
if v, _ := cmd.Flags().GetBool("prefer-css-page-size"); v {
params.Set("preferCSSPageSize", "true")
}
if v, _ := cmd.Flags().GetBool("display-header-footer"); v {
params.Set("displayHeaderFooter", "true")
}
if v, _ := cmd.Flags().GetString("header-template"); v != "" {
params.Set("headerTemplate", v)
}
if v, _ := cmd.Flags().GetString("footer-template"); v != "" {
params.Set("footerTemplate", v)
}
if v, _ := cmd.Flags().GetBool("generate-tagged-pdf"); v {
params.Set("generateTaggedPDF", "true")
}
if v, _ := cmd.Flags().GetBool("generate-document-outline"); v {
params.Set("generateDocumentOutline", "true")
}
if v, _ := cmd.Flags().GetBool("file-output"); v {
params.Del("raw")
params.Set("output", "file")
}
if v, _ := cmd.Flags().GetString("path"); v != "" {
params.Set("path", v)
}
if outFile == "" {
outFile = fmt.Sprintf("page-%s.pdf", time.Now().Format("20060102-150405"))
}
var data []byte
if tabID != "" {
data = apiclient.DoGetRaw(client, base, token, fmt.Sprintf("/tabs/%s/pdf", tabID), params)
} else {
data = apiclient.DoGetRaw(client, base, token, "/pdf", params)
}
if data == nil {
return
}
if err := os.WriteFile(outFile, data, 0600); err != nil {
cli.Fatal("Write failed: %v", err)
}
fmt.Println(cli.StyleStdout(cli.SuccessStyle, fmt.Sprintf("Saved %s (%d bytes)", outFile, len(data))))
}
|