Support table valign (#56)

* feat: Support valign

* feat: Add valign writer

* feat: Add reader

* fix: indent

* 0.0.56

* fix: indent

* update
main
bokuweb 2020-03-20 01:19:39 +09:00 committed by GitHub
parent edb8843b52
commit fc10334a09
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
37 changed files with 942 additions and 21 deletions

View File

@ -11,6 +11,7 @@ pub fn main() -> Result<(), DocxError> {
.grid_span(2),
TableCell::new()
.add_paragraph(Paragraph::new().add_run(Run::new().add_text("Hello")))
.vertical_align(VAlignType::Center)
.vertical_merge(VMergeType::Restart),
]),
TableRow::new(vec![
@ -32,7 +33,8 @@ pub fn main() -> Result<(), DocxError> {
.vertical_merge(VMergeType::Continue),
]),
])
.set_grid(vec![2000, 2000, 2000]);
.set_grid(vec![2000, 2000, 2000])
.indent(1000);
Docx::new().add_table(table).build().pack(file)?;
Ok(())
}

View File

@ -62,6 +62,7 @@ mod table_width;
mod text;
mod underline;
mod vanish;
mod vertical_align;
mod vertical_merge;
mod zoom;
@ -129,5 +130,6 @@ pub use table_width::*;
pub use text::*;
pub use underline::*;
pub use vanish::*;
pub use vertical_align::*;
pub use vertical_merge::*;
pub use zoom::*;

View File

@ -53,6 +53,11 @@ impl TableCell {
self
}
pub fn vertical_align(mut self, t: VAlignType) -> TableCell {
self.property = self.property.vertical_align(t);
self
}
pub fn grid_span(mut self, v: usize) -> TableCell {
self.property = self.property.grid_span(v);
self
@ -122,7 +127,7 @@ mod tests {
.grid_span(2);
assert_eq!(
serde_json::to_string(&c).unwrap(),
r#"{"children":[{"type":"paragraph","data":{"children":[{"type":"run","data":{"runProperty":{"sz":null,"szCs":null,"color":null,"highlight":null,"underline":null,"bold":null,"boldCs":null,"italic":null,"italicCs":null,"vanish":null},"children":[{"type":"text","data":{"preserveSpace":true,"text":"Hello"}}]}}],"property":{"runProperty":{"sz":null,"szCs":null,"color":null,"highlight":null,"underline":null,"bold":null,"boldCs":null,"italic":null,"italicCs":null,"vanish":null},"style":"Normal","numberingProperty":null,"alignment":null,"indent":null},"hasNumbering":false,"attrs":[]}}],"property":{"width":null,"borders":null,"gridSpan":2,"verticalMerge":null},"hasNumbering":false}"#
r#"{"children":[{"type":"paragraph","data":{"children":[{"type":"run","data":{"runProperty":{"sz":null,"szCs":null,"color":null,"highlight":null,"underline":null,"bold":null,"boldCs":null,"italic":null,"italicCs":null,"vanish":null},"children":[{"type":"text","data":{"preserveSpace":true,"text":"Hello"}}]}}],"property":{"runProperty":{"sz":null,"szCs":null,"color":null,"highlight":null,"underline":null,"bold":null,"boldCs":null,"italic":null,"italicCs":null,"vanish":null},"style":"Normal","numberingProperty":null,"alignment":null,"indent":null},"hasNumbering":false,"attrs":[]}}],"property":{"width":null,"borders":null,"gridSpan":2,"verticalMerge":null,"verticalAlign":null},"hasNumbering":false}"#
);
}
}

View File

