diff --git a/colophon.py b/colophon.py index 4e618a8..7f3f3ff 100644 --- a/colophon.py +++ b/colophon.py @@ -1,297 +1,39 @@ -#!/bin/python -""" -A script for generating A5 size pdf zines -with a text-file input, under development, -GPL3 Licence, Mara Karagianni May 2021 -""" -import glob -import re import sys -import subprocess -from fpdf import FPDF -# ref https://pyfpdf.readthedocs.io/en/latest/ - -# Variables -header_font = 'helvetica' -header_font_size = 14 -text_font_size = 12 - -top_margin = 20 -left_margin = 20 -right_margin = 20 -left_max_margin = 160 - -max_height = 190 -left_x = 20 -top_y = 30 -cell_width = 110 -cell_header_height = 16 -cell_height = 6 - -# Image variables -img_x = 20 -img_y = 80 -img_len = 120 - -# file to get the text -if len(sys.argv) > 1: - filename = sys.argv[1] -else: - filename = "./notes_sample" +from zine_maker import Zine -class Zine(FPDF): +def make_colophon(): - def add_new_signature(self, top_margin, left_margin, right_margin): - # create new page/signature - self.add_page() - self.set_margins(left_margin, top_margin, right_margin) - self.set_xy(left_margin, top_margin) - print('NEW SIGNATURE') + # Variables + text_font_size = 12 - def move_to_page_right(self, top_margin, left_max_margin, right_margin): - print('*****') - print("BOTTOM OF LEFT PAGE, height is {}".format(self.get_y())) - print('*****') - self.set_margins(top_margin, left_max_margin, right_margin) - self.set_xy(left_max_margin, top_margin) + # set font for all text + zine = Zine(orientation="P", unit="mm", format="A5") - def position_img(self, img_filename, img_x, img_y, **kwargs): - img_size = subprocess.run( - ["identify", "-format", - "%[fx:w/72] by %[fx:h/72] inches", - "./%s" % img_filename], - stdout=subprocess.PIPE, text=True) + # cover font + zine.add_font( + 'CasaleNBP', '', r"/home/mara/.fonts/CasaletwoNbp-Bp4V.ttf", uni=True) + cover_font = 'CasaleNBP' - img_height_inches = img_size.stdout.split(' ')[2] - img_width_inches = img_size.stdout.split(' ')[0] - img_height_mm = float(img_height_inches) * float(24.5) - img_width_mm = float(img_width_inches) * float(24.5) + # text font + zine.add_font( + 'Kpalter', '', + r"/home/mara/.fonts/KpProgrammerAlternatesNbp-Zg1q.ttf", uni=True) + text_font = 'Kpalter' + zine.set_font(text_font, '', size=text_font_size) - if kwargs: - max_height = kwargs["max_height"] - left_margin = kwargs["left_margin"] - top_margin = kwargs["top_margin"] - - if self.get_y() + img_height_mm >= max_height: - self.add_page() - self.set_xy(left_margin, top_margin) - img_y = top_margin - - previous_y = self.get_y() - # center image - img_x = (150 - img_width_mm) / 2 - self.image(img_filename, img_x, img_y, img_width_mm) - - # move y at the bottom of the image - # TODO check if get_y() would do the same job - self.set_xy(self.get_x(), previous_y+img_height_mm) - - def shuffle_chapters(self, pdfinput): - subprocess.run( - ["pdfseparate", "./%s" % pdfinput, "./%02d_chapter.pdf"], - stdout=subprocess.PIPE, text=True) - pages = glob.glob("./*_chapter.pdf") - pages.sort() - print("CHAPTERS {}".format(pages)) - shuffled_list = [] - count = 0 - while count < (len(pages))/2: - shuffled_list.append(pages[-(count+1)]) - shuffled_list.append(pages[count]) - count += 1 - # reverse - if count != len(pages)/2: - shuffled_list.append(pages[count]) - shuffled_list.append(pages[-(count+1)]) - count += 1 - return shuffled_list - - def create_pages(self, filename, max_height, left_margin, - left_max_margin, top_margin, right_margin, - cell_width, cell_height, cell_header_height, - header_font, text_font): - chapter = 0 - lines = open(filename).readlines() - print(filename) - - # first page - print("FIRST PAGE") - self.set_margins(left_margin, top_margin, - right_margin) - self.set_xy(left_margin, top_margin) - self.add_page() - - for line in lines: - - if ">>" in line: - self.set_font(text_font, '', size=16) - self.cell(cell_width, cell_height, line, - 0, ln=1, align='L') - self.set_font(text_font, '', size=text_font_size) - - # check if we have an image - elif line.startswith(""): - img_filename = line.split("")[1] - kwargs = { - "max_height": max_height, - "left_margin": left_margin, - "top_margin": top_margin - } - self.position_img( - img_filename, self.get_x(), self.get_y(), **kwargs) - - # check if we have a title - elif line.startswith("

