{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# ASCII Canvas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(using Reportlab to export it as a PDF)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "width = 75\n", "height = 65" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "multipage = False" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" ] } ], "source": [ "# Simple fill-up of a page, to set the reach of our canvas\n", "lines = [] # All the lines will be stored here\n", "\n", "for linenumber in range(height):\n", " line = 'x' * width\n", " lines.append(line)\n", "\n", "print('\\n'.join(lines))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "TuringcompleteTuringcompleteTuringcompleteTuringcompleteTuringcomplete\n", "isisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisis\n", "thanthanthanthanthanthanthanthanthanthanthanthanthanthanthanthanthanthan\n", "givinggivinggivinggivinggivinggivinggivinggivinggivinggivinggivinggiving\n", "OulipoOulipoOulipoOulipoOulipoOulipoOulipoOulipoOulipoOulipoOulipoOulipo\n", "(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or\n", "ideographic-pictorialideographic-pictorialideographic-pictorial\n", "andandandandandandandandandandandandandandandandandandandandandandandandand\n", "parts.parts.parts.parts.parts.parts.parts.parts.parts.parts.parts.parts.\n", "converseconverseconverseconverseconverseconverseconverseconverseconverse\n", "forforforforforforforforforforforforforforforforforforforforforforforforfor\n", "MyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMyMy\n", "performperformperformperformperformperformperformperformperformperform\n", "“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a“a\n", "whateverwhateverwhateverwhateverwhateverwhateverwhateverwhateverwhatever\n", "becomebecomebecomebecomebecomebecomebecomebecomebecomebecomebecomebecome\n", "complicatecomplicatecomplicatecomplicatecomplicatecomplicatecomplicate\n", "typicallytypicallytypicallytypicallytypicallytypicallytypicallytypically\n", "ButButButButButButButButButButButButButButButButButButButButButButButButBut\n", "sincesincesincesincesincesincesincesincesincesincesincesincesincesincesince\n", "ofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofof\n", "likelikelikelikelikelikelikelikelikelikelikelikelikelikelikelikelikelike\n", "notnotnotnotnotnotnotnotnotnotnotnotnotnotnotnotnotnotnotnotnotnotnotnotnot\n", "ofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofof\n", "ititititititititititititititititititititititititititititititititititititit\n", "computercomputercomputercomputercomputercomputercomputercomputercomputer\n", "misperceivesmisperceivesmisperceivesmisperceivesmisperceivesmisperceives\n", "Java,Java,Java,Java,Java,Java,Java,Java,Java,Java,Java,Java,Java,Java,Java,\n", "anotheranotheranotheranotheranotheranotheranotheranotheranotheranother\n", "tototototototototototototototototototototototototototototototototototototo\n", "controlcontrolcontrolcontrolcontrolcontrolcontrolcontrolcontrolcontrol\n", "computercomputercomputercomputercomputercomputercomputercomputercomputer\n", "metaphoricallymetaphoricallymetaphoricallymetaphoricallymetaphorically\n", "andandandandandandandandandandandandandandandandandandandandandandandandand\n", "thethethethethethethethethethethethethethethethethethethethethethethethethe\n", "significance.significance.significance.significance.significance.\n", "ininininininininininininininininininininininininininininininininininininin\n", "sincesincesincesincesincesincesincesincesincesincesincesincesincesincesince\n", "bebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebe\n", "purepurepurepurepurepurepurepurepurepurepurepurepurepurepurepurepurepure\n", "asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas\n", "inputinputinputinputinputinputinputinputinputinputinputinputinputinputinput\n", "lesslesslesslesslesslesslesslesslesslesslesslesslesslesslesslesslessless\n", "structures—semanticstructures—semanticstructures—semantic\n", "can’tcan’tcan’tcan’tcan’tcan’tcan’tcan’tcan’tcan’tcan’tcan’tcan’tcan’tcan’t\n", "isisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisis\n", "isisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisis\n", "functionsfunctionsfunctionsfunctionsfunctionsfunctionsfunctionsfunctions\n", "shape,shape,shape,shape,shape,shape,shape,shape,shape,shape,shape,shape,\n", "namenamenamenamenamenamenamenamenamenamenamenamenamenamenamenamenamename\n", "atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat\n", "ininininininininininininininininininininininininininininininininininininin\n", "isisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisisis\n", "ofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofof\n", "thethethethethethethethethethethethethethethethethethethethethethethethethe\n", "humanshumanshumanshumanshumanshumanshumanshumanshumanshumanshumanshumans\n", "terminals,terminals,terminals,terminals,terminals,terminals,terminals,\n", "meaningmeaningmeaningmeaningmeaningmeaningmeaningmeaningmeaningmeaning\n", "appropriatedappropriatedappropriatedappropriatedappropriatedappropriated\n", "asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas\n", "thatthatthatthatthatthatthatthatthatthatthatthatthatthatthatthatthatthat\n", "bebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebe\n", "ononononononononononononononononononononononononononononononononononononon\n", "DigitalDigitalDigitalDigitalDigitalDigitalDigitalDigitalDigitalDigital\n", "ofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofofof\n" ] } ], "source": [ "# Another way to fill-up the page\n", "import random \n", "\n", "lines = []\n", "\n", "txt = open('txt/language.txt', 'r').read()\n", "words = txt.split()\n", "\n", "for linenumber in range(height):\n", " word = random.choice(words)\n", " length_of_word = len(word)\n", " nr_of_words_fit_in_line = width / length_of_word\n", " line = word * int(nr_of_words_fit_in_line)\n", " lines.append(line)\n", " \n", "print('\\n'.join(lines))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [ "# Same as above + a \"switch\" to make multipaged PDFs\n", "import random \n", "\n", "multipage = True\n", "number_of_pages = 100\n", "\n", "lines = []\n", "pages = []\n", "\n", "txt = open('txt/language.txt', 'r').read()\n", "words = txt.split()\n", "\n", "for page in range(number_of_pages):\n", " \n", " for linenumber in range(height):\n", " word = random.choice(words)\n", " length_of_word = len(word)\n", " nr_of_words_fit_in_line = width / length_of_word\n", " line = word * int(nr_of_words_fit_in_line)\n", " lines.append(line)\n", " \n", " # Add a page\n", " pages.append(lines)\n", " lines = []\n", "\n", "for page in pages:\n", " print('\\n'.join(page))\n", " print('-' * width)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exporting with Reportlab" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from reportlab.pdfgen.canvas import Canvas\n", "from reportlab.lib.pagesizes import A4\n", "from reportlab.lib.units import mm\n", "\n", "pagewidth = 210*mm\n", "pageheight = 297*mm\n", "\n", "c = Canvas(\"ASCII-canvas-to-PDF.pdf\", pagesize=(pagewidth, pageheight), bottomup=0)\n", "c.setFont('Courier', 12)\n", "\n", "start_y = 10*mm # start position of the lines\n", "\n", "y = start_y\n", "lineheight = 4*mm\n", "\n", "if multipage == True:\n", " for page in pages:\n", " for line in page:\n", " c.drawCentredString(pagewidth/2, y, line)\n", " y += lineheight\n", " c.showPage()\n", " y = start_y\n", "else:\n", " for line in lines:\n", " c.drawCentredString(pagewidth/2, y, line)\n", " y += lineheight\n", " \n", "c.save()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 4 }