Mercurial > mercurial > hgweb_golang.cgi
diff src/kaigo/Nk/nk.go @ 42:c58172a59534
bug fix.
author | pyon@macmini |
---|---|
date | Tue, 10 Mar 2020 21:12:29 +0900 |
parents | 34a474fb83c3 |
children | 17e042fc8a33 |
line wrap: on
line diff
--- a/src/kaigo/Nk/nk.go Wed Mar 04 23:46:59 2020 +0900 +++ b/src/kaigo/Nk/nk.go Tue Mar 10 21:12:29 2020 +0900 @@ -1,7 +1,7 @@ /* nk.go: Nintei Kekka - Last Change: 2020-01-24 金 09:18:04. + Last Change: 2020-03-10 火 16:38:20. */ package main @@ -102,7 +102,7 @@ return (api_result >= 0); } -int xdwaddatn(const char* file, char* atnlist) { +int xdwhbaddatn(const char* file, char* atnlist) { char in_path[_MAX_PATH]; _fullpath(in_path, file, _MAX_PATH); @@ -275,6 +275,45 @@ return 0; } +int xdwerase(const char* in_file, const char* ktxt, const char* htxt) { + int x = 20000; + int y = 3685; + int sz = 480; + + char in_path[_MAX_PATH]; + _fullpath(in_path, in_file, _MAX_PATH); + + XDW_DOCUMENT_HANDLE h = NULL; + XDW_OPEN_MODE_EX mode = {sizeof(XDW_OPEN_MODE_EX), XDW_OPEN_UPDATE, XDW_AUTH_NODIALOGUE}; + + int api_result = XDW_OpenDocumentHandle(in_path, &h, (XDW_OPEN_MODE*)&mode); + if (api_result < 0) return api_result; + + XDW_DOCUMENT_INFO info = {sizeof(XDW_DOCUMENT_INFO), 0, 0, 0}; + XDW_GetDocumentInformation(h, &info); + + XDW_FOUND_HANDLE pFoundHandle = NULL; + for (int i = 0; i < info.nPages; i++) { + api_result = XDW_FindTextInPage(h, i + 1, htxt, NULL, &pFoundHandle, NULL); + if (pFoundHandle == NULL) continue; + + api_result = XDW_FindTextInPage(h, i + 1, ktxt, NULL, &pFoundHandle, NULL); + if (pFoundHandle == NULL) continue; + + XDW_ANNOTATION_HANDLE annoation; + int api_result = XDW_AddAnnotation(h, XDW_AID_TEXT, i + 1, x, y, NULL, &annoation, NULL); + if (api_result < 0) return api_result; + + api_result = XDW_SetAnnotationAttribute(h, annoation, XDW_ATN_Text, XDW_ATYPE_STRING, " ", 0, NULL); + api_result = XDW_SetAnnotationAttribute(h, annoation, XDW_ATN_FontSize, XDW_ATYPE_INT, (char*)&sz, 0, NULL); + } + + XDW_SaveDocument(h, NULL); + XDW_CloseDocumentHandle(h, NULL); + + return 0; +} + int xdw2pdf(const char* xdwfile, const char* pdffile) { char in_path[_MAX_PATH], out_path[_MAX_PATH]; _fullpath(in_path, xdwfile, _MAX_PATH); @@ -346,7 +385,7 @@ ) var ( - ver = "0.1" + ver = "0.2" flg_hb int flg_time bool @@ -368,7 +407,7 @@ hb string // 発番 fw, hs, kt = "", "", "kttemp.xdw" // 負担割合証, 被保険者証, 結果通知 - step, totalstep = 1, 13 + step, totalstep = 1, 14 ) type Annotation struct { @@ -572,7 +611,7 @@ /* MAKE SORT-TABEL */ print_step("並び順の決定") - re_hhs := regexp.MustCompile(`05((2126)|(2159)|(4346))0[1238]\d{8}`) + re_hhs := regexp.MustCompile(`0[1238]\d{8}`) re_kaigo := regexp.MustCompile(`要((介護)|(支援)).`) hash_fw := make(map[string]int) // 負担割合証発行者のハッシュ @@ -607,7 +646,7 @@ order := "" for _, s := range sorttable { t := strings.Split(s, "#") - order += ":" + t[len(t)-1][6:] + order += ":" + t[len(t)-1] } order = strings.Replace(order, ":", "", 1) @@ -626,11 +665,18 @@ C.xdwsort(C.CString(kt), C.CString(kt_sorted), C.CString(order), C.CString(tmpdir), C.CString("kt")) step_start = print_time(step_start) - /* ADD ANNOTATION */ + /* ADD HATSUBAN */ print_step("発番印字") al := strings.Join(conf.AnnotationList(), ":") al, _, _ = transform.String(japanese.ShiftJIS.NewEncoder(), al) - C.xdwaddatn(C.CString(kt_sorted), C.CString(al)) + C.xdwhbaddatn(C.CString(kt_sorted), C.CString(al)) + step_start = print_time(step_start) + + /* ERASE HOUKATSU */ + print_step("包括除去") + ktxt, _, _ := transform.String(japanese.ShiftJIS.NewEncoder(), "要介護") + htxt, _, _ := transform.String(japanese.ShiftJIS.NewEncoder(), "包括支援センター") + C.xdwerase(C.CString(hs_sorted), C.CString(ktxt), C.CString(htxt)) step_start = print_time(step_start) /* OPTIMIZE OUTPUT-FILE */ @@ -654,11 +700,10 @@ t := strings.Split(s, "#") u := strings.ReplaceAll(t[1], ":", ",") u, _, _ = transform.String(japanese.ShiftJIS.NewEncoder(), u) - c := t[2][0:6] - h := t[2][6:16] + h := t[2] n, _, _ := transform.String(japanese.ShiftJIS.NewEncoder(), hash_hhs[h]) - // seq, city, hno, name, kaigo, fw, kyotaku - fmt.Fprintf(fcsv, "%04d,%s,%s,%s,%s\n", i + 1, c, h, n, u) + // seq, hno, name, kaigo, fw, kyotaku + fmt.Fprintf(fcsv, "%04d,%s,%s,%s\n", i + 1, h, n, u) } if err := fcsv.Close(); err != nil { log.Fatal(err)