File size: 5,095 Bytes
ae4e5fc
efd39ff
 
 
 
 
ae4e5fc
efd39ff
ae4e5fc
efd39ff
 
 
 
ae4e5fc
 
efd39ff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
---
title: HTML to PDF Converter
emoji: 📄
colorFrom: blue
colorTo: purple
sdk: docker
app_file: app.py
app_port: 7860
pinned: false
short_description: Convert HTML content to A4 PDF with Japanese font support
python_version: 3.10
fullWidth: true
header: default
---

# HTML to PDF Converter

日本語対応のHTML→PDF変換APIです。複雑なレイアウトやWebフォントを含むHTMLコンテンツを、正確にA4サイズのPDFに変換します。

## 🌟 主な機能

- **日本語完全対応**: Noto Sans JP、Noto Serif JPフォントをサポート
- **A4サイズ出力**: 210mm × 297mm の正確なサイズ
- **複雑レイアウト対応**: CSSグリッド、フレックスボックス、2カラムレイアウト
- **外部リソース対応**: Google Fonts、FontAwesome、外部CSSの読み込み
- **印刷メディア最適化**: @media print スタイルの適用
- **ページ区切り制御**: 明示的なページブレーク機能

## 🚀 使い方

### WebインターフェースAPI

1. `/docs` にアクセスしてSwagger UIを使用
2. `/convert` エンドポイントにHTMLコンテンツをPOST
3. 返されたURLからPDFファイルをダウンロード

### cURLでの使用例

```bash
curl -X POST "https://your-space-url/convert" \
     -H "Content-Type: application/json" \
     -d '{"html_content": "<html><body><h1>テスト</h1></body></html>"}'
```

### ページ区切りの指定

```html
<div class="page">
    <!-- 1ページ目の内容 -->
</div>
<div class="page">
    <!-- 2ページ目の内容 -->
</div>
```

## 📋 サポートする機能

- **HTMLタグ**: 全てのHTML5タグ
- **CSSスタイル**: CSS3全般、フレックスボックス、グリッド
- **フォント**: Google Fonts、システムフォント、Webフォント
- **アイコン**: FontAwesome、その他アイコンフォント
- **画像**: PNG、JPG、SVG(Base64埋め込み推奨)
- **テーブル**: 複雑なテーブルレイアウト
- **レスポンシブ**: 印刷メディアクエリ対応

## ⚡ 技術仕様

- **PDF生成エンジン**: Playwright (Chromium)
- **フォントサポート**: Noto Sans JP、Noto Serif JP
- **ページサイズ**: A4 (210mm × 297mm)
- **マージン**: 15mm (上下左右)
- **解像度**: 高品質印刷対応
- **文字エンコーディング**: UTF-8

## 🔧 API仕様

### エンドポイント

- **POST /convert**: HTMLをPDFに変換してHugging Faceリポジトリに保存
- **GET /download/{filename}**: PDFファイルをダウンロード(HFリポジトリへリダイレクト)
- **GET /docs**: Swagger UI APIドキュメント
- **GET /health**: ヘルスチェック
- **GET /files**: Hugging Faceリポジトリ内のPDFファイル一覧

### 入力フォーマット

完全なHTMLドキュメントまたはHTMLフラグメントを受け付けます。

```html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>サンプル文書</title>
    <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;700&display=swap" rel="stylesheet">
    <style>
        body { font-family: 'Noto Sans JP', sans-serif; }
        .page { page-break-after: always; }
    </style>
</head>
<body>
    <div class="page">
        <h1>ページ1</h1>
        <p>内容...</p>
    </div>
    <div class="page">
        <h1>ページ2</h1>
        <p>内容...</p>
    </div>
</body>
</html>
```

### 出力フォーマット

- **ファイル形式**: PDF
- **ファイル名**: `document_YYYYMMDD_HHMMSS_<UUID>.pdf`
- **保存先**: Hugging Face データセットリポジトリ(環境変数で設定)
- **ダウンロード**: Hugging Face上の直接URLから即座にダウンロード可能

## 🎯 使用例

### 医療レポート
歯科医学論文のサマリーや医療レポートの生成

### ビジネス文書
提案書、報告書、プレゼンテーション資料

### 学術論文
研究レポート、学会発表資料

### 技術文書
API仕様書、開発ドキュメント

## 🛠️ 開発者向け情報

このSpaceは以下の技術で構築されています:

- **FastAPI**: RESTful API フレームワーク
- **Playwright**: ヘッドレスブラウザでのPDF生成
- **Chromium**: レンダリングエンジン
- **Uvicorn**: ASGI サーバー
- **Python**: バックエンド処理

### システム要件

- Python 3.10+
- Chromium browser dependencies
- 日本語フォントパッケージ

### 環境変数

デプロイ時に以下の環境変数を設定してください:

- **HF_DATASET_REPO_ID**: 保存先のHugging Faceデータセットリポジトリ名(例: `username/pdf-storage`)
- **HF_TOKEN**: Hugging Face API トークン(書き込み権限が必要)

## 📝 ライセンス

このプロジェクトはMITライセンスの下で公開されています。

## 🤝 貢献

バグレポートや機能要求は、GitHubのIssuesページでお願いします。

---

*このSpaceは、高品質な日本語PDF生成のために最適化されています。*