ααΆαααααΆαα’αααΈαααααΆααα "ααΌα" (Sone)
αα αααα»ααα·ααααΌααααααα αα α»αααααα, ααΆααααααΎαααΌαααΆα αα·α PDF αα ααΎαααΆαααΈααα (Server) ααΊααΆαααααΌαααΆαααααααΆαααα½αα α’αααα’αα·ααααααααααα»ααΆααααα ααα αααΆαα αααα α ααΆααααααΎααααααΆααααα½ααααααααΆ "ααΌα" (Sone) αααααααΎα±ααααΆαααΆααααααΆααααααΆααααα½αα
α αΌααα½αααΆαα½ααα½αααΎααααα»α Telegram ααΎααααΈααα½αααΆαααααααΆααα ααααΌα ααΊααΆααΆαααααααααααααΆααααααΆ "αααααΌαα’αααΈααααααΆαααΆα ααααααααΆαα±ααααΎαααΆαα»α, ααΆααααΆααα¬ααΆααΌα"α αααααααααααα»ααααα αΆααααΈααααααααααααααααΆααα ααααα½αα’αααα’αα·αααααααααα»αααΆααααα αααΆαα»ααΆααΆα±ααααααΆαααΆααΌαααΆαα¬ PDF αααΆαααΆααααα½αα
αααααααα·ααααααα "ααΌα"
αααααΆααααααααααΌαααΆααα ααΆα‘αΎααααααΆαα₯αααα·ααααΈ SwiftUI αα·ααααααααΎααΆααααααΎαααΌαααΆααα·α PDF αααααααΎααααΆααα·α αα½α αα·αααΆαααααα·αααααΆααααααα αααααααα·αααααααα½αα±ααα αΆααα’αΆααααααααααααΆααΆαααΌα ααΆα
- ααΆααααα αααΆααααααααα Flex Layout - ααααΎααααΆαααα αα αααα·ααααΆ yoga-layout ααααα½αα±ααααΆααααα αααΆαα»ααΆααΆαα ααΎαααααααΆααααααΆααααα½α
- ααΆαααα SVG - ααααα·αα αΆαααΆα ααααααααΆ raster ααΆαααααααααΆααα Canvg
- Squircle Rounded Corner - ααΆααααααΎααααα»αααΆαααΌαααΌα ααααΆα iOS
- ααΆααααααΉαα’ααααα - ααΆααααααΆααααααΉαααΆαααααα, ααΆαααααΆα, αααααΆα αα·ααααααΆααααααΆααααΆααΆααααα, αα, α‘αΆα αα·αααΆααΆααααααααα
- Font Tracing - ααα½αααΆααααααΈαα»αααα’αααααααααααΌαααΆαααααΎαααα»αααΌα
- ααΆααΆα (Table) - ααΆααααααΆααααααΎαααΆααΆαααΆαα
- ααΆααααααΎαααα Linear Gradient αα·α Repeating Linear Gradient - αααααΆαααααααΎαααΆαααΆαααΆααααααΆααααΆα
- Composable - α’αΆα αααα ααααΆαααΆαααΆαααΌα α α αΎαααααααααΎααααΆααα‘αΎααα·αααΆα
- αααααΎαααΆ SVG, PDF αα·αααΌαααΆα - α’αΆα αααααΎαααααααααΆααααααααααααααααΆ
ααααααααΎααααΆαα
ααΆαααααΎααααΆαα "ααΌα" ααΊααΆααααα½αααΆααα ααααΌα α’αααααααΌαααα‘αΎαααΆααΆαααα npmα
npm install sonejsαααααΆαααα α’αααα’αΆα αααααααΌαααΌα ααΆααααααα
import fs from "node:fs/promises"; import { renderAsCanvas, Column, Text, Span } from "sonejs"; function Document() { return Column( Text( "Hello world! ", Span("Sone.") .color("orange") .weight("bold") .shadow("2px 2px 0px rgba(0,0,0,.2)"), " ???" ).size(34), ).padding(40); } // αααααΆαα»αααΆααΌαααΆα const canvas = renderAsCanvas(Document(), undefined, undefined); await fs.writeFile("test/output.png", canvas.toBuffer("image/png")); // αααααΆαα»αααΆ PDF const canvas2 = renderAsCanvas(Document(), undefined, undefined, "pdf"); await fs.writeFile("test/output.pdf", canvas2.toBuffer("application/pdf"));ααΆαααΆααααααΆααΆααααα
α’αααΈααααα½αα±ααααααααααΆααααΊ "ααΌα" ααΆαααΆαααΆαααααααΆαααα’αααααΎααααααΆααααΆααΆαααααα α’αααα’αΆα ααααΎαα»αααα’αααααααααααααααααΌα ααΆ Moul, Battambang α¬ Inter Khmer ααΎααααΈαααααΎαα―αααΆααααααΆαααΆααα’ααααααα·αααΌαααΆαα α§ααΆα αααα
function Document() { return Column( Text( "αααααααα ", Span("αα·ααΈαα»ααα αααααααααα ").color("green"), Span("ααα αα»α·α αα»αααΆ").font("Moul").color("red").size(23), Span(" ααΆααααααααΉαααα·ααααΎαα αα "), Span(" αααααα αα ααΈα’α¦ααααΆ").weight(700), Span( "αααα αααααα αΆαααααα ααααα»ααααα ααααα»ααααααΆαα·ααΆα αα·ααααααααα·ααΌααα»αααΆαα‘α¦α ααΆαααα αΌααα½α αα αααα»ααααααα·ααΈααα", ), Span(" ααα αα»α·α αα»ααα»α ").font("Moul").color("salmon").size(27), Span("α").color("orange"), ) .font("Inter Khmer") .size(32) .align("justify") .color("#333") .lineHeight(1.45) ) .maxWidth(700) .padding(40); }ααΆαααΆααααα’ααααααααααααααα½ααααα αΌαααΆααααΆααααααΉααααααΆα (justify) αααααΆααΏααααΆααααα αΆαααααΆααααΆααΆαα·ααααα‘αΆααΆααα
ααα ααααΈααααα·ααααΆα
"ααΌα" ααΊααΆαααααΆαααααααΆααααααΆαα»αααααααΎαα‘αΎααααα’αααα’αα·ααααααααααα»ααΆ ααααααααααΆααααα αΆαα·ααΆααααα»αααΆααααααΎαααΌαααΆααα·α PDF αα ααΎαααΆαααΈαααα ααΆαααα αΆαααΈαααααααΆαααααααα·ααα·ααααααααΆααααΆαααΆααααααΆααΆααααα αα αα·αα‘αΆα αααααΆααΉαααΆαααα·αααααΌαααΆαααα α·ααααα»αααΆαααα αααα»ααααααΆαααααααααααα
αααααΆααα’ααααααα αΆααα’αΆαααααα α’αααα’αΆα αααααααααααααααα·αααΆααααααααΆααααααααΈ GitHub α¬ααααΎααΆααΆαααα npmα ααΆααΆα§ααΆα αααααα’αα½αααααΆαα’αα·αααααααα αα αααα·ααααΆαααα’αααααααΆαααααα»ααΆ αααα’αΆα ααααΎααααΆααααΆααααα ααΎαα·αααααα
ααΎααΆαααααααΆααααααα α¬ ααααααΆαααΌαααΆαααα (1) αααααΌαααααα 098282890 (α¨-α‘α‘ααααΉα & α‘-α₯ααααΆα
) (2) α’ααΈαααα [email protected]
(3) LINE, VIBER: 098282890 (4)
ααΆαααααααααα ααααααα»ααααααα‘αΌα https://www.facebook.com/khmerload
α
αΌαα
α·αααααααα αα
αα
αααα·ααααΆ αα·αα
ααααααΎααΆαααΆαα½ααααααα‘αΌααααα»ααααααααα ααΌαααααΎ CV αα [email protected]