122 lines
3.1 KiB
Plaintext
122 lines
3.1 KiB
Plaintext
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;
|