"): - line = re.sub('((

)|(

$))', '', line) - self.set_text_color(255, 0, 255) - self.set_font(text_font, size=22) - if self.get_y() > top_margin: - self.set_xy(left_margin, top_margin+9) - self.add_page() - self.cell(cell_width, cell_header_height, line, - 0, ln=1, align='C') - left_x = self.get_x() - top_y = self.get_y() - self.dashed_line( - left_x, top_y, left_x+cell_width, top_y, - dash_length=3, space_length=3) - self.set_text_color(0, 0, 0) - self.set_font(text_font, size=text_font_size) - - elif line.startswith(""): - line = re.sub('(()|($))', '', line) - self.set_font(text_font, '', size=18) - self.cell(cell_width, cell_height, line, - 0, ln=1, align='L') - self.set_font(text_font, '', size=text_font_size) - - elif line.startswith("#"): - self.set_font('helvetica', 'B', size=9) - self.set_text_color(209, 17, 65) - self.multi_cell(cell_width, cell_height, line, - 0, align='L') - # go back to text font - self.set_text_color(0, 0, 0) - self.set_font(text_font, '', size=text_font_size) - - elif line.startswith("$") or line.startswith("(venv)"): - self.set_font('helvetica', 'B', size=9) - self.set_text_color(0, 30, 255) - - self.multi_cell(cell_width, cell_height, line, - 0, align='L') - # go back to text font - self.set_text_color(0, 0, 0) - self.set_font(text_font, '', size=text_font_size) - - elif line.startswith(""): - #line = re.sub('($)', '', line) - self.set_font('helvetica', 'B', size=9) - self.set_text_color(0,80,115) - self.multi_cell(cell_width, cell_height, line, - 0, align='L') - elif line.startswith(""): - #line = re.sub('($)', '', line) - self.multi_cell(cell_width, cell_height, line, - 0, align='L') - self.set_font(text_font, '', text_font_size) - self.set_text_color(0, 0, 0) - - elif "" in line: - line = re.sub('($)', '', line) - self.set_font(text_font, '', size=18) - self.set_text_color(0, 0, 0) - self.set_text_color(41, 98, 255) - self.cell(cell_width/8, cell_height, line, 0, align='C') - - elif "" in line: - line = re.sub('($)', '', line) - self.set_font(text_font, '', size=text_font_size) - self.set_text_color(0, 0, 0) - self.multi_cell(cell_width, cell_height, line, - 0, align='L') - - else: - # check if we need the following - variable_x = self.get_x() - self.multi_cell(cell_width, cell_height, line, 0, align='L') - self.set_xy(variable_x, self.get_y()) - - #self.footer() - - def cover(self, title, cover_font, max_height): - col = 10 - margin = 15 - import random - self.set_margins(margin, margin, margin) - self.add_page() - for letter in title: - if self.get_y() >= max_height: - self.set_xy(margin+col, margin) - col += 40 - size = random.randrange(30, 50, 15) - self.set_font(cover_font, '', size) - variable_x = margin+col - print("LETTER {}, POSITION Y {}".format(letter, self.get_y())) - print("VAR X {}".format(variable_x)) - self.set_xy(variable_x, self.get_y()) - - self.cell(size, size, letter) - self.line(size, size, self.get_x(), self.get_y()) - if(size % 2 == 0): - var = "DF" - #r = 138, 43, 226 - R = random.randrange(30, 255, 40) - G = random.randrange(0, 55, 55) - B = random.randrange(0, 155, 50) - self.set_fill_color(R, G, 255) - else: - var = "D" - print(var) - self.rect( - float(self.get_x()), float(self.get_y()), - float(size/2), float(size*4), style = var) - self.ln(size/2) - - def colophon(self, text): - lines = open(text, 'r').readlines() - top_margin = 20 - margin = 25 - self.add_font( - 'CasaleNBP', '', r"/home/mara/.fonts/CasaletwoNbp-Bp4V.ttf", - uni=True) - self.set_margins(margin, top_margin, margin) - size = 11 - cover_font = 'CasaleNBP' - self.set_font(cover_font, '', size) - self.add_page() - for line in lines: - self.multi_cell(100, size, line, 0, align='C') - -# def footer(self): -# # Go to 1.5 cm from bottom -# self.set_y(-15) -# # Select Arial italic 8 -# #self.set_font('Arial', 'I', 8) -# self.set_text_color(0, 0, 0) -# self.set_font(text_font, '', size=text_font_size) -# # Print current and total page numbers -# self.cell(0, 10, '%s' % self.page_no(), 0, 0, 'C') + zine.colophon(inputfile) + zine.output(output) -# set font for all text -zine = Zine(orientation="P", unit="mm", format="A5") +if __name__ == '__main__': + # input text and output pdf + if len(sys.argv) > 1: + if len(sys.argv) == 3: + output = sys.argv[2] + inputfile = sys.argv[1] + else: + inputfile = "./text/colophon.txt" + output = './covers/colophon.pdf' -# cover font -zine.add_font('CasaleNBP', '', r"/home/mara/.fonts/CasaletwoNbp-Bp4V.ttf", uni=True) -cover_font = 'CasaleNBP' - -# text font -zine.add_font( - 'Kpalter', '', r"/home/mara/.fonts/KpProgrammerAlternatesNbp-Zg1q.ttf", uni=True) -text_font = 'Kpalter' -zine.set_font(text_font, '', size=text_font_size) - -zine.colophon("./colophon.txt") -zine.output("colophon.pdf") + make_colophon() diff --git a/cover.py b/cover.py index 02bfcc1..7dcd3f9 100644 --- a/cover.py +++ b/cover.py @@ -1,298 +1,52 @@ -#!/bin/python -""" -A script for generating A5 size pdf zines -with a text-file input, under development, -GPL3 Licence, Mara Karagianni May 2021 -""" -import glob -import re import sys -import subprocess -from fpdf import FPDF -# ref https://pyfpdf.readthedocs.io/en/latest/ - -# Variables -header_font = 'helvetica' -header_font_size = 14 -text_font_size = 12 - -top_margin = 20 -left_margin = 20 -right_margin = 20 -left_max_margin = 160 - -max_height = 190 -left_x = 20 -top_y = 30 -cell_width = 110 -cell_header_height = 16 -cell_height = 6 - -# Image variables -img_x = 20 -img_y = 80 -img_len = 120 - -# file to get the text -if len(sys.argv) > 1: - filename = sys.argv[1] -else: - filename = "./notes_sample" +from zine_maker import Zine -class Zine(FPDF): +def make_cover(): + # Variables + header_font = 'helvetica' + header_font_size = 14 + text_font_size = 12 - def add_new_signature(self, top_margin, left_margin, right_margin): - # create new page/signature - self.add_page() - self.set_margins(left_margin, top_margin, right_margin) - self.set_xy(left_margin, top_margin) - print('NEW SIGNATURE') + top_margin = 20 + left_margin = 20 + right_margin = 20 + left_max_margin = 160 - def move_to_page_right(self, top_margin, left_max_margin, right_margin): - print('*****') - print("BOTTOM OF LEFT PAGE, height is {}".format(self.get_y())) - print('*****') - self.set_margins(top_margin, left_max_margin, right_margin) - self.set_xy(left_max_margin, top_margin) + max_height = 190 + left_x = 20 + top_y = 30 + cell_width = 110 + cell_header_height = 16 + cell_height = 6 - def position_img(self, img_filename, img_x, img_y, **kwargs): - img_size = subprocess.run( - ["identify", "-format", - "%[fx:w/72] by %[fx:h/72] inches", - "./%s" % img_filename], - stdout=subprocess.PIPE, text=True) + # set font for all text + zine = Zine(orientation="P", unit="mm", format="A5") - img_height_inches = img_size.stdout.split(' ')[2] - img_width_inches = img_size.stdout.split(' ')[0] - img_height_mm = float(img_height_inches) * float(24.5) - img_width_mm = float(img_width_inches) * float(24.5) + # cover font + zine.add_font('CasaleNBP', '', r"/home/mara/.fonts/CasaletwoNbp-Bp4V.ttf", uni=True) + cover_font = 'CasaleNBP' - if kwargs: - max_height = kwargs["max_height"] - left_margin = kwargs["left_margin"] - top_margin = kwargs["top_margin"] + # text font + zine.add_font( + 'Kpalter', '', r"/home/mara/.fonts/KpProgrammerAlternatesNbp-Zg1q.ttf", uni=True) + text_font = 'Kpalter' + zine.set_font(text_font, '', size=text_font_size) - if self.get_y() + img_height_mm >= max_height: - self.add_page() - self.set_xy(left_margin, top_margin) - img_y = top_margin - - previous_y = self.get_y() - # center image - img_x = (150 - img_width_mm) / 2 - self.image(img_filename, img_x, img_y, img_width_mm) - - # move y at the bottom of the image - # TODO check if get_y() would do the same job - self.set_xy(self.get_x(), previous_y+img_height_mm) - - def shuffle_chapters(self, pdfinput): - subprocess.run( - ["pdfseparate", "./%s" % pdfinput, "./%02d_chapter.pdf"], - stdout=subprocess.PIPE, text=True) - pages = glob.glob("./*_chapter.pdf") - pages.sort() - print("CHAPTERS {}".format(pages)) - shuffled_list = [] - count = 0 - while count < (len(pages))/2: - shuffled_list.append(pages[-(count+1)]) - shuffled_list.append(pages[count]) - count += 1 - # reverse - if count != len(pages)/2: - shuffled_list.append(pages[count]) - shuffled_list.append(pages[-(count+1)]) - count += 1 - return shuffled_list - - def create_pages(self, filename, max_height, left_margin, - left_max_margin, top_margin, right_margin, - cell_width, cell_height, cell_header_height, - header_font, text_font): - chapter = 0 - lines = open(filename).readlines() - print(filename) - - # first page - print("FIRST PAGE") - self.set_margins(left_margin, top_margin, - right_margin) - self.set_xy(left_margin, top_margin) - self.add_page() - - for line in lines: - - if ">>" in line: - self.set_font(text_font, '', size=16) - self.cell(cell_width, cell_height, line, - 0, ln=1, align='L') - self.set_font(text_font, '', size=text_font_size) - - # check if we have an image - elif line.startswith(""): - img_filename = line.split("")[1] - kwargs = { - "max_height": max_height, - "left_margin": left_margin, - "top_margin": top_margin - } - self.position_img( - img_filename, self.get_x(), self.get_y(), **kwargs) - - # check if we have a title - elif line.startswith("

