Skip to content

Commit 6b5bb0b

Browse files
committed
Create Tab TestSuite, minor improvements in Paragraph
1 parent d1cddcb commit 6b5bb0b

File tree

2 files changed

+65
-2
lines changed

2 files changed

+65
-2
lines changed

samples/TestSuite_Style_Paragraph.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
$section->addText('See also: Style > Numbering');
2222
$section->addText('See also: Style > Shading');
2323
$section->addText('See also: Style > Spacing');
24-
$section->addText('See also: Style > Tabs');
24+
$section->addText('See also: Style > Tab');
2525
$section->addTextBreak();
2626

2727
// Default Paragraph.
@@ -44,6 +44,7 @@
4444
$section->addText('Both (aka justify). Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.', null, ['alignment' => Jc::BOTH]);
4545
$section->addText('For NumTab and Number Level. See Style > Numbering', null, ['alignment' => Jc::NUM_TAB]);
4646
$section->addText('Distributed. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.', null, ['alignment' => Jc::DISTRIBUTE]);
47+
$section->addText('Lef for compare. Lorem Ipsum คือ เนื้อหาจำลองแบบเรียบๆ ที่ใช้กันในธุรกิจงานพิมพ์หรืองานเรียงพิมพ์ มันได้กลายมาเป็นเนื้อหาจำลองมาตรฐานของธุรกิจดังกล่าวมาตั้งแต่ศตวรรษที่ 16 เมื่อเครื่องพิมพ์โนเนมเครื่องหนึ่งนำรางตัวพิมพ์มาสลับสับตำแหน่งตัวอักษรเพื่อทำหนังสือตัวอย่าง Lorem Ipsum อยู่ยงคงกระพันมาไม่ใช่แค่เพียงห้าศตวรรษ แต่อยู่มาจนถึงยุคที่พลิกโฉมเข้าสู่งานเรียงพิมพ์ด้วยวิธีทางอิเล็กทรอนิกส์ และยังคงสภาพเดิมไว้อย่างไม่มีการเปลี่ยนแปลง มันได้รับความนิยมมากขึ้นในยุค ค.ศ. 1960 เมื่อแผ่น Letraset วางจำหน่ายโดยมีข้อความบนนั้นเป็น Lorem Ipsum และล่าสุดกว่านั้น คือเมื่อซอฟท์แวร์การทำสื่อสิ่งพิมพ์ (Desktop Publishing) อย่าง Aldus PageMaker ได้รวมเอา Lorem Ipsum เวอร์ชั่นต่างๆ เข้าไว้ในซอฟท์แวร์ด้วย', ['language' => 'th-TH'], ['alignment' => Jc::START]);
4748
$section->addText('Thai Distributed. Lorem Ipsum คือ เนื้อหาจำลองแบบเรียบๆ ที่ใช้กันในธุรกิจงานพิมพ์หรืองานเรียงพิมพ์ มันได้กลายมาเป็นเนื้อหาจำลองมาตรฐานของธุรกิจดังกล่าวมาตั้งแต่ศตวรรษที่ 16 เมื่อเครื่องพิมพ์โนเนมเครื่องหนึ่งนำรางตัวพิมพ์มาสลับสับตำแหน่งตัวอักษรเพื่อทำหนังสือตัวอย่าง Lorem Ipsum อยู่ยงคงกระพันมาไม่ใช่แค่เพียงห้าศตวรรษ แต่อยู่มาจนถึงยุคที่พลิกโฉมเข้าสู่งานเรียงพิมพ์ด้วยวิธีทางอิเล็กทรอนิกส์ และยังคงสภาพเดิมไว้อย่างไม่มีการเปลี่ยนแปลง มันได้รับความนิยมมากขึ้นในยุค ค.ศ. 1960 เมื่อแผ่น Letraset วางจำหน่ายโดยมีข้อความบนนั้นเป็น Lorem Ipsum และล่าสุดกว่านั้น คือเมื่อซอฟท์แวร์การทำสื่อสิ่งพิมพ์ (Desktop Publishing) อย่าง Aldus PageMaker ได้รวมเอา Lorem Ipsum เวอร์ชั่นต่างๆ เข้าไว้ในซอฟท์แวร์ด้วย', ['language' => 'th-TH'], ['alignment' => Jc::THAI_DISTRIBUTE]);
4849
$section->addText('High Kashida (Arabic Script). هناك حقيقة مثبتة منذ زمن طويل وهي أن المحتوى المقروء لصفحة ما سيلهي القارئ عن التركيز على الشكل الخارجي للنص أو شكل توضع الفقرات في الصفحة التي يقرأها. ولذلك يتم استخدام طريقة لوريم إيبسوم لأنها تعطي توزيعاَ طبيعياَ -إلى حد ما- للأحرف عوضاً عن استخدام "هنا يوجد محتوى نصي، هنا يوجد محتوى نصي" فتجعلها تبدو (أي الأحرف) وكأنها نص مقروء. العديد من برامح النشر المكتبي وبرامح تحرير صفحات الويب تستخدم لوريم إيبسوم بشكل إفتراضي كنموذج عن النص، وإذا قمت بإدخال "lorem ipsum" في أي محرك بحث ستظهر العديد من المواقع الحديثة العهد في نتائج البحث. على مدى السنين ظهرت نسخ جديدة ومختلفة من نص لوريم إيبسوم، أحياناً عن طريق الصدفة، وأحياناً عن عمد كإدخال بعض العبارات الفكاهية إليها.', ['language' => 'ar-SA', 'rtl' => true], ['alignment' => Jc::HIGH_KASHIDA]);
4950
$section->addText('Medium Kashida (Arabic Script). هناك حقيقة مثبتة منذ زمن طويل وهي أن المحتوى المقروء لصفحة ما سيلهي القارئ عن التركيز على الشكل الخارجي للنص أو شكل توضع الفقرات في الصفحة التي يقرأها. ولذلك يتم استخدام طريقة لوريم إيبسوم لأنها تعطي توزيعاَ طبيعياَ -إلى حد ما- للأحرف عوضاً عن استخدام "هنا يوجد محتوى نصي، هنا يوجد محتوى نصي" فتجعلها تبدو (أي الأحرف) وكأنها نص مقروء. العديد من برامح النشر المكتبي وبرامح تحرير صفحات الويب تستخدم لوريم إيبسوم بشكل إفتراضي كنموذج عن النص، وإذا قمت بإدخال "lorem ipsum" في أي محرك بحث ستظهر العديد من المواقع الحديثة العهد في نتائج البحث. على مدى السنين ظهرت نسخ جديدة ومختلفة من نص لوريم إيبسوم، أحياناً عن طريق الصدفة، وأحياناً عن عمد كإدخال بعض العبارات الفكاهية إليها.', ['language' => 'ar-SA', 'rtl' => true], ['alignment' => Jc::MEDIUM_KASHIDA]);
@@ -52,6 +53,7 @@
5253

