Add json definitions (#40)

* feat: Add test

* fix: bom file

* fix: delete serializer

* fix: improve json

* fix: dxa

* fix: fixup ts

* 0.0.24
main
bokuweb 2020-02-13 16:14:06 +09:00 committed by GitHub
parent 1ab91a6924
commit 03a6c7e970
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
52 changed files with 1119 additions and 290 deletions

File diff suppressed because one or more lines are too long

View File

@ -3,7 +3,7 @@ use std::fs::*;
use std::io::Read;
pub fn main() {
let mut file = File::open("./run.docx").unwrap();
let mut file = File::open("./10.docx").unwrap();
let mut buf = vec![];
file.read_to_end(&mut buf).unwrap();
dbg!(read_docx(&buf).unwrap().json());

View File

@ -111,7 +111,7 @@ impl FromXML for ContentTypes {
Ok(XmlEvent::EndElement { .. }) => {
depth -= 1;
}
Err(_) => return Err(ReaderError::XMLReadError),
Err(_) => {}
_ => {}
}
}

View File

@ -69,6 +69,25 @@ impl Serialize for ParagraphChild {
t.serialize_field("data", r)?;
t.end()
}
ParagraphChild::Delete(ref r) => {
let mut t = serializer.serialize_struct("Delete", 2)?;
t.serialize_field("type", "delete")?;
t.serialize_field("data", r)?;
t.end()
}
ParagraphChild::BookmarkStart(ref r) => {
let mut t = serializer.serialize_struct("BookmarkStart", 2)?;
t.serialize_field("type", "bookmarkStart")?;
t.serialize_field("data", r)?;
t.end()
}
ParagraphChild::BookmarkEnd(ref r) => {
let mut t = serializer.serialize_struct("BookmarkEnd", 2)?;
t.serialize_field("type", "bookmarkEnd")?;
t.serialize_field("data", r)?;
t.end()
}
// TODO: Add comment later
_ => {
let mut t = serializer.serialize_struct("Unsupported", 2)?;
t.serialize_field("type", "unsupported")?;

View File

@ -29,8 +29,8 @@ pub fn read_document_rels(
.ok_or(ReaderError::DocumentRelsNotFoundError)?;
let p = find_rels_filename(&main_path)?;
let p = p.to_str().ok_or(ReaderError::DocumentRelsNotFoundError)?;
let rels_xml = archive.by_name(&p)?;
let rels = read_rels_xml(rels_xml, dir)?;
let data = read_zip(archive, &p)?;
let rels = read_rels_xml(&data[..], dir)?;
Ok(rels)
}

View File

@ -9,6 +9,7 @@ mod level;
mod numbering_property;
mod numberings;
mod paragraph;
mod read_zip;
mod rels;
mod run;
mod style;
@ -27,6 +28,7 @@ pub use attributes::*;
pub use document_rels::*;
pub use errors::ReaderError;
pub use from_xml::*;
pub use read_zip::*;
pub use xml_element::*;
const DOC_RELATIONSHIP_TYPE: &str =
@ -41,19 +43,26 @@ pub fn read_docx(buf: &[u8]) -> Result<Docx, ReaderError> {
let mut archive = zip::ZipArchive::new(cur)?;
// First, the content type for relationship parts and the Main Document part
// (the only required part) must be defined (physically located at /[Content_Types].xml in the package)
let content_types_xml = archive.by_name("[Content_Types].xml")?;
let _content_types = ContentTypes::from_xml(content_types_xml)?;
let _content_types = {
let data = read_zip(&mut archive, "[Content_Types].xml")?;
ContentTypes::from_xml(&data[..])?
};
// Next, the single required relationship (the package-level relationship to the Main Document part)
// must be defined (physically located at /_rels/.rels in the package)
let rels_xml = archive.by_name("_rels/.rels")?;
let rels = Rels::from_xml(rels_xml)?;
let rels = {
let data = read_zip(&mut archive, "_rels/.rels")?;
Rels::from_xml(&data[..])?
};
// Finally, the minimum content for the Main Document part must be defined
// (physically located at /document.xml in the package):
let main_rel = rels
.find_target(DOC_RELATIONSHIP_TYPE)
.ok_or(ReaderError::DocumentNotFoundError)?;
let document_xml = archive.by_name(&main_rel.2)?;
let document = Document::from_xml(document_xml)?;
let document = {
let data = read_zip(&mut archive, &main_rel.2)?;
Document::from_xml(&data[..])?
};
let mut docx = Docx::new().document(document);
// Read document relationships
let rels = read_document_rels(&mut archive, &main_rel.2)?;
@ -61,16 +70,22 @@ pub fn read_docx(buf: &[u8]) -> Result<Docx, ReaderError> {
// Read styles
let style_path = rels.find_target_path(STYLE_RELATIONSHIP_TYPE);
if let Some(style_path) = style_path {
let styles_xml = archive.by_name(style_path.to_str().expect("should have styles"))?;
let styles = Styles::from_xml(styles_xml)?;
let data = read_zip(
&mut archive,
style_path.to_str().expect("should have styles"),
)?;
let styles = Styles::from_xml(&data[..])?;
docx = docx.styles(styles);
}
// Read numberings
let num_path = rels.find_target_path(NUMBERING_RELATIONSHIP_TYPE);
if let Some(num_path) = num_path {
let num_xml = archive.by_name(num_path.to_str().expect("should have numberings"))?;
let nums = Numberings::from_xml(num_xml)?;
let data = read_zip(
&mut archive,
num_path.to_str().expect("should have numberings"),
)?;
let nums = Numberings::from_xml(&data[..])?;
docx = docx.numberings(nums);
}

View File

@ -122,8 +122,7 @@ mod tests {
#[test]
fn test_read_indent() {
let c =
r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
let c = r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:p>
<w:pPr>
<w:ind w:left="1470" w:right="1270" w:hanging="0"/>
@ -161,8 +160,7 @@ mod tests {
#[test]
fn test_read_jc() {
let c =
r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
let c = r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:p>
<w:pPr>
<w:jc w:val="left"/>
@ -191,8 +189,7 @@ mod tests {
#[test]
fn test_read_numbering() {
let c =
r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
let c = r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:p>
<w:pPr>
<w:numPr>
@ -227,8 +224,7 @@ mod tests {
#[test]
fn test_read_insert() {
let c =
r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
let c = r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:p>
<w:ins w:id="0" w:author="unknown" w:date="2019-11-15T14:19:04Z">
<w:r>
@ -264,8 +260,7 @@ mod tests {
#[test]
fn test_read_delete() {
let c =
r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
let c = r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:p>
<w:del w:id="3" w:author="unknown" w:date="2019-11-15T14:19:04Z">
<w:r>
@ -301,8 +296,7 @@ mod tests {
#[test]
fn test_read_bookmark() {
let c =
r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
let c = r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:p>
<w:bookmarkStart w:id="0" w:name="ABCD-1234"/>
<w:r>

View File

@ -0,0 +1,24 @@
use std::io::{Cursor, Read};
use zip;
use super::ReaderError;
pub fn read_zip(
archive: &mut zip::read::ZipArchive<Cursor<&[u8]>>,
name: &str,
) -> Result<Vec<u8>, ReaderError> {
let mut p = name.to_owned();
if p.starts_with('/') {
p.remove(0);
}
let mut xml = archive.by_name(&p)?;
let mut data = vec![];
xml.read_to_end(&mut data).unwrap();
// Remove BOM
if (data[0] == 0xef) && (data[1] == 0xbb) && (data[2] == 0xbf) {
data.remove(0);
data.remove(0);
data.remove(0);
}
Ok(data)
}

View File

@ -47,8 +47,7 @@ mod tests {
#[test]
fn test_from_xml() {
let xml =
r#"<w:styles xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
let xml = r#"<w:styles xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:style w:type="character" w:styleId="FootnoteTextChar">
<w:name w:val="Footnote Text Char"></w:name>
<w:rPr>

View File

@ -72,8 +72,7 @@ mod tests {
#[test]
fn test_read_table_with_width_prop() {
let c =
r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
let c = r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:tbl>
<w:tblPr>
<w:tblW w:w="9638" w:type="dxa"/>
@ -97,8 +96,7 @@ mod tests {
#[test]
fn test_read_table_with_layout() {
let c =
r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
let c = r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:tbl>
<w:tblPr>
<w:jc w:val="center"/>

View File

@ -94,8 +94,7 @@ mod tests {
#[test]
fn test_read_cell_with_prop() {
let c =
r#"<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
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"/>

View File

@ -10,7 +10,9 @@ pub enum AlignmentType {
Center,
Left,
Right,
Both,
Justified,
Unsupported,
}
impl fmt::Display for AlignmentType {
@ -19,7 +21,9 @@ impl fmt::Display for AlignmentType {
AlignmentType::Center => write!(f, "center"),
AlignmentType::Left => write!(f, "left"),
AlignmentType::Right => write!(f, "right"),
AlignmentType::Both => write!(f, "both"),
AlignmentType::Justified => write!(f, "justified"),
_ => write!(f, "unsupported"),
}
}
}
@ -31,8 +35,9 @@ impl FromStr for AlignmentType {
"left" => Ok(AlignmentType::Left),
"right" => Ok(AlignmentType::Right),
"center" => Ok(AlignmentType::Center),
"both" => Ok(AlignmentType::Both),
"justified" => Ok(AlignmentType::Justified),
_ => Err(errors::TypeError::FromStrError),
_ => Ok(AlignmentType::Unsupported),
}
}
}

View File

@ -16,6 +16,7 @@ pub enum BreakType {
Page,
Column,
TextWrapping,
Unsupported,
}
impl fmt::Display for BreakType {
@ -24,6 +25,7 @@ impl fmt::Display for BreakType {
BreakType::Page => write!(f, "page"),
BreakType::Column => write!(f, "column"),
BreakType::TextWrapping => write!(f, "textWrapping"),
BreakType::Unsupported => write!(f, "unsupported"),
}
}
}
@ -35,7 +37,7 @@ impl FromStr for BreakType {
"page" => Ok(BreakType::Page),
"column" => Ok(BreakType::Column),
"textWrapping" => Ok(BreakType::TextWrapping),
_ => Err(errors::TypeError::FromStrError),
_ => Ok(BreakType::Unsupported),
}
}
}

View File

@ -12,6 +12,7 @@ pub enum StyleType {
Paragraph,
Character,
Numbering,
Table,
Unsupported,
}
@ -21,6 +22,7 @@ impl fmt::Display for StyleType {
StyleType::Paragraph => write!(f, "paragraph"),
StyleType::Character => write!(f, "character"),
StyleType::Numbering => write!(f, "numbering"),
StyleType::Table => write!(f, "table"),
StyleType::Unsupported => write!(f, "unsupported"),
}
}
@ -33,6 +35,7 @@ impl FromStr for StyleType {
"paragraph" => Ok(StyleType::Paragraph),
"character" => Ok(StyleType::Character),
"numbering" => Ok(StyleType::Numbering),
"table" => Ok(StyleType::Table),
_ => Ok(StyleType::Unsupported),
}
}

View File

@ -9,6 +9,7 @@ use std::str::FromStr;
pub enum VMergeType {
Continue,
Restart,
Unsupported,
}
impl fmt::Display for VMergeType {
@ -16,6 +17,7 @@ impl fmt::Display for VMergeType {
match *self {
VMergeType::Continue => write!(f, "continue"),
VMergeType::Restart => write!(f, "restart"),
VMergeType::Unsupported => write!(f, "unsupported"),
}
}
}
@ -26,7 +28,7 @@ impl FromStr for VMergeType {
match s {
"continue" => Ok(VMergeType::Continue),
"restart" => Ok(VMergeType::Restart),
_ => Err(errors::TypeError::FromStrError),
_ => Ok(VMergeType::Unsupported),
}
}
}

View File

@ -11,6 +11,7 @@ pub enum WidthType {
DXA,
Auto,
Pct,
Unsupported,
}
impl fmt::Display for WidthType {
@ -19,6 +20,7 @@ impl fmt::Display for WidthType {
WidthType::DXA => write!(f, "dxa"),
WidthType::Auto => write!(f, "auto"),
WidthType::Pct => write!(f, "pct"),
WidthType::Unsupported => write!(f, "unsupported"),
}
}
}
@ -30,7 +32,7 @@ impl FromStr for WidthType {
"dxa" => Ok(WidthType::DXA),
"auto" => Ok(WidthType::Auto),
"pct" => Ok(WidthType::Pct),
_ => Err(errors::TypeError::FromStrError),
_ => Ok(WidthType::Unsupported),
}
}
}

View File

@ -33,3 +33,139 @@ pub fn read_numbering() {
file.write_all(json.as_bytes()).unwrap();
file.flush().unwrap();
}
#[test]
pub fn read_decoration() {
let mut file = File::open("../fixtures/decoration/decoration.docx").unwrap();
let mut buf = vec![];
file.read_to_end(&mut buf).unwrap();
let json = read_docx(&buf).unwrap().json();
assert_debug_snapshot!(&json);
let path = std::path::Path::new("./tests/output/decoration.json");
let mut file = std::fs::File::create(&path).unwrap();
file.write_all(json.as_bytes()).unwrap();
file.flush().unwrap();
}
#[test]
pub fn read_highlight_and_underline() {
let mut file =
File::open("../fixtures/highlight_and_underline/highlight_and_underline.docx").unwrap();
let mut buf = vec![];
file.read_to_end(&mut buf).unwrap();
let json = read_docx(&buf).unwrap().json();
assert_debug_snapshot!(&json);
let path = std::path::Path::new("./tests/output/highlight_and_underline.json");
let mut file = std::fs::File::create(&path).unwrap();
file.write_all(json.as_bytes()).unwrap();
file.flush().unwrap();
}
#[test]
pub fn read_history() {
let mut file = File::open("../fixtures/history_libre_office/history.docx").unwrap();
let mut buf = vec![];
file.read_to_end(&mut buf).unwrap();
let json = read_docx(&buf).unwrap().json();
assert_debug_snapshot!(&json);
let path = std::path::Path::new("./tests/output/history.json");
let mut file = std::fs::File::create(&path).unwrap();
file.write_all(json.as_bytes()).unwrap();
file.flush().unwrap();
}
#[test]
pub fn read_indent_word_online() {
let mut file = File::open("../fixtures/indent_word_online/indent.docx").unwrap();
let mut buf = vec![];
file.read_to_end(&mut buf).unwrap();
let json = read_docx(&buf).unwrap().json();
assert_debug_snapshot!(&json);
let path = std::path::Path::new("./tests/output/indent_word_online.json");
let mut file = std::fs::File::create(&path).unwrap();
file.write_all(json.as_bytes()).unwrap();
file.flush().unwrap();
}
#[test]
pub fn read_tab_and_break() {
let mut file = File::open("../fixtures/tab_and_break/tab_and_break.docx").unwrap();
let mut buf = vec![];
file.read_to_end(&mut buf).unwrap();
let json = read_docx(&buf).unwrap().json();
assert_debug_snapshot!(&json);
let path = std::path::Path::new("./tests/output/tab_and_break.json");
let mut file = std::fs::File::create(&path).unwrap();
file.write_all(json.as_bytes()).unwrap();
file.flush().unwrap();
}
#[test]
pub fn read_table_docx() {
let mut file = File::open("../fixtures/table_docx/table.docx").unwrap();
let mut buf = vec![];
file.read_to_end(&mut buf).unwrap();
let json = read_docx(&buf).unwrap().json();
assert_debug_snapshot!(&json);
let path = std::path::Path::new("./tests/output/table_docx.json");
let mut file = std::fs::File::create(&path).unwrap();
file.write_all(json.as_bytes()).unwrap();
file.flush().unwrap();
}
#[test]
pub fn read_table_merged_libre_office() {
let mut file = File::open("../fixtures/table_merged_libre_office/table_merged.docx").unwrap();
let mut buf = vec![];
file.read_to_end(&mut buf).unwrap();
let json = read_docx(&buf).unwrap().json();
assert_debug_snapshot!(&json);
let path = std::path::Path::new("./tests/output/table_merged_libre_office.json");
let mut file = std::fs::File::create(&path).unwrap();
file.write_all(json.as_bytes()).unwrap();
file.flush().unwrap();
}
#[test]
pub fn read_bom() {
let mut file = File::open("../fixtures/bom/bom.docx").unwrap();
let mut buf = vec![];
file.read_to_end(&mut buf).unwrap();
let json = read_docx(&buf).unwrap().json();
assert_debug_snapshot!(&json);
let path = std::path::Path::new("./tests/output/bom.json");
let mut file = std::fs::File::create(&path).unwrap();
file.write_all(json.as_bytes()).unwrap();
file.flush().unwrap();
}
#[test]
pub fn read_bookmark() {
let mut file = File::open("../fixtures/bookmark/bookmark.docx").unwrap();
let mut buf = vec![];
file.read_to_end(&mut buf).unwrap();
let json = read_docx(&buf).unwrap().json();
assert_debug_snapshot!(&json);
let path = std::path::Path::new("./tests/output/bookmark.json");
let mut file = std::fs::File::create(&path).unwrap();
file.write_all(json.as_bytes()).unwrap();
file.flush().unwrap();
}

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

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

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

@ -14,6 +14,7 @@ import { AbstractNumbering } from "./abstract-numbering";
import { Numbering } from "./numbering";
import { BookmarkStart } from "./bookmark-start";
import { BookmarkEnd } from "./bookmark-end";
import { DocxJSON } from "./json";
import * as wasm from "../pkg";
@ -287,7 +288,7 @@ export class Docx {
}
export const readDocx = (buf: Uint8Array) => {
return wasm.readDocx(buf);
return JSON.parse(wasm.readDocx(buf)) as DocxJSON;
};
export * from "./paragraph";
@ -307,3 +308,4 @@ export * from "./break";
export * from "./delete-text";
export * from "./level";
export * from "./tab";
export * from "./json";

View File

@ -0,0 +1,7 @@
export type BorderJSON = {
position: string;
borderType: string;
size: number;
space: number;
color: string;
};

View File

@ -0,0 +1,26 @@
import { ParagraphJSON } from "./paragraph";
import { TableJSON } from "./table";
export type DocumentChildJSON = ParagraphJSON | TableJSON;
export type DocumentJSON = {
children: DocumentChildJSON[];
sectionProperty: {
pageSize: {
w: number;
h: number;
};
pageMargin: {
top: number;
left: number;
bottom: number;
right: number;
header: number;
footer: number;
gutter: number;
};
columns: number;
documentGrid: number;
};
hasNumbering: boolean;
};

View File

@ -0,0 +1,49 @@
import { Styles } from "./styles";
export type DocxJSON = {
contentType: {
types: {
[k: string]: string;
};
};
rels: [string, string, string][];
documentRels: {
hasComments: boolean;
hasNumberings: boolean;
};
docProps: {
app: {};
core: {
config: {
creator: string | null;
description: string | null;
language: string | null;
lastModifiedBy: string | null;
modified: string | null;
revision: string | null;
subject: string | null;
title: string | null;
};
};
};
styles: Styles;
document: {
children: any[];
};
comments: {
comments: any[];
};
numberings: {};
settings: {
defaultTabStop: number;
zoom: number;
};
fontTable: {};
};
export * from "./styles";
export * from "./border";
export * from "./document";
export * from "./paragraph";
export * from "./run";
export * from "./table";

View File

@ -0,0 +1,61 @@
import { RunJSON, RunChildJSON } from "./run";
export type ParagraphChildJSON =
| RunJSON
| InsertJSON
| DeleteJSON
| BookmarkStartJSON
| BookmarkEndJSON;
export type NumberingPropertyJSON = {
id: number;
level: number;
};
export type ParagraphPropertyJSON = {
runProperty: RunChildJSON;
style: string | null;
numberingProperty: NumberingPropertyJSON | null;
alignment: "left" | "center" | "right" | "justified" | "both";
};
export type ParagraphJSON = {
type: "paragraph";
data: {
property: ParagraphPropertyJSON;
children: ParagraphChildJSON[];
};
};
export type InsertJSON = {
type: "insert";
data: {
run: RunJSON;
author: string;
data: string;
};
};
export type DeleteJSON = {
type: "delete";
data: {
run: RunJSON;
author: string;
data: string;
};
};
export type BookmarkStartJSON = {
type: "bookmarkStart";
data: {
id: number;
name: string;
};
};
export type BookmarkEndJSON = {
type: "bookmarkEnd";
data: {
id: number;
};
};

View File

@ -0,0 +1,49 @@
export type RunPropertyJSON = {
sz: number | null;
szCs: number | null;
color: string | null;
highlight: string | null;
underline: string | null;
bold: boolean | null;
boldCs: boolean | null;
italic: boolean | null;
italicCs: boolean | null;
vanish: boolean | null;
};
export type RunChildJSON = TextJSON | DeleteTextJSON | TabJSON | BreakJSON;
export type TextJSON = {
type: "text";
data: {
preserveSpace: boolean;
text: string;
};
};
export type DeleteTextJSON = {
type: "deleteText";
data: {
preserveSpace: boolean;
text: string;
};
};
export type TabJSON = {
type: "tab";
};
export type BreakJSON = {
type: "break";
data: {
breakType: "page" | "column" | "textWrapping";
};
};
export type RunJSON = {
type: "run";
data: {
runProperty: RunPropertyJSON;
children: RunChildJSON[];
};
};

View File

@ -0,0 +1,17 @@
import { RunPropertyJSON } from "./run";
import { ParagraphPropertyJSON } from "./paragraph";
export type StyleJSON = {
styleId: string;
name: string;
styleType: string;
runProperty: RunPropertyJSON;
paragraphProperty: ParagraphPropertyJSON;
};
export type Styles = {
docDefaults: {
runPropertyDefault: RunPropertyJSON;
};
styles: StyleJSON[];
};

View File

@ -0,0 +1,62 @@
import { ParagraphJSON } from "./paragraph";
import { BorderJSON } from "./border";
export type TableCellChildJSON = ParagraphJSON;
export type WidthType = "DXA" | "Auto" | "Pct";
export type TableCellPropertyJSON = {
width: {
width: number;
widthType: WidthType;
} | null;
borders: any | null;
gridSpan: number | null;
verticalMerge: "restart" | "continue" | null;
hasNumbering: boolean;
};
export type TableCellJSON = {
children: TableCellChildJSON[];
property: TableCellPropertyJSON;
};
export type TableRowJSON = {
cells: TableCellJSON[];
};
export type TablePropertyJSON = {
width: {
width: number;
widthType: WidthType;
} | null;
justification: "left" | "center" | "right";
borders: {
top: BorderJSON;
left: BorderJSON;
bottom: BorderJSON;
right: BorderJSON;
insideH: BorderJSON;
insideV: BorderJSON;
} | null;
margins: {
top: number;
left: number;
bottom: number;
right: number;
} | null;
indent: {
width: number;
widthType: WidthType;
};
};
export type TableJSON = {
type: "table";
data: {
rows: TableRowJSON[];
grid: number[];
hasNumbering: boolean;
property: TablePropertyJSON;
};
};

View File

@ -1,12 +1,13 @@
{
"name": "docx-wasm",
"version": "0.0.23",
"version": "0.0.24",
"main": "dist/index.js",
"author": "bokuweb <bokuweb12@gmail.com>",
"license": "MIT",
"scripts": {
"build": "tsc -p .",
"serve": "webpack-dev-server --open --config webpack.dev.js"
"build": "tsc -p . && wasm-pack build",
"serve": "webpack-dev-server --open --config webpack.dev.js",
"prepublishOnly": "npm run build"
},
"resolutions": {
"**/serialize-javascript": "2.1.2"

Binary file not shown.

View File

@ -1 +1,13 @@
<?xml version="1.0" encoding="utf-8"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" /><Default Extension="xml" ContentType="application/xml" /><Override PartName="/word/document2.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml" /><Override PartName="/word/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml" /><Override PartName="/word/settings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml" /><Override PartName="/word/webSettings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml" /><Override PartName="/word/fontTable.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml" /><Override PartName="/word/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+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>
<?xml version="1.0" encoding="utf-8"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />
<Default Extension="xml" ContentType="application/xml" />
<Override PartName="/word/document2.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml" />
<Override PartName="/word/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml" />
<Override PartName="/word/settings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml" />
<Override PartName="/word/webSettings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml" />
<Override PartName="/word/fontTable.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml" />
<Override PartName="/word/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+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

@ -24,14 +24,14 @@
</w:tblBorders>
<w:tblCellMar>
<w:top w:w="55" w:type="dxa"/>
<w:left w:w="54" w:type="dxa"/>
<w:left w:w="53" 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="4818"/>
<w:gridCol w:w="4820"/>
<w:gridCol w:w="4819"/>
</w:tblGrid>
<w:tr>
<w:trPr></w:trPr>
@ -59,7 +59,7 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="4820" w:type="dxa"/>
<w:tcW w:w="4819" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="single" w:sz="2" w:space="0" w:color="000000"/>
<w:left w:val="single" w:sz="2" w:space="0" w:color="000000"/>
@ -88,6 +88,7 @@
<w:tcPr>
<w:tcW w:w="4818" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="single" w:sz="2" w:space="0" w:color="000000"/>
<w:left w:val="single" w:sz="2" w:space="0" w:color="000000"/>
<w:bottom w:val="single" w:sz="2" w:space="0" w:color="000000"/>
<w:insideH w:val="single" w:sz="2" w:space="0" w:color="000000"/>
@ -107,8 +108,9 @@
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="4820" w:type="dxa"/>
<w:tcW w:w="4819" w:type="dxa"/>
<w:tcBorders>
<w:top w:val="single" w:sz="2" w:space="0" w:color="000000"/>
<w:left w:val="single" w:sz="2" w:space="0" w:color="000000"/>
<w:bottom w:val="single" w:sz="2" w:space="0" w:color="000000"/>
<w:right w:val="single" w:sz="2" w:space="0" w:color="000000"/>
@ -139,5 +141,14 @@
<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:docGrid w:type="default" w:linePitch="600" w:charSpace="32768"/>
</w:sectPr>
</w:body>
</w:document>

View File

@ -1,2 +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>
<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="roman"/><w:pitch w:val="variable"/></w:font></w:fonts>

View File

@ -1,2 +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>
<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:compat></w:compat><w:themeFontLang w:val="" w:eastAsia="" w:bidi=""/></w:settings>

View File

@ -1,107 +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:kinsoku w:val="true"/>
<w:overflowPunct w:val="true"/>
<w:autoSpaceDE w:val="true"/>
<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>
<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: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: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:overflowPunct w:val="false"/><w:bidi w:val="0"/><w:jc w:val="left"/></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>

View File

@ -1,116 +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: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:style w:type="paragraph" w:styleId="Style20">
<w:name w:val="表の見出し"/>
<w:basedOn w:val="Style19"/>
<w:qFormat/>
<w:pPr>
<w:suppressLineNumbers/>
<w:jc w:val="center"/>
</w:pPr>
<w:rPr>
<w:b/>
<w:bCs/>
</w:rPr>
</w:style>
</w:styles>
<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: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:style w:type="paragraph" w:styleId="Style20"><w:name w:val="表の見出し"/><w:basedOn w:val="Style19"/><w:qFormat/><w:pPr><w:suppressLineNumbers/><w:jc w:val="center"/></w:pPr><w:rPr><w:b/><w:bCs/></w:rPr></w:style></w:styles>

File diff suppressed because one or more lines are too long