Render Project documents as HTML, PDF, and image files
Leave feedback
On this page
GroupDocs.Viewer for Python via .NET allows you to render Project files in HTML, PDF, PNG, and JPEG formats. You do not need to use Microsoft Project or other project management software to load and view Project files within your .NET application (web or desktop).
To start using the GroupDocs.Viewer API, create a Viewer class instance. Pass a document you want to view to the class constructor. You can load the document from a file or stream. Call one of the Viewer.view method overloads to convert the document to HTML, PDF, or image format. These methods allow you to render the entire document or specific pages.
GroupDocs.Viewer can detect the document format automatically based on information in the file header.
Note
Family of the Project Management file formats (MPP, MPT, and MPX) currently is not supported by the GroupDocs.Viewer.CrossPlatform.
Render Project files as HTML
Create an HtmlViewOptions class instance and pass it to the [Viewer.view method to convert a Project file to HTML. The HtmlViewOptions class properties allow you to control the conversion process. For instance, you can embed all external resources in the generated HTML file, minify the output file, and optimize it for printing. Refer to the following documentation section for details: Rendering to HTML.
Create an HTML file with embedded resources
To save all elements of an HTML page (including text, graphics, and stylesheets) into a single file, call the HtmlViewOptions.for_embedded_resources method and specify the output file name.
withgv.Viewer("SoftwareDevelopmentPlan.mpp")asviewer:# Render the project's active view as HTML.# {0} is replaced with the current page number in the output file names.viewOptions=gvo.HtmlViewOptions.for_embedded_resources("page_{0}.html")viewer.view(viewOptions)
The following image demonstrates the result:
Create an HTML file with external resources
If you want to store an HTML file and additional resource files (such as fonts, images, and stylesheets) separately, call the HtmlViewOptions.for_external_resources method and pass the following parameters:
The output file path format
The path format for the folder with external resources
The resource URL format
withgv.Viewer("SoftwareDevelopmentPlan.mpp")asviewer:# Render the project's active view as HTML.# Specify the HTML file names and location of external resources.# {0} and {1} are replaced with the page number and resource name, respectively.viewOptions=gvo.HtmlViewOptions.for_external_resources("page_{0}.html","page_{0}/resource_{0}_{1}","page_{0}/resource_{0}_{1}")viewer.view(viewOptions)
The image below demonstrates the result. External resources are placed in a separate folder.
Render Project files as PDF
Create a PdfViewOptions class instance and pass it to the [Viewer.view method to convert a Project file to PDF. The PdfViewOptions class properties allow you to control the conversion process. For instance, you can protect the output PDF file, reorder its pages, and specify the quality of document images. Refer to the following documentation section for details: Rendering to PDF.
withgv.Viewer("SoftwareDevelopmentPlan.mpp")asviewer:# Create a PDF file for the project's active view.viewOptions=gvo.PdfViewOptions("output.pdf")viewer.view(viewOptions)
withgv.Viewer("SoftwareDevelopmentPlan.mpp")asviewer:# Render the project's active view as PNG.# {0} is replaced with the current page number in the output file names.viewOptions=gvo.PngViewOptions("output_{0}.png")# Set width and height.viewOptions.width=1600viewOptions.height=650viewer.view(viewOptions)
withgv.Viewer("SoftwareDevelopmentPlan.mpp")asviewer:# Render the project's active view as JPEG.# {0} is replaced with the current page number in the output file names.viewOptions=gvo.JpgViewOptions("output_{0}.jpg")# Set width and height.viewOptions.width=1600viewOptions.height=650viewer.view(viewOptions)
Get information about a Project file
Follow the steps below to obtain information about a Project file (the file format, the number of pages, the project’s start and end dates):
Use the ProjectManagementViewInfo class properties to retrieve information about the Project file.
withgv.Viewer("SoftwareDevelopmentPlan.mpp")asviewer:viewOptions=gvo.ViewInfoOptions.for_html_view()view_info=viewer.get_view_info(viewOptions)info=cast(gvr.ProjectManagementViewInfo,view_info)print("File type: "+str(info.file_type))print("The number of pages: "+str(len(info.pages)))print("Project start date: {0}".format(info.start_date))print("Project end date: {0}".format(info.end_date))viewer.view(viewOptions)
The following image shows a sample console output:
Specify the output page size
GroupDocs.Viewer allows you to specify page size for the output file when you convert your Project document to HTML, PDF, or image format. Assign a PageSize enumeration member to the project_management_options.page_size property to select one of the predefined page sizes (Letter, Ledger, A0, A1, A2, A3, or A4). You can access this property for the following classes (depending on the output file format):
The following example specifies page size for the output PDF file:
importgroupdocs.viewerasgvimportgroupdocs.viewer.optionsasgvowithgv.Viewer("SoftwareDevelopmentPlan.mpp")asviewer:# Convert the document to PDF.viewOptions=gvo.PdfViewOptions("output.pdf")# Specify the page size.viewerOptions.project_management_options.page_size=gvo.PageSize.A3viewer.view(viewOptions)
Adjust the time unit
When rendering a Project file, GroupDocs.Viewer selects the smallest time unit on a timescale based on the total length of the project. You can adjust the timescale to show smaller or greater time units (from days to months). To do this, set the ViewOptions.project_management_options.time_unit property for a target view to one of the following TimeUnit enumeration members:
Days displays days on the timescale.
ThirdsOfMonths displays the Beginning/Middle/End (B/M/E) of each month on the timescale.
Months displays months on the timescale.
Unspecified means that the timescale unit is not specified.
The following code sample demonstrates how to specify the timescale unit when rendering a Project file to HTML:
withgv.Viewer("SoftwareDevelopmentPlan.mpp")asviewer:# Convert the document to HTML.# {0} is replaced with the current page number in the file name.viewOptions=gvo.HtmlViewOptions.for_embedded_resources("output_{0}.html")# Specify the time unit.viewerOptions.project_management_options.time_unit=gvo.TimeUnit.ThirdsOfMonthsviewer.view(viewOptions)
The image below illustrates the result.
Render specific dates
With GroupDocs.Viewer, you can render only a portion of the project’s timeline when you convert your Project file to HTML, PDF, or image format. Set the ViewOptions.project_management_options.start_date and ViewOptions.project_management_options.end_date properties for a target view to specify a date range the timeline should display. If you set only the start_date property, the timeline displays information for tasks from the specified date to the project’s finish date. If you set only the end_date property, the timeline contains dates from the project’s start date to the specified date.
The example below demonstrates how to convert a Project file to PDF and set the timeline date range.
importdatetimewithgv.Viewer("SoftwareDevelopmentPlan.mpp")asviewer:# Convert the document to PDF.viewOptions=gvo.PdfViewOptions("output.pdf")# Specify the date range.viewOptions.project_management_options.start_date=datetime.datetime(2022,08,01)viewOptions.project_management_options.end_date=datetime.datetime(2022,09,01)viewer.view(viewOptions)
The following image illustrates the result:
Render notes
Microsoft Project allows you to add notes to tasks, resources, and assignments.
If you need to display these notes in the output HTML, PDF, or image files, enable the ViewOptions.render_notes property for a target view.
The following code sample converts a Project file with task notes to PDF:
withgv.Viewer("SoftwareDevelopmentPlan.mpp")asviewer:# Convert the document to PDF.viewOptions=gvo.PdfViewOptions("output.pdf")# Enable notes rendering.viewOptions.render_notes=Trueviewer.view(viewOptions)
The image below demonstrates the result. Notes are rendered on a separate page.
Was this page helpful?
Any additional feedback you'd like to share with us?
Please tell us how we can improve this page.
Thank you for your feedback!
We value your opinion. Your feedback will help us improve our documentation.