@ -43,10 +43,10 @@ impl BuildXML for TableCellMargins {
fn build(&self) -> Vec<u8> {
XMLBuilder::new()
.open_table_cell_margins()
.margin_top(self.top, WidthType::DXA)
.margin_left(self.left, WidthType::DXA)
.margin_bottom(self.bottom, WidthType::DXA)
.margin_right(self.right, WidthType::DXA)
.margin_top(self.top as i32, WidthType::DXA)
.margin_left(self.left as i32, WidthType::DXA)
.margin_bottom(self.bottom as i32, WidthType::DXA)
.margin_right(self.right as i32, WidthType::DXA)
.close()
.build()
}

View File

@ -1,6 +1,6 @@
use serde::Serialize;
use super::{GridSpan, TableCellBorders, TableCellWidth, VMerge};
use super::{GridSpan, TableCellBorders, TableCellWidth, VAlign, VMerge};
use crate::documents::BuildXML;
use crate::types::*;
use crate::xml_builder::*;
@ -12,6 +12,7 @@ pub struct TableCellProperty {
borders: Option<TableCellBorders>,
grid_span: Option<GridSpan>,
vertical_merge: Option<VMerge>,
vertical_align: Option<VAlign>,
}
impl TableCellProperty {
@ -29,6 +30,11 @@ impl TableCellProperty {
self
}
pub fn vertical_align(mut self, t: VAlignType) -> TableCellProperty {
self.vertical_align = Some(VAlign::new(t));
self
}
pub fn grid_span(mut self, v: usize) -> TableCellProperty {
self.grid_span = Some(GridSpan::new(v));
self
@ -42,6 +48,7 @@ impl Default for TableCellProperty {
borders: None,
grid_span: None,
vertical_merge: None,
vertical_align: None,
}
}
}
@ -54,6 +61,7 @@ impl BuildXML for TableCellProperty {
.add_optional_child(&self.borders)
.add_optional_child(&self.grid_span)
.add_optional_child(&self.vertical_merge)
.add_optional_child(&self.vertical_align)
.close()
.build()
}
@ -94,6 +102,16 @@ mod tests {
);
}
#[test]
fn test_valign() {
let c = TableCellProperty::new().vertical_align(VAlignType::Center);
let b = c.build();
assert_eq!(
str::from_utf8(&b).unwrap(),
r#"<w:tcPr><w:vAlign w:val="center" /></w:tcPr>"#
);
}
#[test]
fn test_table_cell_prop_json() {
let c = TableCellProperty::new()
@ -102,7 +120,16 @@ mod tests {
.width(200, WidthType::DXA);
assert_eq!(
serde_json::to_string(&c).unwrap(),
r#"{"width":{"width":200,"widthType":"DXA"},"borders":null,"gridSpan":3,"verticalMerge":"continue"}"#
r#"{"width":{"width":200,"widthType":"DXA"},"borders":null,"gridSpan":3,"verticalMerge":"continue","verticalAlign":null}"#
);
}
#[test]
fn test_table_cell_prop_json_with_valign() {
let c = TableCellProperty::new().vertical_align(VAlignType::Center);
assert_eq!(
serde_json::to_string(&c).unwrap(),
r#"{"width":null,"borders":null,"gridSpan":null,"verticalMerge":null,"verticalAlign":"center"}"#
);
}
}

View File

