在Django中将上传的docx文件转换为pdf可以通过以下步骤实现:
pip install python-docx
pip install pdfkit
import os
from django.conf import settings
from django.http import HttpResponse
from docx import Document
import pdfkit
def convert_docx_to_pdf(request):
if request.method == 'POST' and request.FILES['docx_file']:
docx_file = request.FILES['docx_file']
temp_path = os.path.join(settings.MEDIA_ROOT, 'temp', docx_file.name)
pdf_path = os.path.join(settings.MEDIA_ROOT, 'pdf', docx_file.name.replace('.docx', '.pdf'))
with open(temp_path, 'wb') as f:
for chunk in docx_file.chunks():
f.write(chunk)
doc = Document(temp_path)
doc.save(temp_path.replace('.docx', '.html'))
pdfkit.from_file(temp_path.replace('.docx', '.html'), pdf_path)
os.remove(temp_path.replace('.docx', '.html'))
return HttpResponse(pdf_path)
else:
return HttpResponse('Invalid request.')
urls.py
文件中添加以下代码:from django.urls import path
from .views import convert_docx_to_pdf
urlpatterns = [
path('convert/', convert_docx_to_pdf, name='convert_docx_to_pdf'),
]
<form action="{% url 'convert_docx_to_pdf' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="docx_file" accept=".docx">
<button type="submit">Convert to PDF</button>
</form>
这样,当用户选择并上传一个docx文件后,服务器将会将其转换为pdf并返回生成的pdf文件的URL或文件路径。
请注意,上述代码仅提供了一个基本的示例,你可能需要根据你的具体需求进行适当的修改和优化。另外,pdfkit库使用了wkhtmltopdf工具来执行实际的转换操作,因此你需要确保在服务器上安装了wkhtmltopdf工具,并将其路径配置到Django的设置文件中。
领取专属 10元无门槛券
手把手带您无忧上云