Compare commits

..

No commits in common. "03daf77afb7d0d9a8cee6f4b7db45cf0e7a93b00" and "6b66b83f5d1d02ec5d96a155d6ea7685321b316e" have entirely different histories.

4 changed files with 12 additions and 114 deletions

View File

@ -10,7 +10,7 @@ AUTHOR="Yɛn Ara"
PUBLISHER="AQO\\\\ABA" PUBLISHER="AQO\\\\ABA"
PUBLISHER="twi\TeX" PUBLISHER="twi\TeX"
EDITION="First Edition" EDITION="First Edition"
COMPILATION_RUNS="3" COMPILATION_RUNS="1"
INFILES=""" INFILES="""
Anansesem - Ghanaian Folk Tales Anansesem - Ghanaian Folk Tales
testfiles/parallel-ak.md testfiles/parallel-ak.md

View File

@ -1,9 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from pypdf import PaperSize, PdfReader, PdfWriter, Transformation from pypdf import PdfReader
from pypdf.generic import RectangleObject from pypdf import PdfWriter
import argparse import argparse
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
prog='pdf2book', prog='pdf2book',
@ -14,7 +12,6 @@ parser.add_argument('pdf_file') # positional argument
#parser.add_argument('pages', type=int) # positional argument #parser.add_argument('pages', type=int) # positional argument
#parser.add_argument('-s', '--signature') # option that takes a value #parser.add_argument('-s', '--signature') # option that takes a value
parser.add_argument('-v', '--verbose', action='store_true') # on/off flag parser.add_argument('-v', '--verbose', action='store_true') # on/off flag
parser.add_argument('-z', '--zine', action='store_true', help='Input pdf needs to be 16 pages')
parser.add_argument('-s', '--signature', parser.add_argument('-s', '--signature',
dest='signature', dest='signature',
type=int, type=int,
@ -86,7 +83,6 @@ def get_reorder(number_of_pages: int, signature_size: int):
#print(lst) #print(lst)
#print(len(lst)) #print(len(lst))
return lst return lst
def print_signatures(lst: list,signature_size: int): def print_signatures(lst: list,signature_size: int):
if signature_size==0: signature_size=1 if signature_size==0: signature_size=1
for i in range( len( lst ) ): for i in range( len( lst ) ):
@ -96,9 +92,13 @@ def print_signatures(lst: list,signature_size: int):
print(lst[i], end=' ') print(lst[i], end=' ')
else: else:
print(lst[i],end='.') print(lst[i],end='.')
lst=get_reorder(number_of_pages, signature_size)
print_signatures(lst,signature_size)
# REARRANGING OF PAGES # REARRANGING OF PAGES
def rearrange_pages(reader, lst): def rearrange_pages(reader, lst):
writer = PdfWriter() writer = PdfWriter()
for page in lst: for page in lst:
# print(page) # print(page)
@ -106,109 +106,11 @@ def rearrange_pages(reader, lst):
writer.add_blank_page(width=reader.pages[0].mediabox.width,height=reader.pages[0].mediabox.height) writer.add_blank_page(width=reader.pages[0].mediabox.width,height=reader.pages[0].mediabox.height)
else: else:
writer.add_page(reader.pages[page-1]) writer.add_page(reader.pages[page-1])
return writer return writer
def make_zine(reader, lst): # SAVE FILE TO DISK
# _____________________
# | 1r | 8r | 7r | 6r |
# ---------------------
# | 2 | 3 | 4 | 5 |
# ---------------------
#
# _________________________
# | 9r | 16r | 15r | 14r |
# -------------------------
# | 10 | 11 | 12 | 13 |
# -------------------------
#
# todo
# - [ ] alternative folding 1 for zine
# _____________________
# | 3r | 2r | 1r | 8r |
# ---------------------
# | 4 | 5 | 6 | 7 |
# ---------------------
# _________________________
# | 11r | 10r | 9r | 16r |
# -------------------------
# | 12 | 13 | 14 | 15 |
# -------------------------
#
page_order=[
2, 3, 4, 5,
1, 8, 7, 6,
10,11,12,13,
9,16,15,14
]
print("zine")
# Create a destination file, and add a blank page to it
writer = PdfWriter()
# Copy source page to destination page, several times
for i in range(2):
destpage = writer.add_blank_page(
width=PaperSize.A4.height,
height=PaperSize.A4.width
)
for y in range(2):
for x in range(4):
pageposition=8*i+4*y+x
sourcepage=reader.pages[page_order[pageposition]-1]
mb=sourcepage.mediabox
sourcepage.cropbox = RectangleObject((
-2*mb.right,
-4*mb.top,
2*mb.right,
2*mb.top
))
if y == 1:
transformation = Transformation().rotate(180)
r="r"
sourcepage.add_transformation(transformation)
tx_val=(1*x+1) * sourcepage.mediabox.width
ty_val=2*y * sourcepage.mediabox.height
else:
tx_val=x * sourcepage.mediabox.width
ty_val=2*y * sourcepage.mediabox.height
r=" "
if x==3:
print(page_order[pageposition],r)
else:
print(page_order[pageposition],r,end=' ')
destpage.merge_transformed_page(
sourcepage,
Transformation(
).translate(
tx=tx_val,
ty=ty_val,
).scale(
sx=0.5,
sy=0.5
)
, expand=True
)
# destpage.
destpage.mediabox = RectangleObject((
0,
0,
2*mb.right,
1*mb.top
))
#writer.add_page(destpage)
# destpage = writer.add_blank_page(
# width=PaperSize.A4.height,
# height=PaperSize.A4.width
# )
return writer
lst=get_reorder(number_of_pages, signature_size)
if args.zine :
writer=make_zine(reader, lst)
# signature_size=zine
outfile=args.pdf_file.split(".pdf")[0]+"_zine.pdf"
else:
print_signatures(lst,signature_size)
writer=rearrange_pages(reader,lst) writer=rearrange_pages(reader,lst)
outfile=args.pdf_file.split(".pdf")[0]+"_book_s"+str(signature_size)+".pdf" outfile=args.pdf_file.split(".pdf")[0]+"_book_s"+str(signature_size)+".pdf"
# SAVE FILE TO DISK
with open(outfile, "wb") as fp: with open(outfile, "wb") as fp:
writer.write(fp) writer.write(fp)

View File

@ -3,12 +3,8 @@
import os import os
import shutil import shutil
### USAGE
# from command line, yaml file or env vars # from command line, yaml file or env vars
def parse_options(filename="anansesem.yaml"): def parse_options(filename="conf.yaml"):
import yaml import yaml
with open(filename) as stream: with open(filename) as stream:
try: try:
@ -190,7 +186,7 @@ def convert_text_format(conf):
) )
print(infile) print(infile)
## MAIN ## MAIN
conf=parse_options("anansesem.yaml") conf=parse_options()
project_dir=create_project_dir(conf) project_dir=create_project_dir(conf)
create_skel(project_dir, conf) create_skel(project_dir, conf)
infiles=conf['project-options']['infiles'] infiles=conf['project-options']['infiles']

Binary file not shown.