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
| Optie | Waarde | Beschrijving |
|---|---|---|
| All_Color_AS_Black | 0 / 1 | 0 = kleur PDF, 1 = zwart-wit |
| Remove_Line_Weights | 0 / 1 | 0 = lijngewichten bewaren |
| Vector_Resolution | integer | DPI voor rasterinhoud (150–600) |
| Sheet_Range | PrintRangeEnum | Alle sheets, huidige sheet, of bereik |
| Custom_Begin_Sheet | integer | Eerste sheet-index (bij kPrintSheetRange) |
| Custom_End_Sheet | integer | Laatste 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.
Comments
No comments yet — be the first!
Leave a comment
Sign in to skip moderation — anonymous comments are reviewed before appearing.