www.ascii-code.com
That gave me the idea of writing a simple program to generate an ASCII table in PDF. Here is the code for a part of that table - the first 32 (0 to 31) ASCII characters, which are the control characters:
# ASCIITableToPDF.py # Author: Vasudev Ram - http://www.dancingbison.com # Demo program to show how to generate an ASCII table as PDF, # using the xtopdf toolkit for PDF creation from Python. # Generates a PDF file with information about the # first 32 ASCII codes, i.e. the control characters. # Based on the ASCII Code table at http://www.ascii-code.com/ import sys from PDFWriter import PDFWriter # Define the header information. column_names = ['DEC', 'OCT', 'HEX', 'BIN', 'Symbol', 'Description'] column_widths = [4, 6, 4, 10, 7, 20] # Define the ASCII control character information. ascii_control_characters = \ """ 0 000 00 00000000 NUL Null char 1 001 01 00000001 SOH Start of Heading 2 002 02 00000010 STX Start of Text 3 003 03 00000011 ETX End of Text 4 004 04 00000100 EOT End of Transmission 5 005 05 00000101 ENQ Enquiry 6 006 06 00000110 ACK Acknowledgment 7 007 07 00000111 BEL Bell 8 010 08 00001000 BS Back Space 9 011 09 00001001 HT Horizontal Tab 10 012 0A 00001010 LF Line Feed 11 013 0B 00001011 VT Vertical Tab 12 014 0C 00001100 FF Form Feed 13 015 0D 00001101 CR Carriage Return 14 016 0E 00001110 SO Shift Out / X-On 15 017 0F 00001111 SI Shift In / X-Off 16 020 10 00010000 DLE Data Line Escape 17 021 11 00010001 DC1 Device Control 1 (oft. XON) 18 022 12 00010010 DC2 Device Control 2 19 023 13 00010011 DC3 Device Control 3 (oft. XOFF) 20 024 14 00010100 DC4 Device Control 4 21 025 15 00010101 NAK Negative Acknowledgement 22 026 16 00010110 SYN Synchronous Idle 23 027 17 00010111 ETB End of Transmit Block 24 030 18 00011000 CAN Cancel 25 031 19 00011001 EM End of Medium 26 032 1A 00011010 SUB Substitute 27 033 1B 00011011 ESC Escape 28 034 1C 00011100 FS File Separator 29 035 1D 00011101 GS Group Separator 30 036 1E 00011110 RS Record Separator 31 037 1F 00011111 US Unit Separator """ # Create and set some of the fields of a PDFWriter instance. pw = PDFWriter("ASCII-Table.pdf") pw.setFont("Courier", 12) pw.setHeader("ASCII Control Characters - 0 to 31") pw.setFooter("Generated by xtopdf: http://slid.es/vasudevram/xtopdf") # Write the column headings to the output. column_headings = [ str(val).ljust(column_widths[idx]) \ for idx, val in enumerate(column_names) ] pw.writeLine(' '.join(column_headings)) # Split the string into lines, omitting the first and last empty lines. for line in ascii_control_characters.split('\n')[1:-1]: # Split the line into space-delimited fields. lis = line.split() # Join the words of the Description back into one field, # since it was split due to having internal spaces. lis2 = lis[0:5] + [' '.join(lis[6:])] # Write the column data to the output. lis3 = [ str(val).ljust(column_widths[idx]) \ for idx, val in enumerate(lis2) ] pw.writeLine(' '.join(lis3)) pw.close()Discerning readers will notice the effect of some of the said control characters on the displayed program code :)
You can run the program with:
python ASCIITableToPDF.pyor
py ASCIITableToPDF.pyor
./ASCIITableToPDF.pyor
ASCIITableToPDF.pyFiguring what needs to be done for each of the above methods of invocation to work, is (as they say in computer textbooks), left as an exercise for the reader :)
(There is a bit of subtlety involved, at least for beginners, particularly if you want to do it on both Linux and Windows.)
And here is a screenshot of the PDF output of the program:
- Vasudev Ram - Online Python training and programming Dancing Bison EnterprisesSignup to hear about new products or services from me. Posts about Python Posts about xtopdf Contact Page
No comments:
Post a Comment