Web Analytics

hwpers

⭐ 179 stars Japanese by Indosaram

hwpers

Crates.io Documentation CI License

完全なレイアウトレンダリングサポートを備えた韓国語ハングルワードプロセッサ(HWP)ファイル解析用のRustライブラリ。

特徴

パーサー(HWPファイルの読み込み)

ライター(HWPファイルの作成) - v0.3.0以降

クイックスタート

Cargo.tomlに以下を追加してください:

[dependencies]
hwpers = "0.3"

基本的な使い方

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); } } }

ビジュアルレイアウトレンダリング

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());

ドキュメントの作成 (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")?;

高度なフォーマットアクセス

// 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()
                    );
                }
            }
        }
    }
}

対応機能

ドキュメント構造

コンテンツタイプ

レイアウトとレンダリング

高度な機能

コマンドラインツール

本ライブラリにはHWPファイルを検査するためのコマンドラインツールが含まれています:

# Install the tool
cargo install hwpers

Inspect an HWP file

hwp_info document.hwp

フォーマット対応

このライブラリはHWP 5.0形式のファイルをサポートしています。古いHWP形式の場合は、まずフォーマット変換ツールの使用を検討してください。

ライタ機能(v0.3.0以降)

HWPライタ機能は大幅に改善され、包括的な機能サポートが実現されています:

✅ 完全実装

❌ 未実装

🔧 既知の問題

貢献について

貢献は大歓迎です!プルリクエストの提出をお気軽にどうぞ。大きな変更の場合は、まず変更内容について議論するためにIssueを開いてください。

ライセンス

本プロジェクトは以下いずれかのライセンスの下で提供されています。

お好みのライセンスを選択してください。

謝辞

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