Alex
6 years ago
12 changed files with 128 additions and 0 deletions
@ -0,0 +1,5 @@ |
|||||
|
__pycache__/ |
||||
|
*.pyc |
||||
|
*~ |
||||
|
app/uploads/ |
||||
|
app/mydatabase.db |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,56 @@ |
|||||
|
import PyPDF2 |
||||
|
from wand.image import Image |
||||
|
import io |
||||
|
import os |
||||
|
|
||||
|
|
||||
|
def pdf_page_to_png(src_pdf, pagenum = 0, resolution = 72,): |
||||
|
""" |
||||
|
Returns specified PDF page as wand.image.Image png. |
||||
|
:param PyPDF2.PdfFileReader src_pdf: PDF from which to take pages. |
||||
|
:param int pagenum: Page number to take. |
||||
|
:param int resolution: Resolution for resulting png in DPI. |
||||
|
""" |
||||
|
dst_pdf = PyPDF2.PdfFileWriter() |
||||
|
dst_pdf.addPage(src_pdf.getPage(pagenum)) |
||||
|
|
||||
|
pdf_bytes = io.BytesIO() |
||||
|
dst_pdf.write(pdf_bytes) |
||||
|
pdf_bytes.seek(0) |
||||
|
|
||||
|
img = Image(file = pdf_bytes, resolution = resolution) |
||||
|
img.convert("png") |
||||
|
|
||||
|
return img |
||||
|
|
||||
|
|
||||
|
def get_cover(file_path, filename): |
||||
|
# Main |
||||
|
# ==== |
||||
|
print(file_path) |
||||
|
src_filename = file_path |
||||
|
|
||||
|
src_pdf = PyPDF2.PdfFileReader(open(src_filename, "rb")) |
||||
|
|
||||
|
# What follows is a lookup table of page numbers within sample_log.pdf and the corresponding filenames. |
||||
|
pages = [{"pagenum": 0, "filename": filename}] |
||||
|
|
||||
|
# Convert each page to a png image. |
||||
|
for page in pages: |
||||
|
big_filename = "app/uploads/cover/"+page["filename"] + "_cover.png" |
||||
|
small_filename = "app/uploads/cover/"+page["filename"] + "cover_small" + ".png" |
||||
|
|
||||
|
img = pdf_page_to_png(src_pdf, pagenum = page["pagenum"], resolution = 300) |
||||
|
img.save(filename = big_filename) |
||||
|
|
||||
|
# Ensmallen |
||||
|
img.transform("", "200") |
||||
|
img.save(filename = small_filename) |
||||
|
|
||||
|
return page["filename"] + "_cover.png" |
||||
|
|
||||
|
#--- |
||||
|
#epub |
||||
|
#https://ebooks.stackexchange.com/questions/6517/command-line-extraction-of-metadata-title-author-from-epub-file |
||||
|
#https://hackage.haskell.org/package/epub-tools |
||||
|
#http://stackoverflow.com/questions/9751475/extract-cover-image-from-chm-and-epub-files |
Binary file not shown.
Binary file not shown.
@ -0,0 +1,37 @@ |
|||||
|
{% extends 'base.html' %} |
||||
|
|
||||
|
{% block main %} |
||||
|
<div class="container"> |
||||
|
|
||||
|
<a href="{{ url_for('show_book_by_id', id=book.id )}}">back</a> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<form method="POST" action="{{ url_for('edit_book_by_id', id=book.id )}}"> |
||||
|
{{ form.csrf_token }} |
||||
|
|
||||
|
<div class="form-group"><h1 class="header">{{ form.title.label }} {{ form.title(size=20, class="form-control") }}</h1></div> |
||||
|
<img src="../../uploads/cover/{{ book.cover }}" width="200"> |
||||
|
<br> <br> |
||||
|
<div data-toggle="fieldset" id="phone-fieldset"> |
||||
|
{{ form.author.label }} <button type="button" data-toggle="fieldset-add-row" |
||||
|
data-target="#phone-fieldset">+</button> |
||||
|
<table> |
||||
|
<tr> |
||||
|
<th></th> |
||||
|
<th></th> |
||||
|
</tr> |
||||
|
{% for author in form.author %} |
||||
|
<tr data-toggle="fieldset-entry"> |
||||
|
<td>{{ author.author_name }}</td> |
||||
|
<td><button type="button" data-toggle="fieldset-remove-row" id="phone-{{loop.index0}}-remove">-</button></td> |
||||
|
</tr> |
||||
|
{% endfor %} |
||||
|
</table> |
||||
|
</div> |
||||
|
<br> |
||||
|
<button type="submit" class="btn btn-primary">Update</button> |
||||
|
</form> |
||||
|
|
||||
|
</div> |
||||
|
{% endblock %} |
@ -0,0 +1,30 @@ |
|||||
|
{% extends "base.html" %} |
||||
|
|
||||
|
{% block title %}Red link page{% endblock %} |
||||
|
|
||||
|
{% block css %} |
||||
|
<style type="text/css"> |
||||
|
body{ |
||||
|
padding-top: 40px; |
||||
|
} |
||||
|
h1, p{ |
||||
|
text-align:center; |
||||
|
} |
||||
|
h1{ |
||||
|
font-size:44px; |
||||
|
margin:75px 0 50px; |
||||
|
} |
||||
|
p{ |
||||
|
font-size:14px; |
||||
|
margin:15px 0; |
||||
|
} |
||||
|
</style> |
||||
|
{% endblock %} |
||||
|
|
||||
|
{% block header %}{% endblock %} |
||||
|
|
||||
|
{% block main %} |
||||
|
<h1>ID: {{ id }}</h1> |
||||
|
<p>red link page</p> |
||||
|
<p><a href="{{ url_for('home') }}">go back home</a>?</p> |
||||
|
{% endblock %} |
Binary file not shown.
Loading…
Reference in new issue