Xml_to_pdf using python for ccda xml files with a stylesheet cda.xsl

Please provide a code snippet for xml to pdf using a style sheet using python.
Please provide a fastest solution possible and provide the resources to explore more.
I tried aspose.cells did not work file cannot be opened.

@Balaji_Revanth

To convert CCDA XML files to PDF using a stylesheet in Python, you can utilize the lxml library for XML processing and reportlab for PDF generation. Below is a code snippet that demonstrates how to apply an XSLT stylesheet to your XML and then create a PDF:

from lxml import etree
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

# Load your XML and XSLT files
xml_file = 'your_file.xml'
xslt_file = 'cda.xsl'

# Parse the XML and XSLT
xml_doc = etree.parse(xml_file)
xslt_doc = etree.parse(xslt_file)

# Transform the XML using the XSLT
transform = etree.XSLT(xslt_doc)
result_tree = transform(xml_doc)

# Create a PDF
pdf_file = 'output.pdf'
c = canvas.Canvas(pdf_file, pagesize=letter)

# Write the transformed XML content to the PDF
for line in str(result_tree).splitlines():
    c.drawString(100, 750, line)
    c.showPage()

c.save()

Ensure you have the required libraries installed:

pip install lxml reportlab

This code reads your XML file, applies the XSLT transformation, and generates a PDF with the transformed content. You may need to adjust the PDF generation section to format the output according to your requirements.

If you have any further questions, feel free to ask!

i askef for solution using aspose products

@Balaji_Revanth,

Using Aspose.Cells for Python might not work well because that library is specialized for Excel spreadsheets and not for general XML+XSLT transformations to PDF. You can use Aspose.PDF library, which supports loading XML efficiently and applying XSLT to produce a styled PDF for your requirements. See the document for your reference: Creating PDF from XML using XSLT|Aspose.PDF for .NET
Also, check the article/page for your reference: How to Convert XML to PDF in Python

Moreover, my colleagues from Aspose.PDF team will evaluate your requirements in details and assist you precisely soon. @asad.ali FYI.

import aspose.pdf as pdf

license = pdf.License()
license.set_license(“Aspose.TotalforPythonvia.NET.lic”)

document = pdf.Document()

document.bind_xml(r"52153_09262025_115241.xml")

document.save(“XMLtoPDF.pdf”)

print(“XML to PDF Converted Successfully”)

The converted document is not opening and has size 2kb actual file size 830kb
These are medical ccda xml files.

@Balaji_Revanth,

Could you please zip and attach your input XML document and output PDF file. We will look into your issue soon.

XML_diagnosis.zip (79.9 KB)

i have attached expected output,aspose output,the style sheet which we use

@Balaji_Revanth,

Thanks for the sample files.

We will evaluate your issue using your resource files and get back to you soon.

Hi, @Balaji_Revanth!

Thank you for sending sample files! Here is solution for your case:

import aspose.pdf as ap
from os import path, remove
from lxml import etree

# -------------- convert_XML_to_PDF
data_dir = "<XML_diagnosis>"
MM_TO_PT = 2.83465  # Conversion factor from millimeters to points

def transform_xml_to_html(xml_file, xslt_file, html_file):
    """
    Transform XML to HTML using XSLT and save the result to an HTML file.
    """
    xml_doc = etree.parse(xml_file)
    xml_doc = etree.parse(xml_file)
    # Parse XSLT stylesheet
    xslt_doc = etree.parse(xslt_file)
    transform = etree.XSLT(xslt_doc)

    # Apply transformation
    result = transform(xml_doc)

    # Save result to HTML file
    with open(html_file, 'w', encoding='utf-8') as f:
        f.write(str(result))


def convert_XML_to_PDF(template, infile, outfile):
    """
    Converts an XML file to a PDF using a specified XSLT template.

    Parameters:
        template (str): The filename of the XSLT template to use for transformation.
        infile (str): The filename of the input XML file.
        outfile (str): The filename for the output PDF file.

    Returns:
        None
    """
    path_infile = path.join(data_dir, infile)
    path_outfile = path.join(data_dir, outfile)
    path_template = path.join(data_dir, template)
    path_temp_file = path.join(data_dir, "temp.html")

    margin_10_mm = 10 * MM_TO_PT  # 10mm in pt
    load_options = ap.HtmlLoadOptions()
    load_options.html_media_type = ap.HtmlMediaType.PRINT
    load_options.page_info.margin = ap.MarginInfo(margin_10_mm, margin_10_mm, margin_10_mm, margin_10_mm)

    transform_xml_to_html(path_infile, path_template, path_temp_file)

    document = ap.Document(path_temp_file, load_options)
    document.save(path_outfile)

    if path.exists(path_temp_file):
        remove(path_temp_file)
    print(f"{infile} converted into {outfile}")

# -------------- convert_XML_to_PDF

convert_XML_to_PDF("CDA.xsl","Testpatient_Five_53730_09262025_122127.xml", "test1.pdf")
convert_XML_to_PDF("CDA_EHR.xsl","Testpatient_Five_53730_09262025_122127.xml", "test2.pdf")