28d9c29b35
- 添加 .gitignore 配置 - 添加 HTML 简历模板 (resume.html) - 添加转换脚本 (convert.js, convert.py) - 添加字体下载脚本 (download_font.js) - 添加项目配置 (package.json)
64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
import subprocess
|
|
import sys
|
|
|
|
# Install required packages
|
|
def install_packages():
|
|
packages = ['imgkit', 'Pillow']
|
|
for package in packages:
|
|
try:
|
|
__import__(package.lower().replace('-', '_'))
|
|
except ImportError:
|
|
print(f"Installing {package}...")
|
|
subprocess.check_call([sys.executable, "-m", "pip", "install", package])
|
|
|
|
install_packages()
|
|
|
|
import imgkit
|
|
from PIL import Image
|
|
import os
|
|
|
|
def html_to_jpg(html_file, output_file, width=2478):
|
|
"""Convert HTML file to high-quality JPG"""
|
|
|
|
# First, check if wkhtmltopdf/wkhtmltoimage is installed
|
|
try:
|
|
subprocess.run(['wkhtmltoimage', '--version'], capture_output=True, check=True)
|
|
except FileNotFoundError:
|
|
print("wkhtmltoimage not found. Please install it:")
|
|
print("sudo apt-get install wkhtmltopdf")
|
|
print("Or download from: https://wkhtmltopdf.org/downloads.html")
|
|
return False
|
|
|
|
# Convert HTML to JPG using imgkit
|
|
options = {
|
|
'format': 'jpg',
|
|
'quality': 100,
|
|
'width': width,
|
|
'enable-local-file-access': '',
|
|
'encoding': 'UTF-8',
|
|
'no-stop-slow-scripts': '',
|
|
}
|
|
|
|
try:
|
|
imgkit.from_file(html_file, output_file, options=options)
|
|
print(f"Successfully converted {html_file} to {output_file}")
|
|
|
|
# Verify the output
|
|
with Image.open(output_file) as img:
|
|
print(f"Output image size: {img.size}")
|
|
print(f"Output image mode: {img.mode}")
|
|
|
|
return True
|
|
except Exception as e:
|
|
print(f"Error converting HTML to JPG: {e}")
|
|
return False
|
|
|
|
if __name__ == "__main__":
|
|
html_file = "/home/wonder/code/resume/resume.html"
|
|
output_file = "/home/wonder/code/resume/resume_output.jpg"
|
|
|
|
if html_to_jpg(html_file, output_file):
|
|
print(f"\nOutput saved to: {output_file}")
|
|
else:
|
|
print("Conversion failed!")
|