- Ubuntu-22.04 をインストール(デフォルトでCドライブにインストールされます)
wsl.exe --install -d Ubuntu-22.04
- Ubuntu-22.04 をエクスポート
wsl --export Ubuntu-22.04 D:\tmp\Ubuntu-22.04.tar
- Ubuntu-22.04 を削除
wsl --unregister Ubuntu-22.04
- Ubuntu-22.04 を
D:\VirtualPCs\Ubuntu-22.04ディレクトリにインポート
wsl --import Ubuntu-22.04 D:\VirtualPCs\Ubuntu-22.04 D:\tmp\Ubuntu-22.04.tar
- Ubuntu-22.04 にアクセス
wsl
- Ubuntu-22.04 から退出
exit
- (オプション)Ubuntu-22.04 をシャットダウン
wsl --shutdown
パッケージソースを更新
sudo apt update && sudo apt upgrade
LibreOffice をインストール
apt install -y libreoffice
apt install -y fonts-noto-cjk fonts-noto-cjk-extra fonts-ipafont fonts-takao fonts-wqy-microhei fonts-wqy-zenhei
# fonts-noto-cjk \ # 簡体字/繁体字中国語 + 日本語
# fonts-noto-cjk-extra \# 拡張文字セット
# fonts-ipafont \ # 日本語フォント補完
# fonts-takao \ # 日本語 Gothic(ゴシック体)と Mincho(明朝体)フォント
# fonts-wqy-microhei \ # 文泉驛簡体字
# fonts-wqy-zenhei # 文泉驛繁体字
- Conda インストールスクリプトをダウンロード
cd /tmp
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
- インストールスクリプトを実行し、プロンプトに従って操作。Conda の初期化を求められた際は "yes" を入力
bash Miniconda3-latest-Linux-x86_64.sh
---
Please, press ENTER to continue
>>> yes
Do you accept the license terms? [yes|no]
[no] >>> yes
Miniconda3 will now be installed into this location:
/root/miniconda3
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/root/miniconda3] >>> ENTER
Do you wish the installer to initialize Miniconda3
by running conda init? [yes|no]
[no] >>> yes
---
- インストール完了後、Conda を有効化
sudo su - root
- (オプション)Conda を最新バージョンに更新
conda update conda
- ユーザーログイン時に Conda の base 環境をデフォルトで有効化するかどうかを設定
Conda の base 環境をデフォルトで有効化したい場合:
conda config --set auto_activate_base true
Conda の base 環境をデフォルトで有効化したくない場合:
conda config --set auto_activate_base false
To accept these channels' Terms of Service, run the following commands:
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r
仮想環境を作成
conda create -n no.1-any2pdf python=3.12 -y
conda activate no.1-any2pdf
pip install -r requirements.txt
# pip list --format=freeze > requirements.txt
python -m app.app
このAPIは、Officeファイル(Word、PowerPoint、Excel)と画像ファイル(JPEG、PNG)をPDFファイルに変換する機能を提供します。
python run_api_server.py
http://localhost:5000
現在のバージョンでは認証は不要です。
エンドポイント: GET /api/health
説明: APIサーバーの状態を確認します。
リクエスト例:
curl -X GET http://localhost:5000/api/healthレスポンス例:
{
"success": true,
"message": "APIサーバーは正常に動作しています",
"timestamp": "2024-01-15T10:30:00.000000",
"data": {
"version": "1.0.0",
"service": "PDF変換API",
"status": "healthy"
}
}エンドポイント: POST /api/convert/office
説明: OfficeファイルをPDFに変換し、変換されたPDFファイルを直接返します。
サポートファイル形式:
.docx- Microsoft Word文書.pptx- Microsoft PowerPoint プレゼンテーション.xlsx- Microsoft Excel スプレッドシート.doc- Microsoft Word文書(旧形式).ppt- Microsoft PowerPoint プレゼンテーション(旧形式).xls- Microsoft Excel スプレッドシート(旧形式)
リクエストパラメータ:
file(必須): アップロードするOfficeファイル
リクエスト例:
curl -X POST \
http://localhost:5000/api/convert/office \
-F "[email protected]"成功レスポンス:
- Content-Type:
application/pdf - Content-Disposition:
attachment; filename="元のファイル名.pdf" - PDFファイルのバイナリデータ
エンドポイント: POST /api/convert/image
説明: 画像ファイルをPDFに変換し、変換されたPDFファイルを直接返します。
サポートファイル形式:
.jpg- JPEG画像.jpeg- JPEG画像.png- PNG画像
リクエストパラメータ:
file(必須): アップロードする画像ファイル
リクエスト例:
curl -X POST \
http://localhost:5000/api/convert/image \
-F "[email protected]"成功レスポンス:
- Content-Type:
application/pdf - Content-Disposition:
attachment; filename="元のファイル名.pdf" - PDFファイルのバイナリデータ
{
"success": false,
"message": "エラーメッセージ",
"timestamp": "2024-01-15T10:45:00.000000",
"data": {}
}| HTTPステータス | 説明 | 例 |
|---|---|---|
| 400 | 不正なリクエスト | ファイルが指定されていない、サポートされていないファイル形式 |
| 404 | リソースが見つからない | 無効なファイルID、ファイルが存在しない |
| 413 | ファイルサイズが大きすぎる | 50MBを超えるファイル |
| 500 | 内部サーバーエラー | 変換処理中のエラー |
ファイルが指定されていない場合:
{
"success": false,
"message": "ファイルが指定されていません",
"timestamp": "2024-01-15T10:50:00.000000",
"data": {}
}サポートされていないファイル形式:
{
"success": false,
"message": "サポートされていないファイル形式です。許可される形式: docx, pptx, xlsx, doc, ppt, xls",
"timestamp": "2024-01-15T10:55:00.000000",
"data": {}
}ファイルサイズ制限超過:
{
"success": false,
"message": "ファイルサイズが制限(50MB)を超えています",
"timestamp": "2024-01-15T11:00:00.000000",
"data": {}
}import requests
# ヘルスチェック
response = requests.get('http://localhost:5000/api/health')
print(response.json())
# Officeファイル変換
with open('document.docx', 'rb') as f:
files = {'file': f}
response = requests.post('http://localhost:5000/api/convert/office', files=files)
if response.status_code == 200:
# PDFファイルを直接保存
with open('converted.pdf', 'wb') as pdf_file:
pdf_file.write(response.content)
print('変換完了!')
else:
print(f'エラー: {response.status_code}')// ヘルスチェック
fetch('http://localhost:5000/api/health')
.then(response => response.json())
.then(data => console.log(data));
// 画像ファイル変換
const fileInput = document.getElementById('fileInput');
const file = fileInput.files[0];
const formData = new FormData();
formData.append('file', file);
fetch('http://localhost:5000/api/convert/image', {
method: 'POST',
body: formData
})
.then(response => {
if (response.ok) {
return response.blob();
} else {
throw new Error('変換に失敗しました');
}
})
.then(blob => {
// PDFファイルを直接ダウンロード
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'converted_image.pdf';
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
document.body.removeChild(a);
})
.catch(error => {
console.error('エラー:', error.message);
});- 最大ファイルサイズ: 50MB
- 同時変換数: 制限なし(ただし、サーバーリソースに依存)
- ファイル保存期間: サーバー再起動まで(永続化されません)
- 認証: 現在未実装
- LibreOffice(Officeファイル変換用)
- Python 3.11+
- Flask
- Pillow(画像処理用)
- img2pdf(画像からPDF変換用)
# 依存関係をインストール
pip install -r requirements.txt
# APIサーバーを起動
python run_api_server.pyAPIサーバーは以下の場所にログを出力します:
- コンソール出力
api_server.logファイル
ログレベル: INFO
エラー: LibreOffice変換エラー
解決方法: LibreOfficeをインストールし、sofficeコマンドがPATHに含まれていることを確認してください。
原因:
- ファイルが破損している
- サポートされていないファイル形式
- ディスク容量不足
解決方法:
- ファイルの整合性を確認
- サポートされているファイル形式を使用
- ディスク容量を確認
原因: 大きなファイルの処理時にメモリが不足
解決方法:
- ファイルサイズを小さくする
- サーバーのメモリを増やす
- 同時処理数を制限する