"): - line = re.sub('((

)|(

$))', '', line) - self.set_text_color(255, 0, 255) - self.set_font(text_font, size=22) - if self.get_y() > top_margin: - self.set_xy(left_margin, top_margin+9) - self.add_page() - self.cell(cell_width, cell_header_height, line, - 0, ln=1, align='C') - left_x = self.get_x() - top_y = self.get_y() - self.dashed_line( - left_x, top_y, left_x+cell_width, top_y, - dash_length=3, space_length=3) - self.set_text_color(0, 0, 0) - self.set_font(text_font, size=text_font_size) - - elif line.startswith(""): - line = re.sub('(()|($))', '', line) - self.set_font(text_font, '', size=18) - self.cell(cell_width, cell_height, line, - 0, ln=1, align='L') - self.set_font(text_font, '', size=text_font_size) - - elif line.startswith("#"): - self.set_font('helvetica', 'B', size=9) - self.set_text_color(209, 17, 65) - self.multi_cell(cell_width, cell_height, line, - 0, align='L') - # go back to text font - self.set_text_color(0, 0, 0) - self.set_font(text_font, '', size=text_font_size) - - elif line.startswith("$") or line.startswith("(venv)"): - self.set_font('helvetica', 'B', size=9) - self.set_text_color(0, 30, 255) - - self.multi_cell(cell_width, cell_height, line, - 0, align='L') - # go back to text font - self.set_text_color(0, 0, 0) - self.set_font(text_font, '', size=text_font_size) - - elif line.startswith(""): - #line = re.sub('($)', '', line) - self.set_font('helvetica', 'B', size=9) - self.set_text_color(0,80,115) - self.multi_cell(cell_width, cell_height, line, - 0, align='L') - elif line.startswith(""): - #line = re.sub('($)', '', line) - self.multi_cell(cell_width, cell_height, line, - 0, align='L') - self.set_font(text_font, '', text_font_size) - self.set_text_color(0, 0, 0) - - elif "" in line: - line = re.sub('($)', '', line) - self.set_font(text_font, '', size=18) - self.set_text_color(0, 0, 0) - self.set_text_color(41, 98, 255) - self.cell(cell_width/8, cell_height, line, 0, align='C') - - elif "" in line: - line = re.sub('($)', '', line) - self.set_font(text_font, '', size=text_font_size) - self.set_text_color(0, 0, 0) - self.multi_cell(cell_width, cell_height, line, - 0, align='L') - - else: - # check if we need the following - variable_x = self.get_x() - self.multi_cell(cell_width, cell_height, line, 0, align='L') - self.set_xy(variable_x, self.get_y()) - - #self.footer() - - def cover(self, title, cover_font, max_height): - col = 10 - margin = 15 - import random - self.set_margins(margin, margin, margin) - self.add_page() - for letter in title: - if self.get_y() >= max_height: - self.set_xy(margin+col, margin) - col += 40 - size = random.randrange(30, 50, 15) - self.set_font(cover_font, '', size) - variable_x = margin+col - print("LETTER {}, POSITION Y {}".format(letter, self.get_y())) - print("VAR X {}".format(variable_x)) - self.set_xy(variable_x, self.get_y()) - - self.cell(size, size, letter) - self.line(size, size, self.get_x(), self.get_y()) - if(size % 2 == 0): - var = "DF" - #r = 138, 43, 226 - R = random.randrange(0, 255, 40) - G = random.randrange(25, 255, 50) - B = random.randrange(0, 155, 50) - self.set_fill_color(R, G, 255) - else: - var = "D" - print(var) - self.rect( - float(self.get_x()), float(self.get_y()), - float(size/2), float(size*4), style = var) - self.ln(size/2) - - def colophon(self, text): - lines = open(text, 'r').readlines() - top_margin = 20 - margin = 25 - self.add_font( - 'CasaleNBP', '', r"/home/mara/.fonts/CasaletwoNbp-Bp4V.ttf", - uni=True) - self.set_margins(margin, top_margin, margin) - size = 11 - cover_font = 'CasaleNBP' - self.set_font(cover_font, '', size) - self.add_page() - for line in lines: - self.multi_cell(100, size, line, 0, align='C') - -# def footer(self): -# # Go to 1.5 cm from bottom -# self.set_y(-15) -# # Select Arial italic 8 -# #self.set_font('Arial', 'I', 8) -# self.set_text_color(0, 0, 0) -# self.set_font(text_font, '', size=text_font_size) -# # Print current and total page numbers -# self.cell(0, 10, '%s' % self.page_no(), 0, 0, 'C') + zine.cover("deconstruct mailman", cover_font, max_height=140) + # import random + # zine.output("cover{}.pdf".format(random.randint(10, 20))) + zine.output(output) -# set font for all text -zine = Zine(orientation="P", unit="mm", format="A5") +if __name__ == '__main__': + # input text and output pdf + if len(sys.argv) > 1: + if len(sys.argv) == 3: + output = sys.argv[2] + inputfile = sys.argv[1] + else: + inputfile = "./text/cover.txt" + output = './covers/cover.pdf' -# cover font -zine.add_font('CasaleNBP', '', r"/home/mara/.fonts/CasaletwoNbp-Bp4V.ttf", uni=True) -cover_font = 'CasaleNBP' - -# text font -zine.add_font( - 'Kpalter', '', r"/home/mara/.fonts/KpProgrammerAlternatesNbp-Zg1q.ttf", uni=True) -text_font = 'Kpalter' -zine.set_font(text_font, '', size=text_font_size) - -zine.cover("deconstruct mailman", cover_font, max_height=140) -import random -zine.output("cover{}.pdf".format(random.randint(10, 20))) + make_cover() diff --git a/doc_pdf.py b/doc_pdf.py new file mode 100644 index 0000000..8dee754 --- /dev/null +++ b/doc_pdf.py @@ -0,0 +1,63 @@ +import sys +from zine_maker import Zine + + +def make(): + # Variables + header_font = 'helvetica' + header_font_size = 14 + text_font_size = 11 + + top_margin = 20 + left_margin = 20 + right_margin = 20 + left_max_margin = 160 + + max_height = 190 + left_x = 20 + top_y = 30 + cell_width = 110 + cell_header_height = 16 + cell_height = 6 + + # Image variables +# img_x = 20 +# img_y = 80 +# img_len = 120 + + # set font for all text + zine = Zine(orientation="P", unit="mm", format="A5") + + # cover font + zine.add_font( + 'CasaleNBP', '', r"/home/mara/.fonts/CasaletwoNbp-Bp4V.ttf", uni=True + ) + cover_font = 'CasaleNBP' + + # text font + zine.add_font( + 'Kpalter', '', + r"/home/mara/.fonts/KpProgrammerAlternatesNbp-Zg1q.ttf", uni=True + ) + text_font = 'Helvetica' + zine.set_font(text_font, '', size=text_font_size) + + zine.create_pages(inputfile, max_height, left_margin, + left_max_margin, top_margin, right_margin, + cell_width, cell_height, cell_header_height, + header_font, text_font, text_font_size) + + zine.output(output) + + +if __name__ == '__main__': + # input text and output pdf + if len(sys.argv) > 1: + if len(sys.argv) == 3: + output = sys.argv[2] + inputfile = sys.argv[1] + else: + inputfile = "./text/notes_sample" + output = './finals/test.pdf' + + make() diff --git a/shuffle_pdf.py b/shuffle_pdf.py index 7d7736b..f3508fa 100644 --- a/shuffle_pdf.py +++ b/shuffle_pdf.py @@ -33,12 +33,6 @@ img_x = 20 img_y = 80 img_len = 120 -# file to get the text -if len(sys.argv) > 1: - filename = sys.argv[1] -else: - filename = "./notes_sample" - class Zine(FPDF): @@ -280,6 +274,16 @@ class Zine(FPDF): self.cell(0, 10, '%s' % self.page_no(), 0, 0, 'C') + +# file to get the text +if len(sys.argv) > 1: + if len(sys.argv) == 3: + output = sys.argv[2] + filename = sys.argv[1] +else: + filename = "./finals/test.pdf" + output = './finals/trial.pdf' + # set font for all text zine = Zine(orientation="P", unit="mm", format="A5") @@ -293,6 +297,5 @@ zine.add_font( text_font = 'Kpalter' zine.set_font(text_font, '', size=text_font_size) -pdf = './finals/aug_trial.pdf' -chapter_list = zine.shuffle_chapters(pdf) -subprocess.Popen(["pdfunite"] + chapter_list + ["final_aug.pdf"]) +chapter_list = zine.shuffle_chapters(filename) +subprocess.Popen(["pdfunite"] + chapter_list + [output]) diff --git a/make_zine.py b/zine_maker.py similarity index 74% rename from make_zine.py rename to zine_maker.py index 8da0b48..d40fc7f 100644 --- a/make_zine.py +++ b/zine_maker.py @@ -1,44 +1,15 @@ #!/bin/python """ -A script for generating A5 size pdf zines -with a text-file input, under development, -GPL3 Licence, Mara Karagianni May 2021 +A module for generating A5 size pdf zines +based on pyFPDF. +GPL3 License, Mara Karagianni May 2021 """ import glob import re -import sys import subprocess from fpdf import FPDF # ref https://pyfpdf.readthedocs.io/en/latest/ -# Variables -header_font = 'helvetica' -header_font_size = 14 -text_font_size = 12 - -top_margin = 20 -left_margin = 20 -right_margin = 20 -left_max_margin = 160 - -max_height = 190 -left_x = 20 -top_y = 30 -cell_width = 110 -cell_header_height = 16 -cell_height = 6 - -# Image variables -img_x = 20 -img_y = 80 -img_len = 120 - -# file to get the text -if len(sys.argv) > 1: - filename = sys.argv[1] -else: - filename = "./notes_sample" - class Zine(FPDF): @@ -58,9 +29,8 @@ class Zine(FPDF): def position_img(self, img_filename, img_x, img_y, **kwargs): img_size = subprocess.run( - ["identify", "-format", - "%[fx:w/72] by %[fx:h/72] inches", - "./%s" % img_filename], + ["identify", "-format", "%[fx:w/72] by %[fx:h/72] inches", + "%s" % img_filename], stdout=subprocess.PIPE, text=True) img_height_inches = img_size.stdout.split(' ')[2] @@ -108,17 +78,21 @@ class Zine(FPDF): return shuffled_list def create_pages(self, filename, max_height, left_margin, - left_max_margin, top_margin, right_margin, - cell_width, cell_height, cell_header_height, - header_font, text_font): - chapter = 0 + left_max_margin, top_margin, right_margin, *args): + if args: + cell_width = args[0] + cell_height = args[1] + cell_header_height = args[2] + header_font = args[3] + text_font = args[4] + text_font_size = args[5] + lines = open(filename).readlines() print(filename) # first page print("FIRST PAGE") - self.set_margins(left_margin, top_margin, - right_margin) + self.set_margins(left_margin, top_margin, right_margin) self.set_xy(left_margin, top_margin) self.add_page() @@ -144,8 +118,9 @@ class Zine(FPDF): # check if we have a title elif line.startswith("