@ -20,7 +20,7 @@ impl TableCellWidth {
impl BuildXML for TableCellWidth {
fn build(&self) -> Vec<u8> {
XMLBuilder::new()
.table_cell_width(self.width, WidthType::DXA)
.table_cell_width(self.width as i32, WidthType::DXA)
.build()
}
}

View File

@ -17,7 +17,7 @@ impl BuildXML for TableGrid {
fn build(&self) -> Vec<u8> {
let mut base = XMLBuilder::new().open_table_grid();
for g in &self.grid {
base = base.grid_column(*g, WidthType::DXA);
base = base.grid_column(*g as i32, WidthType::DXA);
}
base.close().build()
}

View File

@ -19,7 +19,9 @@ impl TableIndent {
impl BuildXML for TableIndent {
fn build(&self) -> Vec<u8> {
XMLBuilder::new().table_indent(20, WidthType::DXA).build()
XMLBuilder::new()
.table_indent(self.width, WidthType::DXA)
.build()
}
}

View File

@ -56,7 +56,7 @@ mod tests {
let r = TableRow::new(vec![TableCell::new()]);
assert_eq!(
serde_json::to_string(&r).unwrap(),
r#"{"cells":[{"children":[],"property":{"width":null,"borders":null,"gridSpan":null,"verticalMerge":null},"hasNumbering":false}],"hasNumbering":false,"property":{}}"#
r#"{"cells":[{"children":[],"property":{"width":null,"borders":null,"gridSpan":null,"verticalMerge":null,"verticalAlign":null},"hasNumbering":false}],"hasNumbering":false,"property":{}}"#
);
}
}

View File

@ -20,7 +20,7 @@ impl TableWidth {
impl BuildXML for TableWidth {
fn build(&self) -> Vec<u8> {
XMLBuilder::new()
.table_width(self.width, WidthType::DXA)
.table_width(self.width as i32, WidthType::DXA)
.build()
}
}

View File

@ -0,0 +1,51 @@
use serde::{Serialize, Serializer};
use crate::documents::BuildXML;
use crate::types::*;
use crate::xml_builder::*;
#[derive(Debug, Clone, PartialEq)]
pub struct VAlign {
val: VAlignType,
}
impl VAlign {
pub fn new(v: VAlignType) -> VAlign {
VAlign { val: v }
}
}
impl BuildXML for VAlign {
fn build(&self) -> Vec<u8> {
XMLBuilder::new()
.vertical_align(&self.val.to_string())
.build()
}
}
impl Serialize for VAlign {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
serializer.serialize_str(&format!("{}", &self.val))
}
}
#[cfg(test)]
mod tests {
use super::*;
#[cfg(test)]
use pretty_assertions::assert_eq;
use std::str;
#[test]
fn test_build() {
let b = VAlign::new(VAlignType::Center).build();
assert_eq!(
str::from_utf8(&b).unwrap(),
r#"<w:vAlign w:val="center" />"#
);
}
}

View File

@ -59,6 +59,13 @@ impl ElementReader for TableCell {
cell = cell.vertical_merge(VMergeType::Continue)
}
}
XMLElement::VAlign => {
if let Some(a) = &attributes.get(0) {
cell = cell.vertical_align(VAlignType::from_str(
&a.value,
)?);
}
}
XMLElement::TableCellBorders => {
// TODO: Support table cell borders later
}
@ -159,4 +166,31 @@ mod tests {
.vertical_merge(VMergeType::Continue),
);
}
#[test]
fn test_read_valign() {
let c = r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:tc>
<w:tcPr>
<w:tcW w:w="6425" w:type="dxa"/>
<w:vAlign w:val="bottom"/>
<w:shd w:fill="auto" w:val="clear"/>
</w:tcPr>
<w:p>
<w:r>
<w:rPr></w:rPr>
</w:r>
</w:p>
</w:tc>
</w:document>"#;
let mut parser = EventReader::new(c.as_bytes());
let cell = TableCell::read(&mut parser, &[]).unwrap();
assert_eq!(
cell,
TableCell::new()
.add_paragraph(Paragraph::new().add_run(Run::new()))
.width(6425, WidthType::DXA)
.vertical_align(VAlignType::Bottom),
);
}
}

View File

@ -40,6 +40,7 @@ pub enum XMLElement {
BookmarkEnd,
CommentRangeStart,
CommentRangeEnd,
VAlign,
Table,
TableProperty,
TableRow,
@ -155,6 +156,7 @@ impl FromStr for XMLElement {
"lvlJc" => Ok(XMLElement::LevelJustification),
"numStyleLink" => Ok(XMLElement::NumStyleLink),
"styleLink" => Ok(XMLElement::StyleLink),
"vAlign" => Ok(XMLElement::VAlign),
_ => Ok(XMLElement::Unsupported),
}
}

View File

@ -7,6 +7,7 @@ pub mod font_pitch_type;
pub mod special_indent_type;
pub mod style_type;
pub mod table_alignment_type;
pub mod vertical_align_type;
pub mod vertical_merge_type;
pub mod width_type;
@ -19,5 +20,6 @@ pub use font_pitch_type::*;
pub use special_indent_type::*;
pub use style_type::*;
pub use table_alignment_type::*;
pub use vertical_align_type::*;
pub use vertical_merge_type::*;
pub use width_type::*;

View File

@ -0,0 +1,37 @@
use std::fmt;
use wasm_bindgen::prelude::*;
use super::errors;
use std::str::FromStr;
#[wasm_bindgen]
#[derive(Copy, Clone, Debug, PartialEq)]
pub enum VAlignType {
Top,
Center,
Bottom,
Unsupported,
}
impl fmt::Display for VAlignType {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
VAlignType::Top => write!(f, "top"),
VAlignType::Center => write!(f, "center"),
VAlignType::Bottom => write!(f, "bottom"),
VAlignType::Unsupported => write!(f, "unsupported"),
}
}
}
impl FromStr for VAlignType {
type Err = errors::TypeError;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"top" => Ok(VAlignType::Top),
"center" => Ok(VAlignType::Center),
"bottom" => Ok(VAlignType::Bottom),
_ => Ok(VAlignType::Unsupported),
}
}
}

View File