5354
// Bidirectional.
5455
$section->addTitle('Bidirectional', 2);
56+
$section->addText('Left to right paragraph. هناك حقيقة مثبتة منذ زمن طويل وهي أن المحتوى المقروء لصفحة ما سيلهي القارئ عن التركيز على الشكل الخارجي للنص أو شكل توضع الفقرات في الصفحة التي يقرأها. ولذلك يتم استخدام طريقة لوريم إيبسوم لأنها تعطي توزيعاَ طبيعياَ -إلى حد ما- للأحرف عوضاً عن استخدام "هنا يوجد محتوى نصي، هنا يوجد محتوى نصي" فتجعلها تبدو (أي الأحرف) وكأنها نص مقروء. العديد من برامح النشر المكتبي وبرامح تحرير صفحات الويب تستخدم لوريم إيبسوم بشكل إفتراضي كنموذج عن النص، وإذا قمت بإدخال "lorem ipsum" في أي محرك بحث ستظهر العديد من المواقع الحديثة العهد في نتائج البحث. على مدى السنين ظهرت نسخ جديدة ومختلفة من نص لوريم إيبسوم، أحياناً عن طريق الصدفة، وأحياناً عن عمد كإدخال بعض العبارات الفكاهية إليها', ['language' => 'ar-SA']);
5557
$section->addText('Right to left paragraph. هناك حقيقة مثبتة منذ زمن طويل وهي أن المحتوى المقروء لصفحة ما سيلهي القارئ عن التركيز على الشكل الخارجي للنص أو شكل توضع الفقرات في الصفحة التي يقرأها. ولذلك يتم استخدام طريقة لوريم إيبسوم لأنها تعطي توزيعاَ طبيعياَ -إلى حد ما- للأحرف عوضاً عن استخدام "هنا يوجد محتوى نصي، هنا يوجد محتوى نصي" فتجعلها تبدو (أي الأحرف) وكأنها نص مقروء. العديد من برامح النشر المكتبي وبرامح تحرير صفحات الويب تستخدم لوريم إيبسوم بشكل إفتراضي كنموذج عن النص، وإذا قمت بإدخال "lorem ipsum" في أي محرك بحث ستظهر العديد من المواقع الحديثة العهد في نتائج البحث. على مدى السنين ظهرت نسخ جديدة ومختلفة من نص لوريم إيبسوم، أحياناً عن طريق الصدفة، وأحياناً عن عمد كإدخال بعض العبارات الفكاهية إليها', ['language' => 'ar-SA'], ['bidi' => true]);
5658
$section->addTextBreak();
5759

