Web Analytics

hwpers

⭐ 179 stars French by Indosaram

hwpers

Crates.io Documentation CI License

Une bibliothèque Rust pour analyser les fichiers coréens Hangul Word Processor (HWP) avec prise en charge complète du rendu de mise en page.

Fonctionnalités

Analyseur (Lecture des fichiers HWP)

Éditeur (Création de fichiers HWP) - v0.3.0+

Démarrage rapide

Ajoutez ceci à votre Cargo.toml :

[dependencies]
hwpers = "0.3"

Utilisation de base

use hwpers::HwpReader;

// Parse an HWP file let document = HwpReader::from_file("document.hwp")?;

// Extract text content let text = document.extract_text(); println!("{}", text);

// Access document properties if let Some(props) = document.get_properties() { println!("Pages: {}", props.total_page_count); }

// Iterate through sections and paragraphs for (i, section) in document.sections().enumerate() { println!("Section {}: {} paragraphs", i, section.paragraphs.len()); for paragraph in §ion.paragraphs { if let Some(text) = ¶graph.text { println!(" {}", text.content); } } }

Rendu de la disposition visuelle

use hwpers::{HwpReader, render::{HwpRenderer, RenderOptions}};

let document = HwpReader::from_file("document.hwp")?;

// Create renderer with custom options let options = RenderOptions { dpi: 96, scale: 1.0, show_margins: false, show_baselines: false, };

let renderer = HwpRenderer::new(&document, options); let result = renderer.render();

// Export first page to SVG if let Some(svg) = result.to_svg(0) { std::fs::write("page1.svg", svg)?; }

println!("Rendered {} pages", result.pages.len());

Création de documents (v0.3.0+)

use hwpers::writer::HwpWriter;
use hwpers::model::hyperlink::Hyperlink;

// Create a new document let mut writer = HwpWriter::new();

// Add formatted text writer.add_aligned_paragraph( "제목", hwpers::writer::style::ParagraphAlignment::Center )?;

// Add hyperlinks let link = Hyperlink::new_url("Rust", "https://rust-lang.org"); writer.add_paragraph_with_hyperlinks( "Visit Rust website", vec![link] )?;

// Configure page layout writer.set_custom_page_size(210.0, 297.0, // A4 size hwpers::model::page_layout::PageOrientation::Portrait)?; writer.set_page_margins_mm(20.0, 20.0, 20.0, 20.0);

// Add header and footer writer.add_header("Document Header"); writer.add_footer_with_page_number("Page ", hwpers::model::header_footer::PageNumberFormat::Numeric);

// Save the document writer.save_to_file("output.hwp")?;

Accès au formatage avancé

// Access character and paragraph formatting
for section in document.sections() {
    for paragraph in §ion.paragraphs {
        // Get paragraph formatting
        if let Some(para_shape) = document.get_para_shape(paragraph.para_shape_id as usize) {
            println!("Indent: {}, Alignment: {}", 
                para_shape.indent, 
                para_shape.get_alignment()
            );
        }
        
        // Get character formatting runs
        if let Some(char_shapes) = ¶graph.char_shapes {
            for pos_shape in &char_shapes.char_positions {
                if let Some(char_shape) = document.get_char_shape(pos_shape.char_shape_id as usize) {
                    println!("Position {}: Size {}, Bold: {}", 
                        pos_shape.position,
                        char_shape.base_size / 100,
                        char_shape.is_bold()
                    );
                }
            }
        }
    }
}

Fonctionnalités prises en charge

Structure du document

Types de contenu

Mise en page et rendu

Fonctionnalités avancées

Outil en ligne de commande

La bibliothèque inclut un outil en ligne de commande pour inspecter les fichiers HWP :

# Install the tool
cargo install hwpers

Inspect an HWP file

hwp_info document.hwp

Support de Format

Cette bibliothèque supporte les fichiers au format HWP 5.0. Pour les formats HWP plus anciens, envisagez d’utiliser d’abord des outils de conversion de format.

Fonctionnalités de l’Éditeur (v0.3.0+)

La fonctionnalité d’écriture HWP a été significativement améliorée avec un support complet des fonctionnalités :

✅ Entièrement Implémenté

❌ Pas Encore Implémenté

🔧 Problèmes Connus

Contribution

Les contributions sont les bienvenues ! N'hésitez pas à soumettre une Pull Request. Pour les changements majeurs, veuillez d'abord ouvrir un ticket pour discuter de ce que vous souhaitez modifier.

Licence

Ce projet est sous licence sous l'une des licences suivantes

à votre choix.

Remerciements

--- Tranlated By Open Ai Tx | Last indexed: 2026-03-13 ---