@ -140,6 +140,7 @@ impl XMLBuilder {
closed_with_usize!(grid_span, "w:gridSpan");
closed_with_str!(vertical_merge, "w:vMerge");
closed_with_str!(vertical_align, "w:vAlign");
closed_w_with_type_el!(margin_top, "w:top");
closed_w_with_type_el!(margin_left, "w:left");

View File

@ -231,7 +231,7 @@ macro_rules! closed_with_usize {
macro_rules! closed_w_with_type_el {
($name: ident, $el_name: expr) => {
pub(crate) fn $name(mut self, w: usize, t: WidthType) -> Self {
pub(crate) fn $name(mut self, w: i32, t: WidthType) -> Self {
self.writer
.write(
XmlEvent::start_element($el_name)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -215,6 +215,8 @@ export class Docx {
});
table = table.set_grid(new Uint32Array(t.grid));
table = table.indent(t.property.indent || 0);
switch (t.property.align) {
case "center": {
table = table.align(wasm.TableAlignmentType.Center);
@ -229,6 +231,7 @@ export class Docx {
break;
}
}
return table;
}
@ -245,6 +248,21 @@ export class Docx {
cell = cell.vertical_merge(wasm.VMergeType.Restart);
}
switch (c.property.verticalAlign) {
case "top": {
cell = cell.vertical_align(wasm.VAlignType.Top);
break;
}
case "center": {
cell = cell.vertical_align(wasm.VAlignType.Center);
break;
}
case "bottom": {
cell = cell.vertical_align(wasm.VAlignType.Bottom);
break;
}
}
if (typeof c.property.gridSpan !== "undefined") {
cell = cell.grid_span(c.property.gridSpan);
}

View File

@ -13,6 +13,7 @@ export type TableCellPropertyJSON = {
borders: any | null;
gridSpan: number | null;
verticalMerge: "restart" | "continue" | null;
verticalAlign: "top" | "center" | "bottom" | null;
hasNumbering: boolean;
};

View File

@ -2,8 +2,11 @@ import { Paragraph } from "./paragraph";
export type VMergeType = "restart" | "continue";
export type VAlignType = "top" | "center" | "bottom";
export type CellProperty = {
verticalMerge?: VMergeType;
verticalAlign?: VAlignType;
gridSpan?: number;
width?: number;
};
@ -22,6 +25,11 @@ export class TableCell {
return this;
}
verticalAlign(t: VAlignType) {
this.property.verticalAlign = t;
return this;
}
gridSpan(v: number) {
this.property.gridSpan = v;
return this;

View File

@ -1,6 +1,6 @@
{
"name": "docx-wasm",
"version": "0.0.54",
"version": "0.0.57",
"main": "dist/node/index.js",
"browser": "dist/web/index.js",
"author": "bokuweb <bokuweb12@gmail.com>",

View File

@ -31,6 +31,11 @@ impl TableCell {
self
}
pub fn vertical_align(mut self, t: docx_rs::VAlignType) -> TableCell {
self.0.property = self.0.property.vertical_align(t);
self
}
pub fn grid_span(mut self, v: usize) -> TableCell {
self.0.property = self.0.property.grid_span(v);
self

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="xml" ContentType="application/xml"/><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="png" ContentType="image/png"/><Default Extension="jpeg" ContentType="image/jpeg"/><Override PartName="/_rels/.rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Override PartName="/word/_rels/document.xml.rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Override PartName="/word/fontTable.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml"/><Override PartName="/word/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"/><Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/><Override PartName="/word/settings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml"/><Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/><Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>
</Types>

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/>
</Relationships>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"><Template></Template><TotalTime>2</TotalTime><Application>LibreOffice/6.3.4.2$Linux_X86_64 LibreOffice_project/30$Build-2</Application><Pages>1</Pages><Words>3</Words><Characters>14</Characters><CharactersWithSpaces>14</CharactersWithSpaces><Paragraphs>3</Paragraphs></Properties>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dcterms:created xsi:type="dcterms:W3CDTF">2020-03-19T17:03:17Z</dcterms:created><dc:creator></dc:creator><dc:description></dc:description><dc:language>ja-JP</dc:language><cp:lastModifiedBy></cp:lastModifiedBy><dcterms:modified xsi:type="dcterms:W3CDTF">2020-03-19T17:05:21Z</dcterms:modified><cp:revision>1</cp:revision><dc:subject></dc:subject><dc:title></dc:title></cp:coreProperties>

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/><Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable" Target="fontTable.xml"/><Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings" Target="settings.xml"/>
</Relationships>

View File

@ -0,0 +1,705 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
xmlns:w10="urn:schemas-microsoft-com:office:word"
xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"
xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape"
xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing"
xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" mc:Ignorable="w14 wp14">
<w:body>
<w:tbl>
<w:tblPr>
<w:tblW w:w="9638" w:type="dxa"/>
<w:jc w:val="left"/>
<w:tblInd w:w="0" w:type="dxa"/>
<w:tblCellMar>
<w:top w:w="55" w:type="dxa"/>
<w:left w:w="55" w:type="dxa"/>
<w:bottom w:w="55" w:type="dxa"/>
<w:right w:w="55" w:type="dxa"/>
</w:tblCellMar>
</w:tblPr>
<w:tblGrid>
<w:gridCol w:w="4819"/>
<w:gridCol w:w="4819"/>
</w:tblGrid>
<w:tr>
<w:trPr></w:trPr>
<w:tc>
<w:tcPr>
<w:tcW w:w="4819" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="single" w:sz="4" w:space="0" w:color="000000"/>
<w:left w:val="single" w:sz="4" w:space="0" w:color="000000"/>
</w:tcBorders>
<w:shd w:fill="auto" w:val="clear"/>
<w:vAlign w:val="center"/>
</w:tcPr>
<w:p>
<w:pPr>
<w:pStyle w:val="Style19"/>
<w:bidi w:val="0"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif"/>
<w:b w:val="false"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
<w:t>Hello</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="4819" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="single" w:sz="4" w:space="0" w:color="000000"/>
<w:left w:val="single" w:sz="4" w:space="0" w:color="000000"/>
<w:right w:val="single" w:sz="4" w:space="0" w:color="000000"/>
</w:tcBorders>
<w:shd w:fill="auto" w:val="clear"/>
<w:vAlign w:val="bottom"/>
</w:tcPr>
<w:p>
<w:pPr>
<w:pStyle w:val="Style19"/>
<w:bidi w:val="0"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif"/>
<w:b w:val="false"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="Style19"/>
<w:bidi w:val="0"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif"/>
<w:b w:val="false"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="Style19"/>
<w:bidi w:val="0"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif"/>
<w:b w:val="false"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="Style19"/>
<w:bidi w:val="0"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif"/>
<w:b w:val="false"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="Style19"/>
<w:bidi w:val="0"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif"/>
<w:b w:val="false"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="Style19"/>
<w:bidi w:val="0"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif"/>
<w:b w:val="false"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
<w:t>World</w:t>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="Style19"/>
<w:bidi w:val="0"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif"/>
<w:b w:val="false"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="Style19"/>
<w:bidi w:val="0"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif"/>
<w:b w:val="false"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:r>
</w:p>
</w:tc>
</w:tr>
<w:tr>
<w:trPr></w:trPr>
<w:tc>
<w:tcPr>
<w:tcW w:w="4819" w:type="dxa"/>
<w:tcBorders>
<w:left w:val="single" w:sz="4" w:space="0" w:color="000000"/>
<w:bottom w:val="single" w:sz="4" w:space="0" w:color="000000"/>
</w:tcBorders>
<w:shd w:fill="auto" w:val="clear"/>
</w:tcPr>
<w:p>
<w:pPr>
<w:pStyle w:val="Style19"/>
<w:bidi w:val="0"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif"/>
<w:b w:val="false"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
<w:t>aaaa</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="4819" w:type="dxa"/>
<w:tcBorders>
<w:left w:val="single" w:sz="4" w:space="0" w:color="000000"/>
<w:bottom w:val="single" w:sz="4" w:space="0" w:color="000000"/>
<w:right w:val="single" w:sz="4" w:space="0" w:color="000000"/>
</w:tcBorders>
<w:shd w:fill="auto" w:val="clear"/>
<w:vAlign w:val="bottom"/>
</w:tcPr>
<w:p>
<w:pPr>
<w:pStyle w:val="Style19"/>
<w:bidi w:val="0"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif"/>
<w:b w:val="false"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="Style19"/>
<w:bidi w:val="0"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif"/>
<w:b w:val="false"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="Style19"/>
<w:bidi w:val="0"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif"/>
<w:b w:val="false"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="Style19"/>
<w:bidi w:val="0"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif"/>
<w:b w:val="false"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="Style19"/>
<w:bidi w:val="0"/>
<w:jc w:val="left"/>
<w:rPr>
<w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif"/>
<w:b w:val="false"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="24"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
</w:rPr>
</w:r>
</w:p>
</w:tc>
</w:tr>
</w:tbl>
<w:p>
<w:pPr>
<w:pStyle w:val="Normal"/>
<w:bidi w:val="0"/>
<w:jc w:val="left"/>
<w:rPr></w:rPr>
</w:pPr>
<w:r>
<w:rPr></w:rPr>
</w:r>
</w:p>
<w:sectPr>
<w:type w:val="nextPage"/>
<w:pgSz w:w="11906" w:h="16838"/>
<w:pgMar w:left="1134" w:right="1134" w:header="0" w:top="1134" w:footer="0" w:bottom="1134" w:gutter="0"/>
<w:pgNumType w:fmt="decimal"/>
<w:formProt w:val="false"/>
<w:textDirection w:val="lrTb"/>
</w:sectPr>
</w:body>
</w:document>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:fonts xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><w:font w:name="Times New Roman"><w:charset w:val="00"/><w:family w:val="roman"/><w:pitch w:val="variable"/></w:font><w:font w:name="Symbol"><w:charset w:val="02"/><w:family w:val="roman"/><w:pitch w:val="variable"/></w:font><w:font w:name="Arial"><w:charset w:val="00"/><w:family w:val="swiss"/><w:pitch w:val="variable"/></w:font><w:font w:name="Liberation Serif"><w:altName w:val="Times New Roman"/><w:charset w:val="01"/><w:family w:val="roman"/><w:pitch w:val="variable"/></w:font><w:font w:name="Liberation Sans"><w:altName w:val="Arial"/><w:charset w:val="01"/><w:family w:val="swiss"/><w:pitch w:val="variable"/></w:font></w:fonts>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:settings xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:zoom w:percent="100"/><w:defaultTabStop w:val="709"/><w:compat><w:doNotExpandShiftReturn/></w:compat></w:settings>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:styles xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="w14"><w:docDefaults><w:rPrDefault><w:rPr><w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif" w:eastAsia="Noto Sans CJK JP" w:cs="Lohit Devanagari"/><w:kern w:val="2"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="ja-JP" w:bidi="hi-IN"/></w:rPr></w:rPrDefault><w:pPrDefault><w:pPr><w:widowControl/></w:pPr></w:pPrDefault></w:docDefaults><w:style w:type="paragraph" w:styleId="Normal"><w:name w:val="Normal"/><w:qFormat/><w:pPr><w:widowControl/><w:bidi w:val="0"/></w:pPr><w:rPr><w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif" w:eastAsia="Noto Sans CJK JP" w:cs="Lohit Devanagari"/><w:color w:val="auto"/><w:kern w:val="2"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="ja-JP" w:bidi="hi-IN"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style14"><w:name w:val="見出し"/><w:basedOn w:val="Normal"/><w:next w:val="Style15"/><w:qFormat/><w:pPr><w:keepNext w:val="true"/><w:spacing w:before="240" w:after="120"/></w:pPr><w:rPr><w:rFonts w:ascii="Liberation Sans" w:hAnsi="Liberation Sans" w:eastAsia="Noto Sans CJK JP" w:cs="Lohit Devanagari"/><w:sz w:val="28"/><w:szCs w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style15"><w:name w:val="Body Text"/><w:basedOn w:val="Normal"/><w:pPr><w:spacing w:lineRule="auto" w:line="276" w:before="0" w:after="140"/></w:pPr><w:rPr></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style16"><w:name w:val="List"/><w:basedOn w:val="Style15"/><w:pPr></w:pPr><w:rPr><w:rFonts w:cs="Lohit Devanagari"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style17"><w:name w:val="Caption"/><w:basedOn w:val="Normal"/><w:qFormat/><w:pPr><w:suppressLineNumbers/><w:spacing w:before="120" w:after="120"/></w:pPr><w:rPr><w:rFonts w:cs="Lohit Devanagari"/><w:i/><w:iCs/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style18"><w:name w:val="索引"/><w:basedOn w:val="Normal"/><w:qFormat/><w:pPr><w:suppressLineNumbers/></w:pPr><w:rPr><w:rFonts w:cs="Lohit Devanagari"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style19"><w:name w:val="表の内容"/><w:basedOn w:val="Normal"/><w:qFormat/><w:pPr><w:suppressLineNumbers/></w:pPr><w:rPr></w:rPr></w:style></w:styles>