"): line = re.sub('((

)|(

$))', '', line) - self.set_text_color(255, 0, 255) - self.set_font(text_font, size=22) + self.set_text_color(130, 50, 250) + # self.set_text_color(255, 0, 255) + self.set_font(header_font, size=22) if self.get_y() > top_margin: self.set_xy(left_margin, top_margin+9) self.add_page() @@ -159,11 +134,18 @@ class Zine(FPDF): self.set_text_color(0, 0, 0) self.set_font(text_font, size=text_font_size) + elif line.startswith(""): + line = re.sub('(()|($))', '', line) + self.set_font('helvetica', 'I', size=19) + self.multi_cell(cell_width, cell_height, line, + 0, align='L') + self.set_font(text_font, '', size=text_font_size) + elif line.startswith(""): line = re.sub('(()|($))', '', line) - self.set_font(text_font, '', size=18) + self.set_font('helvetica', 'B', size=13) self.cell(cell_width, cell_height, line, - 0, ln=1, align='L') + 0, ln=1, align='C') self.set_font(text_font, '', size=text_font_size) elif line.startswith("#"): @@ -185,14 +167,14 @@ class Zine(FPDF): self.set_text_color(0, 0, 0) self.set_font(text_font, '', size=text_font_size) - elif line.startswith(""): - #line = re.sub('($)', '', line) - self.set_font('helvetica', 'B', size=9) - self.set_text_color(0,80,115) + elif line.startswith(""): + line = re.sub('($)', '', line) + self.set_font(text_font, '', size=13) + self.set_text_color(0, 80, 115) self.multi_cell(cell_width, cell_height, line, - 0, align='L') - elif line.startswith(""): - #line = re.sub('($)', '', line) + 0, align='C') + elif line.startswith(""): + line = re.sub('($)', '', line) self.multi_cell(cell_width, cell_height, line, 0, align='L') self.set_font(text_font, '', text_font_size) @@ -218,7 +200,7 @@ class Zine(FPDF): self.multi_cell(cell_width, cell_height, line, 0, align='L') self.set_xy(variable_x, self.get_y()) - self.footer() + # self.footer() def cover(self, title, cover_font, max_height): col = 10 @@ -241,17 +223,17 @@ class Zine(FPDF): self.line(size, size, self.get_x(), self.get_y()) if(size % 2 == 0): var = "DF" - #r = 138, 43, 226 + # r = 138, 43, 226 R = random.randrange(30, 255, 40) G = random.randrange(0, 55, 55) B = random.randrange(0, 155, 50) - self.set_fill_color(R, G, 255) + self.set_fill_color(R, G, B) else: var = "D" print(var) self.rect( float(self.get_x()), float(self.get_y()), - float(size/2), float(size*4), style = var) + float(size/2), float(size*4), style=var) self.ln(size/2) def colophon(self, text): @@ -270,39 +252,11 @@ class Zine(FPDF): self.multi_cell(100, size, line, 0, align='C') def footer(self): + text_font = 'Helvetica' # Go to 1.5 cm from bottom - self.set_y(-15) - # Select Arial italic 8 - #self.set_font('Arial', 'I', 8) + self.set_y(-12) self.set_text_color(0, 0, 0) - self.set_font(text_font, '', size=text_font_size) - # Print current and total page numbers - self.cell(0, 10, '%s' % self.page_no(), 0, 0, 'C') - - -# set font for all text -zine = Zine(orientation="P", unit="mm", format="A5") - -# cover font -zine.add_font('CasaleNBP', '', r"/home/mara/.fonts/CasaletwoNbp-Bp4V.ttf", uni=True) -cover_font = 'CasaleNBP' - -# text font -zine.add_font( - 'Kpalter', '', r"/home/mara/.fonts/KpProgrammerAlternatesNbp-Zg1q.ttf", uni=True) -text_font = 'Kpalter' -zine.set_font(text_font, '', size=text_font_size) - -zine.create_pages(filename, max_height, left_margin, left_max_margin, - top_margin, right_margin, cell_width, - cell_height, cell_header_height, header_font, text_font) - -pdf = './finals/aug_trial1.pdf' -zine.output(pdf) -#chapter_list = zine.shuffle_chapters(pdf) -#print(chapter_list) -#subprocess.Popen(["pdfunite"] + chapter_list + ["final_aug.pdf"]) -#zine.cover("deconstruct mailman", cover_font, max_height=140) -#zine.output("cover.pdf") -#zine.colophon("./colophon.txt") -#zine.output("colophon.pdf") + self.set_font(text_font, '', size=7) + # Print current page number + # self.cell(0, 7, '%s' % self.page_no(), 0, 0, 'C') + self.cell(0, 7, '%s' % self.page_no(), 0, 0, 'C')