List (1)
Python: Create Ordered, Unordered, and Nested Lists in PDF
2023-12-12 01:02:03 Written by support iceblueLists are a fundamental data structure in PDF documents as they allow users to efficiently store and arrange collections of items. The three most commonly utilized list types in PDFs are ordered lists, unordered lists (also known as bulleted lists), and nested lists. These lists facilitate the presentation of information in a well-organized and visually appealing manner within PDF documents. In this article, we will explore how to use Spire.PDF for Python to create ordered, unordered, and nested lists in PDF documents for generating professional-looking PDF documents.
- Create Ordered Lists in PDF with Python
- Create Unordered Lists with Symbol Markers in PDF Using Python
- Create Unordered Lists with Image Markers in PDF Using Python
- Create Nested Lists in PDF with Python
In Spire.PDF for Python, the PdfSortedList class and PdfList class are available for generating various types of lists in PDF documents, such as ordered lists, unordered lists, and nested lists. By utilizing the functionalities provided by Spire.PDF for Python, developers can easily format and incorporate these lists into their PDF pages. The following are the key classes and properties that are particularly useful for creating lists within PDF documents:
Class or property | Description |
PdfSortedList class | Represents an ordered list in a PDF document. |
PdfList class | Represents an unordered list in a PDF document. |
Brush property | Gets or sets a list's brush. |
Font property | Gets or sets a list's font. |
Indent property | Gets or sets a list's indent. |
TextIndent property | Gets or sets the indent from the marker to the list item text. |
Items property | Gets items of a list. |
Marker property | Gets or sets the marker of a list. |
Draw() method | Draw list on the canvas of a page at the specified location. |
PdfOrderedMarker class | Represents the marker style of an ordered list, such as numbers, letters, and roman numerals. |
PdfMarker class | Represents bullet style for an unordered list. |
Install Spire.PDF for Python
This scenario requires Spire.PDF for Python and plum-dispatch v1.7.4. They can be easily installed in your Windows through the following pip commands.
pip install Spire.PDF
If you are unsure how to install, please refer to this tutorial: How to Install Spire.PDF for Python on Windows
Create Ordered Lists in PDF with Python
Developers can use the PdfSortedList class in Spire.PDF for Python to create ordered lists and format them using the properties available under this class. Afterwards, the list can be drawn on a PDF page using the PdfSortedList.Draw() method. Here is a detailed step-by-step guide for how to create ordered lists in PDF documents:
- Create an object of PdfDocument class and load a PDF document using PdfDocument.LoadFromFile() method.
- Add a page to the document using PdfDocument.Pages.Add() method.
- Create fonts and the brush for the title and the list and draw the list title on the page using PdfPageBase.Canvas.DrawString() method.
- Initialize an instance of PdfSortedList class to create an ordered list with specified items.
- Initialize an instance of PdfOrderedMarker class to create an ordered marker for the list.
- Set the font, item indent, text-indent, brush, and marker for the list using properties under PdfSortedList class.
- Draw the list on the page using PdfSortedList.Draw() method.
- Save the document using PdfDocument.SaveToFile() method.
- Python
from spire.pdf import * from spire.pdf.common import * # Create an object of PdfDocument class pdf = PdfDocument() # Add a page to the document with specified page size and margins page = pdf.Pages.Add() # Create tile font and list font titleFont = PdfTrueTypeFont("HarmonyOS Sans SC", 14.0, 1, True) listFont = PdfTrueTypeFont("HarmonyOS Sans SC", 12.0, 0, True) # Create a brush to draw the list brush = PdfBrushes.get_Black() # Specify the initial coordinate x = 10.0 y = 20.0 # Draw the title title = "Introduction to Common Fruits:" page.Canvas.DrawString(title, titleFont, brush, x, y) # Create a numbered list listItems = "Apples are fruits that are commonly eaten and come in various varieties.\n" \ + "Bananas are tropical fruits that are rich in potassium and are a popular snack.\n" \ + "Oranges are citrus fruits known for their high vitamin C content and refreshing taste.\n"\ + "Grapes are small, juicy fruits that come in different colors, such as green, red, and purple." list = PdfSortedList(listItems) # Create a marker for the list marker = PdfOrderedMarker(PdfNumberStyle.UpperRoman, listFont) # Format the list list.Font = listFont list.Indent = 2 list.TextIndent = 4 list.Brush = brush list.Marker = marker # Draw the list on the page list.Draw(page.Canvas, x, y + float(titleFont.MeasureString(title).Height + 5)) # Save the document pdf.SaveToFile("output/CreateNumberedList.pdf") pdf.Close()
Create Unordered Lists with Symbol Markers in PDF Using Python
Creating an unordered list in a PDF document with Spire.PDF for Python involves PdfList class and the properties under this class. When creating an unordered list, developers need to set the marker style and font for the unordered list using the PdfList.Marker.Style and PdfList.Marker.Font properties. The detailed steps are as follows:
- Create an object of PdfDocument class and load a PDF document using PdfDocument.LoadFromFile() method.
- Add a page to the document using PdfDocument.Pages.Add() method.
- Create fonts and the brush for the title, the marker, and the list, and draw the list title on the page using PdfPageBase.Canvas.DrawString() method.
- Initialize an instance of PdfList class to create an unordered list with specified items.
- Set the font, item indent, text indent, and brush for the list using properties under PdfList class.
- Set the marker style and font through PdfList.Marker.Style property and PdfList.Marker.Font property.
- Draw the list on the page using PdfList.Draw() method.
- Save the document using PdfDocument.SaveToFile() method.
- Python
from spire.pdf import * from spire.pdf.common import * # Create an object of PdfDocument class pdf = PdfDocument() # Add a page to the document with specified page size and margins page = pdf.Pages.Add() # Create tile font and list font titleFont = PdfTrueTypeFont("HarmonyOS Sans SC", 14.0, 1, True) listFont = PdfTrueTypeFont("HarmonyOS Sans SC", 12.0, 0, True) markerFont = PdfTrueTypeFont("HarmonyOS Sans SC", 8.0, 0, True) # Create a brush to draw the list brush = PdfBrushes.get_Black() # Specify the initial coordinate x = 10.0 y = 20.0 # Draw the title title = "Colors:" page.Canvas.DrawString(title, titleFont, brush, x, y) # Create an unordered list listContent = "Red is a vibrant color often associated with love, passion, and energy.\n" \ + "Green is a color symbolizing nature, growth, and harmony.\n" \ + "Pink is a color associated with femininity, love, and tenderness." list = PdfList(listContent) # Format the list list.Font = listFont list.Indent = 2 list.TextIndent = 4 list.Brush = brush # Format the marker list.Marker.Style = PdfUnorderedMarkerStyle.Asterisk list.Marker.Font = markerFont # Draw the list on the page list.Draw(page.Canvas, x, float(y + titleFont.MeasureString(title).Height + 5)) # Save the document pdf.SaveToFile("output/CreateSymbolBulletedList.pdf") pdf.Close()
Create Unordered Lists with Image Markers in PDF Using Python
Creating an unordered list with image markers follows similar steps to creating a list with symbol markers. Developers just need to set the item marker style to an image through PdfList.Marker.Style property. Here are the detailed steps:
- Create an object of PdfDocument class and load a PDF document using PdfDocument.LoadFromFile() method.
- Add a page to the document using PdfDocument.Pages.Add() method.
- Create fonts and the brush for the title, the marker, and the list, and draw the list title on the page using PdfPageBase.Canvas.DrawString() method.
- Initialize an instance of PdfList class to create an unordered list with specified items.
- Set the font, item indent, text-indent, and brush for the list using properties under PdfList class.
- Load an image using PdfImage.LoadFromFile() method.
- Set the marker style as PdfUnorderedMarkerStyle.CustomImage through PdfList.Marker.Style property and set the loaded image as the marker through PdfList.Marker.Image property.
- Draw the list on the page using PdfList.Draw() method.
- Save the document using PdfDocument.SaveToFile() method.
- Python
from spire.pdf import * from spire.pdf.common import * # Create an object of PdfDocument class pdf = PdfDocument() # Add a page to the document with specified page size and margins page = pdf.Pages.Add() # Create tile font and list font titleFont = PdfFont(PdfFontFamily.Helvetica, 14.0, PdfFontStyle.Bold) listFont = PdfFont(PdfFontFamily.Helvetica, 12.0, PdfFontStyle.Regular) # Create a brush to draw the list brush = PdfBrushes.get_Black() # Specify the initial coordinate x = 10.0 y = 20.0 # Draw the title title = "Colors:" page.Canvas.DrawString(title, titleFont, brush, x, y) # Create an unordered list listContent = "Blue is a calming color often associated with tranquility, trust, and stability.\n" \ + "Purple is a color associated with royalty, luxury, and creativity.\n" \ + "Brown is a natural earthy color often associated with stability, reliability, and warmth." list = PdfList(listContent) # Format the list list.Font = listFont list.Indent = 2 list.TextIndent = 4 list.Brush = brush # Load an image image = PdfImage.FromFile("Marker.png") # Set the marker as a custom image list.Marker.Style = PdfUnorderedMarkerStyle.CustomImage list.Marker.Image = image # Draw the list on the page list.Draw(page.Canvas, x, float(y + titleFont.MeasureString(title).Height + 5)) # Save the document pdf.SaveToFile("output/CreateImageBulletedList.pdf") pdf.Close()
Create Nested Lists in PDF with Python
When creating a nested list, both the parent list and each level of sublists can be created as either unordered or ordered lists. Once the lists at each level are created, the PdfListItem.Sublist property can be used to set a list as the sublist of a corresponding item in the parent list. Here are the steps to create a nested list:
- Create an object of PdfDocument class and load a PDF document using PdfDocument.LoadFromFile() method.
- Add a page to the document using PdfDocument.Pages.Add() method.
- Create fonts and the brush for the title, the marker, and the list, and draw the list title on the page using PdfPageBase.Canvas.DrawString() method.
- Create an unordered list as the parent list and format the list and the marker.
- Create three sublists for the items in the parent list and format the list.
- Get an item in the parent list using PdfList.Items.get_Item() method.
- Set a specified list as the sublist of the item through PdfListItem.SubList property.
- Draw the list on the page using PdfList.Draw() method.
- Save the document using PdfDocument.SaveToFile() method.
- Python
from spire.pdf import * from spire.pdf.common import * # Create an object of PdfDocument class pdf = PdfDocument() # Add a page to the document with specified page size and margins page = pdf.Pages.Add() # Create tile font and list font titleFont = PdfTrueTypeFont("HarmonyOS Sans SC", 14.0, 1, True) listFont = PdfTrueTypeFont("HarmonyOS Sans SC", 12.0, 0, True) markerFont = PdfTrueTypeFont("HarmonyOS Sans SC", 12.0, 0, True) # Create brushs to draw the title and lists titleBrush = PdfBrushes.get_Blue() firstListBrush = PdfBrushes.get_Purple() secondListBrush = PdfBrushes.get_Black() # Specify the initial coordinate x = 10.0 y = 20.0 # Draw the title title = "Nested List:" page.Canvas.DrawString(title, titleFont, titleBrush, x, y) # Create a parent list parentListContent = "Fruits:\n" + "Colors:\n" + "Days of the week:" parentList = PdfList(parentListContent) # Format the parent list indent = 4 textIndent = 4 parentList.Font = listFont parentList.Indent = indent parentList.TextIndent = textIndent # Set the parent list marker parentList.Marker.Style = PdfUnorderedMarkerStyle.Square parentList.Marker.Font = markerFont # Create nested sublists and format them subListMarker = PdfOrderedMarker(PdfNumberStyle.LowerLatin, markerFont) subList1Content = "Apples\n" + "Bananas\n" + "Oranges" subList1 = PdfSortedList(subList1Content, subListMarker) subList1.Font = listFont subList1.Indent = indent * 2 subList1.TextIndent = textIndent subList2Content = "Red\n" + "Green" subList2 = PdfSortedList(subList2Content, subListMarker) subList2.Font = listFont subList2.Indent = indent * 2 subList2.TextIndent = textIndent subList3Content = "Monday\n" + "Tuesday\n" + "Wednesday" subList3 = PdfSortedList(subList3Content, subListMarker) subList3.Font = listFont subList3.Indent = indent * 2 subList3.TextIndent = textIndent # Set the created list as the nested sublist of each item in the parent list item1 = parentList.Items.get_Item(0) item1.SubList = subList1 item2 = parentList.Items.get_Item(1) item2.SubList = subList2 item3 = parentList.Items.get_Item(2) item3.SubList = subList3 # Draw the list parentList.Draw(page.Canvas, x, float(y + titleFont.MeasureString(title).Height + 5)) # Save the document pdf.SaveToFile("output/CreateNestedList.pdf") pdf.Close()
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.