Uses TSPdfEnumerations; {$IFDEF LINUX} separator := "/"; {$ELSE} separator := "\\"; {$ENDIF} alias := ""; path := ""; InitCmdParams(alias, path); output_file := "chinese_font_demo.pdf"; output_file := path + separator + output_file; zw := path + separator + "mbtext" + separator + "cp936.txt"; readfile(rwraw(), alias, zw, 0, 1024*1024, samp_text); pdf := new PdfFile(); PAGE_HEIGHT := 210; pdf.SetCompressionMode(TSPdfEnumerations.COMP_ALL); // declaration for using Japanese font, encoding. pdf.UseCNSFonts(); pdf.UseCNSEncodings(); detail_font := array(); detail_font[0] := pdf.GetFont("SimSun", "GBK-EUC-H"); detail_font[1] := pdf.GetFont("SimSun,Bold", "GBK-EUC-H"); detail_font[2] := pdf.GetFont("SimSun,Italic", "GBK-EUC-H"); detail_font[3] := pdf.GetFont("SimSun,BoldItalic", "GBK-EUC-H"); detail_font[4] := pdf.GetFont("SimHei", "GBK-EUC-H"); detail_font[5] := pdf.GetFont("SimHei,Bold", "GBK-EUC-H"); detail_font[6] := pdf.GetFont("SimHei,Italic", "GBK-EUC-H"); detail_font[7] := pdf.GetFont("SimHei,BoldItalic", "GBK-EUC-H"); // Set page mode to use outlines. pdf.SetPageMode(TSPdfEnumerations.PAGE_MODE_USE_OUTLINE); // create outline root. root := pdf.CreateOutline(nil, "Chinese font demo", nil); root.SetOpened(true); for i := 0 to 7 do begin // add a new page object. page := pdf.AddPage(); // create outline entry outline := pdf.CreateOutline(root, detail_font[i].GetFontName(), nil); dst := page.CreateDestination(); outline.SetDestination(dst); title_font := pdf.GetFont("Helvetica", ""); page.SetFontAndSize(title_font, 10); page.BeginText(); // move the position of the text to top of the page. page.MoveTextPos(10, 190); page.ShowText(detail_font[i].GetFontName()); page.SetFontAndSize(detail_font[i], 15); page.MoveTextPos(10, -20); page.ShowText("abcdefghijklmnopqrstuvwxyz"); page.MoveTextPos(0, -20); page.ShowText("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); page.MoveTextPos(0, -20); page.ShowText("1234567890"); page.MoveTextPos(0, -20); page.SetFontAndSize(detail_font[i], 10); page.ShowText(samp_text); page.MoveTextPos(0, -18); page.SetFontAndSize(detail_font[i], 16); page.ShowText(samp_text); page.MoveTextPos(0, -27); page.SetFontAndSize(detail_font[i], 23); page.ShowText(samp_text); page.MoveTextPos(0, -36); page.SetFontAndSize(detail_font[i], 30); page.ShowText(samp_text); p := page.GetCurrentTextPos(); // finish to print text. page.EndText(); page.SetLineWidth(0.5); x_pos := 20; for j:=0 to length(samp_text)/2 do begin page.MoveTo(x_pos, p[1] - 10); page.LineTo(x_pos, p[1] - 12); page.Stroke(); x_pos := x_pos + 30; end page.SetWidth(p[0] + 20); page.SetHeight(PAGE_HEIGHT); page.MoveTo(10, PAGE_HEIGHT - 25); page.LineTo(p[0] + 10, PAGE_HEIGHT - 25); page.Stroke(); page.MoveTo(10, PAGE_HEIGHT - 85); page.LineTo(p[0] + 10, PAGE_HEIGHT - 85); page.Stroke(); page.MoveTo(10, p[1] - 12); page.LineTo(p[0] + 10, p[1] - 12); page.Stroke(); end // save the document to a file err := pdf.SaveToFile(alias, output_file); echo "SaveToFile::\t", "err := ", format("%x", err), "\toutput_file := ", output_file, "\n"; return;