Fix even header types (#682)

* fix: header types

* 0.4.9

* fix: title_pg settings

* 0.4.11

* fix: update snaps
main
bokuweb 2024-03-04 17:51:24 +09:00 committed by GitHub
parent 72adfa699f
commit 366ff60b05
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 3859 additions and 12 deletions

View File

@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## @0.4.11 (1. Mar, 2024)
- Fixed a `title_pg` condition when read.
- Parse `even_and_odd_headers`.
## @0.4.9 (1. Mar, 2024)
- Fixed a js header/footer types.
## @0.4.8 (19. Feb, 2024)
- Fixed a bug, image in header/footer is not stored in media when read.

2
Cargo.lock generated
View File

@ -143,7 +143,7 @@ checksum = "0e25ea47919b1560c4e3b7fe0aaab9becf5b84a10325ddf7db0f0ba5e1026499"
[[package]]
name = "docx-rs"
version = "0.4.8"
version = "0.4.11"
dependencies = [
"base64",
"image",

View File

@ -1,6 +1,6 @@
[package]
name = "docx-rs"
version = "0.4.8"
version = "0.4.11"
authors = ["bokuweb <bokuweb12@gmail.com>"]
repository = "https://github.com/bokuweb/docx-rs"
edition = "2018"

View File

@ -4,7 +4,7 @@ use std::fs::File;
use std::io::{Read, Write};
pub fn main() {
let mut file = File::open("./hello.docx").unwrap();
let mut file = File::open("./header-image.docx").unwrap();
let mut buf = vec![];
file.read_to_end(&mut buf).unwrap();

View File

@ -174,6 +174,11 @@ impl Document {
self
}
pub(crate) fn first_header_without_title_pg(mut self, h: Header, rid: &str) -> Self {
self.section_property = self.section_property.first_header_without_title_pg(h, rid);
self
}
pub fn even_header(mut self, h: Header, rid: &str) -> Self {
self.section_property = self.section_property.even_header(h, rid);
self
@ -189,6 +194,11 @@ impl Document {
self
}
pub(crate) fn first_footer_without_title_pg(mut self, h: Footer, rid: &str) -> Self {
self.section_property = self.section_property.first_footer_without_title_pg(h, rid);
self
}
pub fn even_footer(mut self, h: Footer, rid: &str) -> Self {
self.section_property = self.section_property.even_footer(h, rid);
self

View File

@ -313,7 +313,9 @@ pub fn read_docx(buf: &[u8]) -> Result<Docx, ReaderError> {
.clone()
{
if let Some((header, rels)) = headers.get(&h.id) {
docx.document = docx.document.first_header(header.clone(), &h.id);
docx.document = docx
.document
.first_header_without_title_pg(header.clone(), &h.id);
let count = docx.document_rels.header_count + 1;
docx.document_rels.header_count = count;
docx.content_type = docx.content_type.add_header();
@ -356,7 +358,7 @@ pub fn read_docx(buf: &[u8]) -> Result<Docx, ReaderError> {
.clone()
{
if let Some((footer, rels)) = footers.get(&f.id) {
docx.document = docx.document.first_footer(footer.clone(), &f.id);
docx.document = docx.document.first_footer_without_title_pg(footer.clone(), &f.id);
let count = docx.document_rels.footer_count + 1;
docx.document_rels.footer_count = count;
docx.content_type = docx.content_type.add_footer();
@ -467,6 +469,7 @@ fn add_images(
if let Some(paths) = media {
for (id, media, ..) in paths {
if let Ok(data) = read_zip(archive, media.to_str().expect("should have media")) {
dbg!("--0-0", &media);
docx = docx.add_image(id, media.to_str().unwrap().to_string(), data);
}
}

View File

@ -49,6 +49,12 @@ impl FromXML for Settings {
}
}
}
XMLElement::EvenAndOddHeaders => {
let val = attributes::read_bool(&attributes);
if val {
settings = settings.even_and_odd_headers();
}
}
XMLElement::AdjustLineHeightInTable => {
settings = settings.adjust_line_height_in_table();
}

View File

@ -39,13 +39,13 @@ export type SectionPropertyJSON = {
header?: HeaderJSON;
firstHeaderReference?: HeaderReferenceJSON;
firstHeader?: HeaderJSON;
eventHeaderReference?: HeaderReferenceJSON;
eventHeader?: HeaderJSON;
evenHeaderReference?: HeaderReferenceJSON;
evenHeader?: HeaderJSON;
// footer
footerReference?: FooterReferenceJSON;
footer?: FooterJSON;
firstFooterReference?: FooterReferenceJSON;
firstFooter?: FooterJSON;
eventFooterReference?: FooterReferenceJSON;
eventFooter?: FooterJSON;
evenFooterReference?: FooterReferenceJSON;
evenFooter?: FooterJSON;
};

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -198,6 +198,14 @@ describe("reader", () => {
const json = w.readDocx(buffer);
expect(json).toMatchSnapshot();
});
test("should read even header", () => {
const buffer = readFileSync(
"../fixtures/first_even_header/first_even_header.docx"
);
const json = w.readDocx(buffer);
expect(json).toMatchSnapshot();
});
});
describe("writer", () => {