Fix even header types (#682)
* fix: header types * 0.4.9 * fix: title_pg settings * 0.4.11 * fix: update snapsmain
parent
72adfa699f
commit
366ff60b05
|
@ -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.
|
||||
|
|
|
@ -143,7 +143,7 @@ checksum = "0e25ea47919b1560c4e3b7fe0aaab9becf5b84a10325ddf7db0f0ba5e1026499"
|
|||
|
||||
[[package]]
|
||||
name = "docx-rs"
|
||||
version = "0.4.8"
|
||||
version = "0.4.11"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"image",
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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
|
@ -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", () => {
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue