debug PDF generation
This commit is contained in:
27
rog/views.py
27
rog/views.py
@ -2768,19 +2768,18 @@ def export_excel(request, zekken_number, event_code):
|
||||
|
||||
if format_type.lower() == 'pdf':
|
||||
try:
|
||||
# 一時ディレクトリを作成
|
||||
temp_dir = tempfile.mkdtemp()
|
||||
temp_excel = os.path.join(temp_dir, f'certificate_{zekken_number}.xlsx')
|
||||
temp_pdf = os.path.join(temp_dir, f'certificate_{zekken_number}.pdf')
|
||||
# パスとファイル名に分離
|
||||
file_dir = os.path.dirname(excel_path) # パス部分の取得
|
||||
file_name = os.path.basename(excel_path) # ファイル名部分の取得
|
||||
|
||||
# Excelファイルを一時ディレクトリにコピー
|
||||
shutil.copy2(excel_path, temp_excel)
|
||||
# ファイル名の拡張子をpdfに変更
|
||||
base_name = os.path.splitext(file_name)[0] # 拡張子を除いたファイル名
|
||||
new_file_name = base_name + ".pdf" # 新しい拡張子を追加
|
||||
|
||||
# 一時ディレクトリのパーミッションを設定
|
||||
os.chmod(temp_dir, 0o777)
|
||||
os.chmod(temp_excel, 0o666)
|
||||
# 新しいパスを作成
|
||||
pdf_path = os.path.join(file_dir, new_file_name)
|
||||
|
||||
logger.info(f"Converting Excel to PDF in temp directory: {temp_dir}")
|
||||
logger.info(f"Converting Excel to PDF in directory: {file_dir}")
|
||||
|
||||
# LibreOfficeを使用してExcelをPDFに変換
|
||||
conversion_command = [
|
||||
@ -2789,8 +2788,8 @@ def export_excel(request, zekken_number, event_code):
|
||||
'--convert-to',
|
||||
'pdf',
|
||||
'--outdir',
|
||||
temp_dir,
|
||||
temp_excel
|
||||
file_dir,
|
||||
excel_path
|
||||
]
|
||||
|
||||
logger.debug(f"Running conversion command: {' '.join(conversion_command)}")
|
||||
@ -2811,7 +2810,7 @@ def export_excel(request, zekken_number, event_code):
|
||||
logger.debug(f"Conversion output: {process.stdout}")
|
||||
|
||||
# PDFファイルの存在確認
|
||||
if not os.path.exists(temp_pdf):
|
||||
if not os.path.exists(pdf_path):
|
||||
logger.error("PDF conversion failed - output file not found")
|
||||
return Response(
|
||||
{"error": "PDF conversion failed - output file not found"},
|
||||
@ -2819,7 +2818,7 @@ def export_excel(request, zekken_number, event_code):
|
||||
)
|
||||
|
||||
# PDFファイルを読み込んでレスポンスを返す
|
||||
with open(temp_pdf, 'rb') as pdf_file:
|
||||
with open(pdf_path, 'rb') as pdf_file:
|
||||
pdf_content = pdf_file.read()
|
||||
|
||||
response = HttpResponse(pdf_content, content_type='application/pdf')
|
||||
|
||||
Reference in New Issue
Block a user