PDF-Ausgabe hinzugefügt
This commit is contained in:
parent
f2308d25d6
commit
e9a1b087b8
@ -24,6 +24,7 @@ Eine `config.json` könnte z.B. wie folgt aussehen:
|
|||||||
Zum kompilieren folgende Go-Abhängigkeiten installieren:
|
Zum kompilieren folgende Go-Abhängigkeiten installieren:
|
||||||
- `go get github.com/gorilla/mux`
|
- `go get github.com/gorilla/mux`
|
||||||
- `go get gopkg.in/src-d/go-git.v4`
|
- `go get gopkg.in/src-d/go-git.v4`
|
||||||
|
- 'go get github.com/mandolyte/mdtopdf'
|
||||||
|
|
||||||
Die Build-Scripte liegen im Unterordner `build`
|
Die Build-Scripte liegen im Unterordner `build`
|
||||||
|
|
||||||
|
33
main.go
33
main.go
@ -15,6 +15,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
"github.com/mandolyte/mdtopdf"
|
||||||
"gopkg.in/src-d/go-git.v4"
|
"gopkg.in/src-d/go-git.v4"
|
||||||
"gopkg.in/src-d/go-git.v4/plumbing/object"
|
"gopkg.in/src-d/go-git.v4/plumbing/object"
|
||||||
)
|
)
|
||||||
@ -64,7 +65,8 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
router := mux.NewRouter()
|
router := mux.NewRouter()
|
||||||
router.HandleFunc("/p/{pagename:.*}", getRawPage).Methods("GET")
|
router.HandleFunc("/_api/md/{pagename:.*}", getRawPage).Methods("GET")
|
||||||
|
router.HandleFunc("/_api/pdf/{pagename:.*}", getPDFPage).Methods("GET")
|
||||||
router.HandleFunc("/{pagename:.*}", getHTMLPage).Methods("GET")
|
router.HandleFunc("/{pagename:.*}", getHTMLPage).Methods("GET")
|
||||||
router.HandleFunc("/{pagename:.*}", postHTMLPage).Methods("POST")
|
router.HandleFunc("/{pagename:.*}", postHTMLPage).Methods("POST")
|
||||||
|
|
||||||
@ -72,6 +74,35 @@ func main() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getPDFPage(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
|
params := mux.Vars(r)
|
||||||
|
pPageName := params["pagename"] + ".md"
|
||||||
|
// Hack für anzeige der start.md wenn / aufgerufen wird
|
||||||
|
if pPageName == ".md" {
|
||||||
|
pPageName = "start.md"
|
||||||
|
}
|
||||||
|
|
||||||
|
content, err := ioutil.ReadFile(path.Join(config.DataPath, pPageName))
|
||||||
|
check(err)
|
||||||
|
pdfRender := mdtopdf.NewPdfRenderer("", "", "./tmp.pdf", "")
|
||||||
|
// get the unicode translator
|
||||||
|
tr := pdfRender.Pdf.UnicodeTranslatorFromDescriptor("cp1252")
|
||||||
|
|
||||||
|
pdfRender.Normal = mdtopdf.Styler{Font: "Arial", Style: "",
|
||||||
|
Size: 8, Spacing: 1,
|
||||||
|
TextColor: mdtopdf.Color{0, 0, 0},
|
||||||
|
FillColor: mdtopdf.Color{255, 255, 255}}
|
||||||
|
|
||||||
|
err = pdfRender.Process([]byte(tr(string(content))))
|
||||||
|
check(err)
|
||||||
|
|
||||||
|
pdfcontent, err := ioutil.ReadFile("./tmp.pdf")
|
||||||
|
check(err)
|
||||||
|
w.Header().Set("Content-Type", "application/pdf")
|
||||||
|
w.Write(pdfcontent)
|
||||||
|
}
|
||||||
|
|
||||||
func getHTMLPage(w http.ResponseWriter, r *http.Request) {
|
func getHTMLPage(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
params := mux.Vars(r)
|
params := mux.Vars(r)
|
||||||
|
@ -118,6 +118,7 @@
|
|||||||
<li id="btnEditpage"><a href="#" onclick="EditPage()">Edit</a></li>
|
<li id="btnEditpage"><a href="#" onclick="EditPage()">Edit</a></li>
|
||||||
<li id="btnPreviewpage"><a href="#" onclick="PreviewPage()">Preview</a></li>
|
<li id="btnPreviewpage"><a href="#" onclick="PreviewPage()">Preview</a></li>
|
||||||
<li id="btnSavepage"><a href="#" onclick="SavePage()">Save</a></li>
|
<li id="btnSavepage"><a href="#" onclick="SavePage()">Save</a></li>
|
||||||
|
<li id="btnPDFgen"><a href="#" onclick="PDFGen()">PDF</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div><!--/.nav-collapse -->
|
</div><!--/.nav-collapse -->
|
||||||
</div>
|
</div>
|
||||||
@ -198,7 +199,7 @@
|
|||||||
$.ajax({
|
$.ajax({
|
||||||
method: "GET",
|
method: "GET",
|
||||||
contentType:'application/json; charset=utf-8',
|
contentType:'application/json; charset=utf-8',
|
||||||
url: '/p/'+window.location.pathname,
|
url: '/_api/md/'+window.location.pathname,
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
data: "",
|
data: "",
|
||||||
success: function(content){
|
success: function(content){
|
||||||
@ -213,7 +214,7 @@
|
|||||||
$.ajax({
|
$.ajax({
|
||||||
method: "GET",
|
method: "GET",
|
||||||
contentType:'application/json; charset=utf-8',
|
contentType:'application/json; charset=utf-8',
|
||||||
url: '/p/sidebar',
|
url: '/_api/md/sidebar',
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
data: "",
|
data: "",
|
||||||
success: function(content){
|
success: function(content){
|
||||||
@ -235,7 +236,7 @@
|
|||||||
$.ajax({
|
$.ajax({
|
||||||
method: "GET",
|
method: "GET",
|
||||||
contentType:'application/json; charset=utf-8',
|
contentType:'application/json; charset=utf-8',
|
||||||
url: '/p/'+window.location.pathname,
|
url: '/_api/md/'+window.location.pathname,
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
data: "",
|
data: "",
|
||||||
success: function(content){
|
success: function(content){
|
||||||
@ -279,6 +280,10 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function PDFGen() {
|
||||||
|
// Öffnet die PDF über die API einfach in einem neuen Fenster
|
||||||
|
window.open('/_api/pdf'+window.location.pathname);
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
|
Loading…
Reference in New Issue
Block a user