TateChuYoko.cs
  1. //
  2. // This code is part of Document Solutions for Word demos.
  3. // Copyright (c) MESCIUS inc. All rights reserved.
  4. //
  5. using System;
  6. using System.IO;
  7. using System.Drawing;
  8. using System.Collections.Generic;
  9. using GrapeCity.Documents.Word;
  10. using GrapeCity.Documents.Drawing;
  11. using GrapeCity.Documents.Pdf;
  12. using GrapeCity.Documents.Text;
  13.  
  14. namespace DsWordWeb.Demos
  15. {
  16. // This sample demonstrates how to render short upright Latin text or numbers
  17. // in a block of vertical text. This is used in Chinese, Japanese and
  18. // Korean vertical text. In CSS this is referred to using the Japanese
  19. // name 縦中横 (tate chu yoko). In MS Word, this is referred to as
  20. // Horizontal In Vertical, and can be set using the Style.Font.EastAsianLayout.HorizontalInVertical
  21. // property.
  22. public class TateChuYoko
  23. {
  24. public GcWordDocument CreateDocx()
  25. {
  26. var doc = new GcWordDocument();
  27.  
  28. doc.Body.Sections.First.PageSetup.TextFlowDirection = TextFlowDirection.TopToBottomRightToLeft;
  29.  
  30. // Paragraph style for main caption:
  31. var sMainCaption = doc.Styles.Add("My Main Caption", StyleType.Paragraph);
  32. sMainCaption.Font.Name = "MS PGothic";
  33. sMainCaption.Font.Bold = true;
  34. sMainCaption.Font.Size = 14;
  35. sMainCaption.Font.Color.RGB = Color.DarkBlue;
  36. sMainCaption.ParagraphFormat.KeepWithNext = true;
  37.  
  38. // Paragraph style for other captions:
  39. var sCaption = doc.Styles.Add("My Caption", StyleType.Paragraph);
  40. sCaption.BaseStyle = sMainCaption;
  41. sCaption.Font.Size = sMainCaption.Font.Size - 1;
  42.  
  43. // Paragraph style for text:
  44. var sText = doc.Styles.Add("My Text", StyleType.Paragraph);
  45. sText.Font.Name = "MS PGothic";
  46. sText.Font.Size = sCaption.Font.Size - 1;
  47. sText.ParagraphFormat.KeepTogether = true;
  48.  
  49. // Char style for 'Tate Chu Oko' text fragments:
  50. var sTate = doc.Styles.Add("My TateChuOko", StyleType.Character);
  51. sTate.Font.EastAsianLayout.HorizontalInVertical = true;
  52.  
  53. var pars = doc.Body.Sections.Last.GetRange().Paragraphs;
  54.  
  55. var par = pars.Add(sMainCaption);
  56. var runs = par.GetRange().Runs;
  57. runs.Add("PDF", sTate);
  58. runs.Add("ファイルをコードから");
  59. runs.Add("API", sTate);
  60. runs.Add("を利用することで操作できます。クロスプラットフォーム環境で動作するアプリケーションの開発を支援する");
  61. runs.Add("API", sTate);
  62. runs.Add("ライブラリです。");
  63.  
  64. // Item 1
  65. par = pars.Add(sCaption);
  66. runs = par.GetRange().Runs;
  67. runs.Add("PDF", sTate);
  68. runs.Add("用の包括的な");
  69. runs.Add("API", sTate);
  70.  
  71. par = pars.Add(sText);
  72. runs = par.GetRange().Runs;
  73. runs.Add("PDF", sTate);
  74. runs.Add("バージョン「");
  75. runs.Add("1.7", sTate);
  76. runs.Add("」に準拠した");
  77. runs.Add("API", sTate);
  78. runs.Add("を提供し、レイアウトや機能を損なうことなく、豊富な機能を備えた");
  79. runs.Add("PDF", sTate);
  80. runs.Add("文書を生成、編集、保存できます。");
  81.  
  82. // Item 2
  83. par = pars.Add(sCaption);
  84. runs = par.GetRange().Runs;
  85. runs.Add("完全なテキスト描画");
  86.  
  87. par = pars.Add(sText);
  88. runs = par.GetRange().Runs;
  89. runs.Add("PDF", sTate);
  90. runs.Add("文書にテキストの描画情報が保持されます。テキストと段落の書式、特殊文字、複数の言語、縦書き、テキスト角度などが保持さるので、完全な形でテキスト描画を再現できます。");
  91.  
  92. // Item 3
  93. par = pars.Add(sCaption);
  94. runs = par.GetRange().Runs;
  95. runs.Add(".NET Standard 2.0 準拠");
  96.  
  97. par = pars.Add(sText);
  98. runs = par.GetRange().Runs;
  99. runs.Add(".NET Core、.NET Framework、Xamarinで動作するアプリケーションを開発できます。Windows、macOS、Linuxなどクロスプラットフォーム環境で動作可能です。");
  100.  
  101. // Item 4
  102. par = pars.Add(sCaption);
  103. runs = par.GetRange().Runs;
  104. runs.Add("100", sTate);
  105. runs.Add("を超える");
  106. runs.Add("PDF", sTate);
  107. runs.Add("操作機能");
  108.  
  109. par = pars.Add(sText);
  110. runs = par.GetRange().Runs;
  111. runs.Add("ページの追加や削除、ページサイズ、向きの変更だけでなく、ファイルの圧縮、");
  112. runs.Add("Web", sTate);
  113. runs.Add("に最適化した");
  114. runs.Add("PDF", sTate);
  115. runs.Add("の生成など高度な機能も");
  116. runs.Add("API", sTate);
  117. runs.Add("操作で実現します。また、署名からセキュリティ機能まで様々な機能を含んだ");
  118. runs.Add("PDF", sTate);
  119. runs.Add("フォームを生成可能です。");
  120.  
  121. // Item 5
  122. par = pars.Add(sCaption);
  123. runs = par.GetRange().Runs;
  124. runs.Add("高速、軽量アーキテクチャ");
  125.  
  126. par = pars.Add(sText);
  127. runs = par.GetRange().Runs;
  128. runs.Add("軽量");
  129. runs.Add("API", sTate);
  130. runs.Add("アーキテクチャでメモリと時間を節約できます。");
  131. runs.Add("また、他の生成用ツールに依存せずドキュメントを生成可能です。");
  132.  
  133. // 6
  134. par = pars.Add(sCaption);
  135. runs = par.GetRange().Runs;
  136. runs.Add("クラウドアプリケーション展開");
  137.  
  138. par = pars.Add(sText);
  139. runs = par.GetRange().Runs;
  140. runs.Add("Azure、AWSなどのサービスに配置するクラウドアプリケーションの開発で利用可能です。仮想マシン、コンテナ、サーバーレスなどの方法で配置できます。");
  141.  
  142. // Done:
  143. return doc;
  144. }
  145. }
  146. }
  147.