@@ -63,7 +65,11 @@
6365

6466
// Based On and Next.
6567
$section->addTitle('Based On and Next', 2);
66-
$section->addText('TODO');
68+
$phpWord->addParagraphStyle('pDefault', ['alignment' => Jc::START, 'keepLines' => true, 'keepNext' => true, 'pageBreakBefore' => true, 'widowControl' => true]);
69+
$phpWord->addParagraphStyle('pUndo', ['basedOn' => 'pDefault', 'keepLines' => false, 'keepNext' => false, 'pageBreakBefore' => false, 'widowControl' => false]);
70+
$section->addText('Left align. The following items are true: widow/orphan control, keep lines together, keep lines with next, and page break before.', null, 'pDefault');
71+
$section->addText('Still left align, but now all items are false.', null, 'pUndo');
72+
$section->addText('TODO: Next');
6773

6874
// Save file
6975
echo write($phpWord, basename(__FILE__, '.php'), $writers);

samples/TestSuite_Style_Tab.php

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?php
2+
3+
use PhpOffice\PhpWord\Style\Tab as TabStyle;
4+
5+
include_once 'Sample_Header.php';
6+
7+
// New Word Document
8+
echo date('H:i:s') , ' Create new PhpWord object' , EOL;
9+
10+
$languageEnGb = new PhpOffice\PhpWord\Style\Language(PhpOffice\PhpWord\Style\Language::EN_GB);
11+
12+
$phpWord = new PhpOffice\PhpWord\PhpWord();
13+
$phpWord->getSettings()->setThemeFontLang($languageEnGb);
14+
$phpWord->addTitleStyle(1, ['bold' => true, 'underline' => 'single', 'size' => 18]);
15+
$phpWord->addTitleStyle(2, ['bold' => true, 'underline' => 'single']);
16+
$section = $phpWord->addSection();
17+
18+
$section->addTitle('Testing All Tab Styles', 1);
19+
$section->addTextBreak();
20+
21+
// Tab Stop Type.
22+
$section->addTitle('Tab Stop Type', 2);
23+
$section->addText("Tab\tLeft 2880", null, ['tabs' => [new TabStyle(TabStyle::TAB_STOP_LEFT, 2880)]]);
24+
$section->addText("Tab\tCenter 2880", null, ['tabs' => [new TabStyle(TabStyle::TAB_STOP_CENTER, 2880)]]);
25+
$section->addText("Tab\tRight 2880", null, ['tabs' => [new TabStyle(TabStyle::TAB_STOP_RIGHT, 2880)]]);
26+
$section->addText("Tab\tDecimal 28.80", null, ['tabs' => [new TabStyle(TabStyle::TAB_STOP_DECIMAL, 2880)]]);
27+
$section->addText("Tab\tBar 2880", null, ['tabs' => [new TabStyle(TabStyle::TAB_STOP_BAR, 2880)]]);
28+
$section->addText("Tab\tNum 2880", null, ['tabs' => [new TabStyle(TabStyle::TAB_STOP_NUM, 2880)]]);
29+
$section->addTextBreak();
30+
31+
// Tab Leader.
32+
$section->addTitle('Tab Leader', 2);
33+
$section->addText("Tab\tNone", null, ['tabs' => [new TabStyle(TabStyle::TAB_STOP_LEFT, 1440, TabStyle::TAB_LEADER_NONE)]]);
34+
$section->addText("Tab\tDot", null, ['tabs' => [new TabStyle(TabStyle::TAB_STOP_LEFT, 1440, TabStyle::TAB_LEADER_DOT)]]);
35+
$section->addText("Tab\tHyphen", null, ['tabs' => [new TabStyle(TabStyle::TAB_STOP_LEFT, 1440, TabStyle::TAB_LEADER_HYPHEN)]]);
36+
$section->addText("Tab\tUnderscore", null, ['tabs' => [new TabStyle(TabStyle::TAB_STOP_LEFT, 1440, TabStyle::TAB_LEADER_UNDERSCORE)]]);
37+
$section->addText("Tab\tHeavy", null, ['tabs' => [new TabStyle(TabStyle::TAB_STOP_LEFT, 1440, TabStyle::TAB_LEADER_HEAVY)]]);
38+
$section->addText("Tab\tMiddledot", null, ['tabs' => [new TabStyle(TabStyle::TAB_STOP_LEFT, 1440, TabStyle::TAB_LEADER_MIDDLEDOT)]]);
39+
$section->addTextBreak();
40+
41+
// Multiple Tabs.
42+
$section->addTitle('Multiple Tabs', 2);
43+
$section->addText("\tMultiple Tabs at Left 1440\tCenter 5000\tRight 9340", null, ['tabs' => [new TabStyle(TabStyle::TAB_STOP_LEFT, 1440), new TabStyle(TabStyle::TAB_STOP_CENTER, 5000), new TabStyle(TabStyle::TAB_STOP_RIGHT, 9340)]]);
44+
$section->addTextBreak();
45+
46+
// Clearing Tabs.
47+
$section->addTitle('Clearing Tabs', 2);
48+
$phpWord->addParagraphStyle('pTabs', ['tabs' => [new TabStyle(TabStyle::TAB_STOP_LEFT, 1440), new TabStyle(TabStyle::TAB_STOP_CENTER, 5000), new TabStyle(TabStyle::TAB_STOP_RIGHT, 9340)]]);
49+
$phpWord->addParagraphStyle('pTabsClear', ['basedOn' => 'pTabs', 'tabs' => [new TabStyle(TabStyle::TAB_STOP_CLEAR, 9340)]]);
50+
$section->addText("\tThis paragraph\tmatches the previous\twith multiple tabs", null, 'pTabs');
51+
$section->addText("\tThis paragraph does\tnot\thave the right tab", null, 'pTabsClear');
52+
53+
// Save file
54+
echo write($phpWord, basename(__FILE__, '.php'), $writers);
55+
if (!CLI) {
56+
include_once 'Sample_Footer.php';
57+
}

0 commit comments

Comments
 (0)