PdfConverter Batch Conversion Guide

PdfConverter Batch Conversion Guide

This guide shows how to batch convert multiple Visio diagram files to PDF using PdfConverter in Aspose.Diagram for .NET.

Prerequisites

  • Aspose.Diagram for .NET (version 26.4.0 or later)
  • Valid Aspose license applied before any conversions

Step 1: Basic Batch Conversion

Convert all VSDX files in an input directory to PDF in a separate output directory:

using System.IO;
using Aspose.Diagram.LowCode;

string inputDir = "diagrams/input";
string outputDir = "diagrams/pdf-output";
Directory.CreateDirectory(outputDir);

foreach (string file in Directory.GetFiles(inputDir, "*.vsdx"))
{
    string output = Path.Combine(outputDir, Path.GetFileNameWithoutExtension(file) + ".pdf");
    PdfConverter.Process(file, output);
    Console.WriteLine($"Exported: {Path.GetFileName(file)} → {Path.GetFileName(output)}");
}

Step 2: Batch with Error Isolation

Isolate failures so one corrupt file does not abort the entire batch:

using System;
using System.IO;
using Aspose.Diagram.LowCode;

string inputDir = "diagrams/input";
string outputDir = "diagrams/pdf-output";
Directory.CreateDirectory(outputDir);

int successCount = 0;
int failureCount = 0;

foreach (string file in Directory.GetFiles(inputDir, "*.vsdx"))
{
    string output = Path.Combine(outputDir, Path.GetFileNameWithoutExtension(file) + ".pdf");
    try
    {
        PdfConverter.Process(file, output);
        successCount++;
        Console.WriteLine($"OK: {Path.GetFileName(file)}");
    }
    catch (Exception ex)
    {
        failureCount++;
        Console.WriteLine($"FAIL: {Path.GetFileName(file)} — {ex.Message}");
    }
}

Console.WriteLine($"\nBatch complete: {successCount} succeeded, {failureCount} failed");

Step 3: Batch with PDF/A Compliance

Apply PDF/A-1b compliance to all files in the batch:

using System;
using System.IO;
using Aspose.Diagram.LowCode;
using Aspose.Diagram.Saving;

string inputDir = "diagrams/input";
string outputDir = "diagrams/pdfa-output";
Directory.CreateDirectory(outputDir);

var pdfOptions = new PdfSaveOptions();
pdfOptions.Compliance = PdfCompliance.PdfA1b;

foreach (string file in Directory.GetFiles(inputDir, "*.vsdx"))
{
    string output = Path.Combine(outputDir, Path.GetFileNameWithoutExtension(file) + ".pdf");

    var loadOptions = new LowCodeLoadOptions();
    loadOptions.InputFile = file;

    var saveOptions = new LowCodePdfSaveOptions();
    saveOptions.OutputFile = output;
    saveOptions.PdfOptions = pdfOptions;

    PdfConverter.Process(loadOptions, saveOptions);
    Console.WriteLine($"PDF/A exported: {Path.GetFileName(output)}");
}

Step 4: Batch with Multiple Input Formats

Process a mixed directory of Visio files (VSDX, VSD, VDX):

using System;
using System.IO;
using Aspose.Diagram.LowCode;

string inputDir = "diagrams/mixed-input";
string outputDir = "diagrams/pdf-output";
Directory.CreateDirectory(outputDir);

string[] patterns = { "*.vsdx", "*.vsd", "*.vdx" };

foreach (string pattern in patterns)
{
    foreach (string file in Directory.GetFiles(inputDir, pattern))
    {
        string output = Path.Combine(outputDir, Path.GetFileNameWithoutExtension(file) + ".pdf");
        try
        {
            PdfConverter.Process(file, output);
            Console.WriteLine($"OK: {Path.GetFileName(file)}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"FAIL: {Path.GetFileName(file)} — {ex.Message}");
        }
    }
}

Supported Input Formats

FormatExtension
Visio Drawing (modern).vsdx
Visio Drawing (legacy).vsd
Visio XML Drawing.vdx
Visio Macro-Enabled Drawing.vsdm
Visio Stencil.vssx
Visio Template.vstx

Troubleshooting

ProblemLikely CauseFix
Evaluation watermark in PDFsLicense not appliedApply metered licensing via metered.SetMeteredKey() before starting the batch loop
Output directory not foundDirectory not createdCall Directory.CreateDirectory(outputDir) before the loop
Batch fails on first errorNo per-file try/catchWrap each Process() call in its own try/catch block
Mixed format files skippedPattern only matches one extensionLoop over multiple patterns as shown in Step 4

See Also