diff --git a/README.md b/README.md index 5cb09a7..9e60fe7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,20 @@ # report-server-ts - เป็น Web API ออกแบบมาเพื่อสร้างเอกสาร สามารถใช้ frontend โดยตรง เพื่อจะได้ไม่ต้องเขียนโปรแกรมทำเอกสารเฉพาะแต่ละตัวออกมา ปรับปรุงของเดิมจาก -เขียนใหม่เป็น TypeScript ตัด pandoc ออก เริ่มแรกลองใช้ bun แทน node รองรับ TypeScript โดยไม่ต้องตั้งค่า แต่มีปัญหากับ libreoffice-file-converter ต้องแก้ค่าใน package.json และ docker-template คาดว่าเป็นปัญหาจาก eval ทำให้ ส่วน EXEC กับ custom function ทำงานไม่ได้ เลยกลับมาใช้ node ตั้งค่าของ TypeScript [ตามเวปนี้](https://www.geeksforgeeks.org/how-to-use-express-in-typescript/) ให้ใช้ ES module ได้ด้วย +เป็น Web API ออกแบบมาเพื่อสร้างเอกสาร สามารถใช้ frontend โดยตรง เพื่อจะได้ไม่ต้องเขียนโปรแกรมทำเอกสารเฉพาะแต่ละตัวออกมา ปรับปรุงของเดิมจาก + + +## Feature & Change +- แก้ไขจากเดิมตัวเดิมเป็น JavaScript เป็น TypeScript ตัด pandoc ออก +- ใช้ docx xlsx เป็น template เพื่อสร้างเอกสารคล้าย Mail Merge ลูกค้าออกแบบเองได้ +- รายงานเป็นไฟล์แบบเดียวกับ template หรือแปลงเป็น pdf หรือฟอร์แม็ตอื่นๆได้ +- แปลงไฟล์จาก MS Office เป็น PDF +- โค้ดมีการ obfuscator +- API document ด้วย swagger +- มีโปรแกรมช่วยทดสอบ template แบบง่ายๆให้ +- Docker Image จะใช้แบบ Standalone หรือเป็น Microservice ร่วมกับโปรเจ็กอื่นๆได้ ใช้งานทันที + +## ติดตั้ง +clone project แล้วไปหัวข้อใช้งานได้เลย หัวนี้ไว้เพื่ออ้างอิงเท่านั้น +ตั้งค่าของ TypeScript [ตามเวปนี้](https://www.geeksforgeeks.org/how-to-use-express-in-typescript/) ให้ใช้ ES module ได้ด้วย ```bash npm i express @@ -14,7 +28,7 @@ cd node_modules/yaqrcode wget https://raw.githubusercontent.com/zenozeng/node-yaqrcode/master/index.d.ts ``` -# การใช้งาน +## การใช้งาน ดู scripts ใน package.json และ compose.yaml ```bash npm run dev @@ -26,8 +40,11 @@ npm run build:docker docker compose up -d ``` -# ทดสอบ template -ไปที่โฟลเดอร์ test-run จะมีโค้ดเพื่อทดสอบ template docx และ xlsx อย่างง่าย ใช้ค่า default ได้เลย สามารถทดสอบการแปลงไปไฟล์แบบต่างๆที่ Libreoffice รองรับได้ ควรทดสอบรูปแบบข้อมูล(json) ให้เข้ากับ template(docx,xlsx) ก่อนใช้งานเพราะ error log จะแสดงที่เซิร์เวอร์เท่านั้น +## ทดสอบ template +ไปที่โฟลเดอร์ test-run มีโปรแกรมเพื่อทดสอบ template ที่ออกมามาก่อน ไปว่างในเซิร์ฟเวอร์ ใช้ค่า default ได้เลย แปลงไปไฟล์แบบต่างๆที่ Libreoffice รองรับได้ ควรทดสอบรูปแบบข้อมูล(json) ให้เข้ากับ template(docx,xlsx) ถ้าเกิดปัญหา ถ้าค่าไม่ครบ template แบบ docx จะ error log ที่เซิร์ฟเวอร์ ส่วน xlsx ไม่แจ้งปัญหา แค่ไม่แสดงค่านั้นๆ คู่มือการใช้งานที่สมบูรณ์ให้ไปที่เวปของ library ที่ใช้ +[docx-templates](https://www.npmjs.com/package/docx-templates) และ +[xlsx-template-next](https://www.npmjs.com/package/xlsx-template-next) + ``` bash $ npx ts-node docx-template.ts Output extension(docx,pdf,odt): pdf @@ -40,8 +57,6 @@ JSON data path(./xlsx.json): Base path of templates-docx(..): ``` - - # Build docker ```bash docker build -t docker.frappet.com/demo/report-server . @@ -49,9 +64,11 @@ docker push docker.frappet.com/demo/report-server docker run --name rserver -p 80:3000 docker.frappet.com/demo/report-server ``` -## report-templates/docx +# Bun Note +เริ่มแรกในการพอร์ตจาก JavaScript ลองใช้ Bun(TypeScript) แทน Node.js ตัว Bun ค่อนข้างน่าประทับใจใช้ TypeScript โดยตรงไม่ต้องตั้งค่า หรือติดตั้งเพิ่ม แต่มีปัญหากับ libreoffice-file-converter ต้องแก้ค่าใน package.json -ใช้ library [docx-templates](https://www.npmjs.com/package/docx-templates) รับข้อมูลใน json กับ MS Word (template) เพิ่อสร้างเอกสาร MS Word สำหรับการใช้งาน PDF จะใช้ LibreOffice ในการแปลงจาก docx เป็น pdf เพื่อจะได้ตัดคำภาษาไทยได้ +docker-template คาดว่าเป็นปัญหาจาก eval ทำให้ ส่วน EXEC กับ custom function ทำงานไม่ได้ เลยกลับมาใช้ node -## report-templates/xlsx -comming soon +## Todo +- รองรับ Authentication Header เพื่อให้ยูสเซอร์ในระบบใช้งานได้เท่านั้น +- หาทางสร้างเอกสารจาก text เช่น Markdown เป็นเอกสาร MS Office