วิธีการแปลงไฟล์ .html เป็น pdf ด้วย wkhtmltopdf ร่วมกับ flask
โพสต์แล้ว: 20/07/2019 11:48 am
วิธีการแปลงไฟล์ .html เป็น pdf ด้วย wkhtmltopdf ร่วมกับ flask
flask คือ เป็นตัวที่ใช้สำหรับการสร้างเว็บไซต์ ซึ่งสามารถใช้จัดการหน้าเว็บไซต์ wkhtmltopdf คือ เป็นโปรแกรมที่ใช้สำหรับการนำ HTML มาแปลงเป็น PDF นะครับ สำหรับคนที่กำลังหา วิธีการนำไฟล์ html มาแปลงเป็น pdf นะครับ ผมมีวิธีมาแชร์ แต่ที่จริงแล้ว ตัว wkhtmltopdf สามารถนำ linkurl ของหน้าเว็บไซต์มาแปลงได้เลยก็ได้ แต่วันนี้ผมจะมาแชร์ในการ upload file เข้ามาแปลงนะครับวิธีมีดังนี้นะครับ และมีในรูปแบบของ cURL อีกด้วยครับ
รูปแบบ curl มีคำสั่งดังนี้
ชื่อไฟล์ ต้องมีอยู่ในตำแหน่งปัจจุบันนะครับ ถ้าตำเเหน่งอื่นต้องระบุ path ด้วย
ตัวอย่าง
โค้ดไฟล์ที่จะ upload มาแปลงนะครับ
โค้ด หน้า upload
ส่วนนี้จะโค้ดหน้า python
ในส่วน path ในโค้ด การเก็บไฟล์ที่เรา upload มาแปลงต้องแก้ไขตามเครื่องของคุณนะครับ
รูป directory file นะครับ
รูปหน้า upload
ผลในการแปลงนะครับ
อ้างอิง
http://www.gastonsanchez.com/visually-enforced/how-to/2017/11/10/Converting-HTML-files-to-PDF/
https://www.wkhtmltopdf.org/
flask คือ เป็นตัวที่ใช้สำหรับการสร้างเว็บไซต์ ซึ่งสามารถใช้จัดการหน้าเว็บไซต์ wkhtmltopdf คือ เป็นโปรแกรมที่ใช้สำหรับการนำ HTML มาแปลงเป็น PDF นะครับ สำหรับคนที่กำลังหา วิธีการนำไฟล์ html มาแปลงเป็น pdf นะครับ ผมมีวิธีมาแชร์ แต่ที่จริงแล้ว ตัว wkhtmltopdf สามารถนำ linkurl ของหน้าเว็บไซต์มาแปลงได้เลยก็ได้ แต่วันนี้ผมจะมาแชร์ในการ upload file เข้ามาแปลงนะครับวิธีมีดังนี้นะครับ และมีในรูปแบบของ cURL อีกด้วยครับ
รูปแบบ curl มีคำสั่งดังนี้
โค้ด: เลือกทั้งหมด
curl -i -X POST -F fileupload=@[ชื่อไฟล์ html ] http://localhost:5000/upload
ตัวอย่าง
โค้ด: เลือกทั้งหมด
curl -i -X POST -F [email protected] http://localhost:5000/upload
โค้ด: เลือกทั้งหมด
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3>TEST</h3>
<h3>HTML</h3>
<h3>convert</h3>
<h3>PDF</h3>
</body>
</html>
โค้ด: เลือกทั้งหมด
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/upload" method="POST" enctype="multipart/form-data">
<input type="file" name="fileupload" placeholder="password" class="form-control" id="password" required><br>
<input type="submit" value="upload" class="btn btn-success">
</form>
</body>
</html>
โค้ด: เลือกทั้งหมด
from flask import Flask, request,url_for, render_template, send_file
import os ,subprocess
UPLOAD_FOLDER = '/home/com001/PycharmProjects/test1/uploads'
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/')
def index():
return render_template('home.html')
@app.route("/upload", methods=['POST'])
def uploaded():
if request.method == 'POST':
f = request.files['fileupload']
f.save(os.path.join(app.config['UPLOAD_FOLDER'], f.filename))
path_bin = 'wkhtmltopdf'
str ='test.pdf'
fileupload =os.path.join('uploads/', f.filename)
path = os.path.join('pdf/', str)
subprocess.call([path_bin,fileupload,path])
path_sh = 'pdf/' + str
response = send_file(path_sh)
response.headers['Content-Type'] = 'application/pdf'
response.headers['Content-Disposition'] = 'inline; filename=download.pdf'
return response
if __name__ == '__main__':
app.run(debug=True)
โค้ด: เลือกทั้งหมด
UPLOAD_FOLDER = '/home/com001/PycharmProjects/test1/uploads'
http://www.gastonsanchez.com/visually-enforced/how-to/2017/11/10/Converting-HTML-files-to-PDF/
https://www.wkhtmltopdf.org/