TateChuYoko.vb
''
'' This code is part of Document Solutions for Word demos.
'' Copyright (c) MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports System.Collections.Generic
Imports GrapeCity.Documents.Word
Imports GrapeCity.Documents.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text

'' This sample demonstrates how to render short upright Latin text or numbers
'' in a block of vertical text. This is used in Chinese, Japanese and
'' Korean vertical text. In CSS this is referred to using the Japanese
'' name 縦中横 (tate chu yoko). In MS Word, this is referred to as
'' Horizontal In Vertical, and can be set using the Style.Font.EastAsianLayout.HorizontalInVertical
'' property.
Public Class TateChuYoko
    Public Function CreateDocx() As GcWordDocument
        Dim doc = New GcWordDocument()

        doc.Body.Sections.First.PageSetup.TextFlowDirection = TextFlowDirection.TopToBottomRightToLeft

        '' Paragraph style for main caption:
        Dim sMainCaption = doc.Styles.Add("My Main Caption", StyleType.Paragraph)
        sMainCaption.Font.Name = "MS PGothic"
        sMainCaption.Font.Bold = True
        sMainCaption.Font.Size = 14
        sMainCaption.Font.Color.RGB = Color.DarkBlue
        sMainCaption.ParagraphFormat.KeepWithNext = True

        '' Paragraph style for other captions:
        Dim sCaption = doc.Styles.Add("My Caption", StyleType.Paragraph)
        sCaption.BaseStyle = sMainCaption
        sCaption.Font.Size = sMainCaption.Font.Size - 1

        '' Paragraph style for text:
        Dim sText = doc.Styles.Add("My Text", StyleType.Paragraph)
        sText.Font.Name = "MS PGothic"
        sText.Font.Size = sCaption.Font.Size - 1
        sText.ParagraphFormat.KeepTogether = True

        '' Char style for 'Tate Chu Oko' text fragments:
        Dim sTate = doc.Styles.Add("My TateChuOko", StyleType.Character)
        sTate.Font.EastAsianLayout.HorizontalInVertical = True

        Dim pars = doc.Body.Sections.Last.GetRange().Paragraphs

        Dim par = pars.Add(sMainCaption)
        Dim runs = par.GetRange().Runs
        runs.Add("PDF", sTate)
        runs.Add("ファイルをコードから")
        runs.Add("API", sTate)
        runs.Add("を利用することで操作できます。クロスプラットフォーム環境で動作するアプリケーションの開発を支援する")
        runs.Add("API", sTate)
        runs.Add("ライブラリです。")

        '' Item 1
        par = pars.Add(sCaption)
        runs = par.GetRange().Runs
        runs.Add("PDF", sTate)
        runs.Add("用の包括的な")
        runs.Add("API", sTate)

        par = pars.Add(sText)
        runs = par.GetRange().Runs
        runs.Add("PDF", sTate)
        runs.Add("バージョン「")
        runs.Add("1.7", sTate)
        runs.Add("」に準拠した")
        runs.Add("API", sTate)
        runs.Add("を提供し、レイアウトや機能を損なうことなく、豊富な機能を備えた")
        runs.Add("PDF", sTate)
        runs.Add("文書を生成、編集、保存できます。")

        '' Item 2
        par = pars.Add(sCaption)
        runs = par.GetRange().Runs
        runs.Add("完全なテキスト描画")

        par = pars.Add(sText)
        runs = par.GetRange().Runs
        runs.Add("PDF", sTate)
        runs.Add("文書にテキストの描画情報が保持されます。テキストと段落の書式、特殊文字、複数の言語、縦書き、テキスト角度などが保持さるので、完全な形でテキスト描画を再現できます。")

        '' Item 3
        par = pars.Add(sCaption)
        runs = par.GetRange().Runs
        runs.Add(".NET Standard 2.0 準拠")

        par = pars.Add(sText)
        runs = par.GetRange().Runs
        runs.Add(".NET Core、.NET Framework、Xamarinで動作するアプリケーションを開発できます。Windows、macOS、Linuxなどクロスプラットフォーム環境で動作可能です。")

        '' Item 4
        par = pars.Add(sCaption)
        runs = par.GetRange().Runs
        runs.Add("100", sTate)
        runs.Add("を超える")
        runs.Add("PDF", sTate)
        runs.Add("操作機能")

        par = pars.Add(sText)
        runs = par.GetRange().Runs
        runs.Add("ページの追加や削除、ページサイズ、向きの変更だけでなく、ファイルの圧縮、")
        runs.Add("Web", sTate)
        runs.Add("に最適化した")
        runs.Add("PDF", sTate)
        runs.Add("の生成など高度な機能も")
        runs.Add("API", sTate)
        runs.Add("操作で実現します。また、署名からセキュリティ機能まで様々な機能を含んだ")
        runs.Add("PDF", sTate)
        runs.Add("フォームを生成可能です。")

        '' Item 5
        par = pars.Add(sCaption)
        runs = par.GetRange().Runs
        runs.Add("高速、軽量アーキテクチャ")

        par = pars.Add(sText)
        runs = par.GetRange().Runs
        runs.Add("軽量")
        runs.Add("API", sTate)
        runs.Add("アーキテクチャでメモリと時間を節約できます。")
        runs.Add("また、他の生成用ツールに依存せずドキュメントを生成可能です。")

        '' 6
        par = pars.Add(sCaption)
        runs = par.GetRange().Runs
        runs.Add("クラウドアプリケーション展開")

        par = pars.Add(sText)
        runs = par.GetRange().Runs
        runs.Add("Azure、AWSなどのサービスに配置するクラウドアプリケーションの開発で利用可能です。仮想マシン、コンテナ、サーバーレスなどの方法で配置できます。")

        '' Done:
        Return doc
    End Function
End Class