Alex
7 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