Back to blog
Tekeningen exporteren naar PDF met C# in Inventor
Intermediate

Tekeningen exporteren naar PDF met C# in Inventor

David De Lombaerde David De Lombaerde · juli 10, 2026 · 14 min read

Tekeningen exporteren naar PDF is een dagelijkse taak in engineeringbedrijven. Handmatig kost het minuten per bestand; geautomatiseerd kost het milliseconden. In dit artikel leer je hoe je via C# en de Inventor COM API tekeningen exporteert naar PDF — enkelvoudig en in bulk.

Twee methoden

Je kunt PDF's genereren via de TranslatorAddIn (officieel en stabiel) of via PrintDocument (virtuele PDF-printer). Wij gebruiken TranslatorAddIn — dat is de aanbevolen route die volledig onafhankelijk is van geïnstalleerde printers.

Benodigde namespaces en references

using Inventor;
using System.Runtime.InteropServices;
// Geen extra NuGet — Inventor COM via COM-interop

Een tekening exporteren naar PDF

public void ExporteerNaarPdf(DrawingDocument tekDoc, string uitvoerPad)
{
    var app = tekDoc.Parent;

    // PDF-vertaler ophalen via bekende GUID
    const string PDF_GUID = "{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}";
    var translator = (TranslatorAddIn)app.ApplicationAddIns.ItemById[PDF_GUID];

    if (translator == null)
        throw new Exception("PDF-vertaler niet gevonden. Controleer of Inventor PDF-export is geïnstalleerd.");

    // Bronbestand instellen
    var context   = app.TransientObjects.CreateTranslationContext();
    context.Type  = IOMechanismEnum.kFileBased;

    var data      = app.TransientObjects.CreateDataMedium();
    data.FileName = uitvoerPad;

    // Opties instellen
    var opties    = app.TransientObjects.CreateNameValueMap();
    opties.Add("All_Color_AS_Black",  0);   // 0 = kleur, 1 = zwart-wit
    opties.Add("Remove_Line_Weights", 0);   // 0 = lijngewichten bewaren
    opties.Add("Vector_Resolution",   400); // DPI voor rasterobjecten
    opties.Add("Sheet_Range",         PrintRangeEnum.kPrintAllSheets);

    // Exporteer
    var document  = app.TransientObjects.CreateDataMedium();
    document.FileName = tekDoc.FullFileName;

    translator.SaveCopyAs(tekDoc, context, opties, data);
    Console.WriteLine($"✓ PDF opgeslagen: {uitvoerPad}");
}

Opties configureren

OptieWaardeBeschrijving
All_Color_AS_Black0 / 10 = kleur PDF, 1 = zwart-wit
Remove_Line_Weights0 / 10 = lijngewichten bewaren
Vector_ResolutionintegerDPI voor rasterinhoud (150–600)
Sheet_RangePrintRangeEnumAlle sheets, huidige sheet, of bereik
Custom_Begin_SheetintegerEerste sheet-index (bij kPrintSheetRange)
Custom_End_SheetintegerLaatste sheet-index

Specifieke sheets exporteren

opties.Add("Sheet_Range",        PrintRangeEnum.kPrintSheetRange);
opties.Add("Custom_Begin_Sheet", 1);
opties.Add("Custom_End_Sheet",   3); // sheets 1 tot en met 3

Batchverwerking van een map met tekeningen

[CommandMethod("BATCHPDF")]
public void BatchPdfExport()
{
    var app     = (Application)Marshal.GetActiveObject("Inventor.Application");
    string map  = @"C:\Tekeningen";
    string uitv = @"C:\PDF_Output";

    Directory.CreateDirectory(uitv);

    const string PDF_GUID = "{0AC6FD96-2F4D-42CE-8BE0-8AEA580399E4}";
    var translator = (TranslatorAddIn)app.ApplicationAddIns.ItemById[PDF_GUID];

    var logRegels = new List();

    foreach (var bestand in Directory.GetFiles(map, "*.idw", SearchOption.AllDirectories))
    {
        DrawingDocument tekDoc = null;
        try
        {
            tekDoc = (DrawingDocument)app.Documents.Open(bestand, false);

            string pdfNaam = Path.Combine(uitv,
                Path.GetFileNameWithoutExtension(bestand) + ".pdf");

            var context  = app.TransientObjects.CreateTranslationContext();
            context.Type = IOMechanismEnum.kFileBased;
            var data     = app.TransientObjects.CreateDataMedium();
            data.FileName = pdfNaam;
            var opties   = app.TransientObjects.CreateNameValueMap();
            opties.Add("All_Color_AS_Black",  0);
            opties.Add("Vector_Resolution",   300);
            opties.Add("Sheet_Range",         PrintRangeEnum.kPrintAllSheets);

            translator.SaveCopyAs(tekDoc, context, opties, data);
            logRegels.Add($"OK  | {Path.GetFileName(bestand)} → {Path.GetFileName(pdfNaam)}");
        }
        catch (Exception ex)
        {
            logRegels.Add($"ERR | {Path.GetFileName(bestand)}: {ex.Message}");
        }
        finally
        {
            tekDoc?.Close(true);
        }
    }

    string logPad = Path.Combine(uitv, $"export_log_{DateTime.Now:yyyyMMdd_HHmm}.txt");
    File.WriteAllLines(logPad, logRegels, System.Text.Encoding.UTF8);
    Console.WriteLine($"Klaar. Log: {logPad}");
}

IDW vs IPN bestanden

Inventor ondersteunt ook het exporteren van presentatiebestanden (.ipn). Het proces is identiek — open het bestand als PresentationDocument en gebruik dezelfde TranslatorAddIn.

PDF-bestandsnaming automatiseren

Een veelgebruikte naamgevingsconventie: [Onderdeel-nummer]_[Revisie].pdf. Haal deze waarden op uit de iProperties van de tekening:

string onderdeelNr = LeesProperty(tekDoc, "Design Tracking Properties", "Part Number");
string revisie     = LeesProperty(tekDoc, "Design Tracking Properties", "Revision Number");
string pdfNaam     = $"{onderdeelNr}_{revisie}.pdf";

Veelgemaakte fouten

TranslatorAddIn is null — de PDF-add-in moet geladen zijn. Controleer via Inventor → Extra → Add-In Manager of "Autodesk Inventor PDF Export" actief is.

Bestand vergrendeld — als het IDW-bestand al open staat in Inventor, geef dan de al-geopende document-referentie mee in plaats van het bestand opnieuw te openen.

Vector_Resolution te hoog — bij een DPI hoger dan 400 worden PDF's snel groot. 300 DPI is voldoende voor de meeste toepassingen.

Samenvatting

PDF-export vanuit Inventor via de TranslatorAddIn is stabiel, snel en volledig automatiseerbaar. De sleutelstap is het ophalen van de add-in via zijn GUID, het configureren van opties via een NameValueMap en het aanroepen van SaveCopyAs. Combineer dit met iProperty-uitlezing voor een professionele bestandsnaming.

Share this article

LinkedIn WhatsApp X

Comments

No comments yet — be the first!

Leave a comment

Sign in to skip moderation — anonymous comments are reviewed before appearing.