pvanand commited on
Commit
d4afb46
·
verified ·
1 Parent(s): 342e0ab

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +46 -1
main.py CHANGED
@@ -109,4 +109,49 @@ async def convert_to_pdf(request: HTMLRequest):
109
  pdf = pdfkit.from_string(request.html_content, False, options=options)
110
  return Response(content=pdf, media_type="application/pdf")
111
  except Exception as e:
112
- raise HTTPException(status_code=500, detail=str(e))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
  pdf = pdfkit.from_string(request.html_content, False, options=options)
110
  return Response(content=pdf, media_type="application/pdf")
111
  except Exception as e:
112
+ raise HTTPException(status_code=500, detail=str(e))
113
+
114
+
115
+ from html4docx import HtmlToDocx
116
+ import io
117
+ import tempfile
118
+ import os
119
+
120
+ class HTMLInput(BaseModel):
121
+ html: str
122
+
123
+ @app.post("/convert")
124
+ async def convert_html_to_docx(input_data: HTMLInput):
125
+ temp_file = None
126
+ try:
127
+ # Create a new HtmlToDocx parser
128
+ parser = HtmlToDocx()
129
+
130
+ # Parse the HTML string to DOCX
131
+ docx = parser.parse_html_string(input_data.html)
132
+
133
+ # Create a temporary file
134
+ temp_file = tempfile.NamedTemporaryFile(delete=False, suffix='.docx')
135
+ temp_filename = temp_file.name
136
+
137
+ # Save the DOCX to the temporary file
138
+ docx.save(temp_filename)
139
+
140
+ # Open the file and read its contents
141
+ with open(temp_filename, 'rb') as file:
142
+ file_contents = file.read()
143
+
144
+ # Return the DOCX file as a response
145
+ return fastapi.responses.Response(
146
+ content=file_contents,
147
+ media_type="application/vnd.openxmlformats-officedocument.wordprocessingml.document",
148
+ headers={"Content-Disposition": "attachment; filename=converted.docx"}
149
+ )
150
+ except Exception as e:
151
+ raise HTTPException(status_code=500, detail=str(e))
152
+ finally:
153
+ # Clean up: close and remove the temporary file
154
+ if temp_file:
155
+ temp_file.close()
156
+ os.unlink(temp_file.name)
157
+