Table of Contents

Class DiagnosticCodes

Namespace
DocWright.Core.Diagnostics
Assembly
DocWright.Core.dll

The stable, machine-readable diagnostic codes DocWright emits. Codes are grouped by thousands: DXP0xxx pipeline, DXP1xxx document structure, DXP2xxx unsupported content, DXP3xxx fonts, DXP4xxx resource limits, DXP5xxx field evaluation, DXP6xxx encryption, protection and signatures, DXP7xxx output conformance, DXP8xxx PDF import and page assembly, DXP9xxx report definitions and report processing. Codes are append-only: a published code is never renumbered or reused — DXP2005 and DXP2006 start where they do because DXP2004 was already allocated, not because 2004 is reserved.

public static class DiagnosticCodes
Inheritance
DiagnosticCodes
Inherited Members

Fields

ChartAxisScaleRejected

DXP2009: a chart stated an axis scale that could not be used and the automatic scale was drawn instead. Reported for a minimum at or above the maximum, for a non-finite bound, for a major unit that is zero, negative or non-finite, and for an explicit range whose tick count exceeds the drawable ceiling. The chart still renders: the values are plotted against a computed scale rather than the stated one, so the picture is right and the axis labels are not the author's.

ConformanceDegraded

DXP7001: content was degraded to satisfy a requested output conformance level, for example a PDF/A-prohibited feature that was dropped.

DocumentDecrypted

DXP6003: an encrypted document was decrypted successfully.

DocumentEncrypted

DXP6001: the input is an encrypted Office document; the detected scheme is named in the message.

ExportLayoutApproximated

DXP2006: content was re-expressed with absolute positioning or flattened out of its container because the target's structured model could not carry it — for example merged table cells written as positioned items instead of spanned ones. Distinct from ExportStructureCollapsed: the geometry is preserved and the semantics are not, so the output looks right and is no longer bindable.

ExportStructureCollapsed

DXP2005: a source structure the target format has no equivalent for was collapsed to a single representative — for example a multi-section document exported to a format with one page setup, or Word's first-page and even-page header variants exported to a format offering only one. The content survives; the structure does not.

ExternalResourceNotFetched

DXP2004: content referenced an external resource that DocWright did not fetch, and the reference was dropped. DocWright never performs network or file-system access on behalf of a document; a host that wants one supplies a resolver and owns the risk.

FieldEvaluationError

DXP5002: a field evaluated to one of Word's error results (for example !Syntax Error).

FieldExternalResourceSkipped

DXP5003: a field instruction referenced an external resource, which DocWright never fetches; the cached result was kept.

FieldNotEvaluated

DXP5001: a field could not be evaluated and kept its cached result.

FontDataRecovered

DXP3003: a font file contained recoverable structural issues; parsing continued with best-effort behavior.

FontFallbackApplied

DXP3001: a requested font was not found and a fallback font was substituted.

FontNotFound

DXP3002: a requested font was not found and no fallback resolved.

FontSubstitutionSummary

DXP3004: aggregated end-of-conversion font-substitution summary (total runs affected, distinct families substituted, worst-case PANOSE distance).

GlyphFallbackApplied

DXP3005: an otherwise-present font lacked glyphs for a codepoint and the run's characters were resolved per-cluster through the configured script fallback chain.

LegacyCompatibilityMode

DXP1001: the document requests a legacy OOXML compatibility mode (compatibilityMode 12 or 14) that is not implemented as a whole; mode 15 behavior is used instead, except for the behaviours measured to follow the declared mode - justified-line compression (WQ-0025), East Asian line breaking (WQ-0046) and the pair-kerning table (WQ-0049).

MetafileNotPlayed

DXP2007: a metafile picture could not be played and a placeholder was drawn in its place. Reported for a payload that is not a metafile at all, for a container this library does not play — WMF today — and for one that recorded nothing drawable.

MetafileRecordsSkipped

DXP2008: a metafile was played but contained record types that were not drawn, so the picture is incomplete rather than absent. Reported once per picture, carrying the count of distinct unplayed record types rather than the number of occurrences: a metafile that repeats one unsupported record ten thousand times is one problem, not ten thousand.

MissingNumberingDefinition

DXP1003: a paragraph references a numbering id or level that is not defined; the paragraph is treated as unnumbered.

MissingStyleReference

DXP1002: content references a style id that is not defined; the reference is ignored and resolution continues without it.

PdfAnnotationNotPainted

DXP8010: an annotation could not be drawn because it carries no normal appearance stream. DocWright renders the appearance a producer wrote and does not generate one, so a form field with a value but no appearance contributes nothing to the page.

PdfAssemblyCatalogEntryDropped

DXP8016: a document-level catalog entry was not carried into an assembled output — either because more than one source had it and merging it is ambiguous, or because it describes a document that no longer exists. The entry is named in the message.

PdfAssemblyDestinationRemoved

DXP8013: one or more links or destinations named a page that is not in the assembled output. The action was removed and the annotation's appearance was kept, so the box still draws as authored. Counted once per output rather than once per link.

PdfAssemblyEncryptionRemoved

DXP8011: a source of a page assembly was encrypted, and the assembled output is not. The pages were decrypted to be copied and there is no supported way to encrypt them again, so the output is readable by anyone who holds it. Reported every time, because the thing lost is a security property of the user's file rather than a feature of it.

PdfAssemblyFormDropped

DXP8015: more than one source of a page assembly carried an interactive form, and the forms were dropped. Two documents with a field of the same name cannot both keep it, and renaming one changes the meaning of every script and every submission that refers to it. The widget annotations are kept and still draw as authored.

PdfAssemblyOutlineEntryRemoved

DXP8014: one or more outline entries (bookmarks) were removed because their destination page is not in the assembled output and no surviving entry sits below them.

PdfAssemblyStructureTreeDropped

DXP8012: a source of a page assembly carried a structure tree (tagged PDF) that the output does not. Re-parenting a structure tree across an arbitrary page permutation is out of scope, so /StructParents is removed from the copied pages and no /MarkInfo is written — an untagged file presented as tagged is worse than an untagged file.

PdfColorSpaceApproximated

DXP8007: a colour space could not be resolved and a device space was used in its place, so colours are approximate.

PdfCrossReferenceRebuilt

DXP8003: the file's cross-reference information was missing or unusable and the object positions were recovered by scanning the file for object headers. The document opened; it was damaged.

PdfDecrypted

DXP8008: the PDF was encrypted and was decrypted successfully. Informational, and reported every time: a caller that renders a document it could not have read without a password should be able to see that in the diagnostics rather than infer it.

PdfFeatureNotSupported

DXP8002: a construct the PDF names is not supported by this reader and was not painted — an unimplemented shading type, blend mode, or annotation appearance. Distinct from PdfOperatorNotImplemented: the operator ran, and refused.

PdfFontProgramNotUsable

DXP8006: an embedded font program could not be used, so glyphs were drawn from a substituted face or not at all. The accompanying FontFallbackApplied reports which face was chosen when one was.

PdfImageNotDecoded

DXP8005: an image could not be decoded — an unsupported filter, an unsupported bit depth, or malformed sample data — and was not drawn.

PdfOperatorNotImplemented

DXP8001: a content-stream operator was recognized but is not implemented, so it was counted and skipped rather than executed. The page still paints; whatever that operator would have contributed is missing.

PdfPermissionsDenied

DXP8009: an encrypted PDF's permission flags denied the operation and the caller asked for them to be honoured. Never reported unless enforcement was requested — the flags are advisory, and anyone holding the file also holds the key.

PdfStreamLengthRecovered

DXP8004: a stream's declared /Length did not agree with where its endstream keyword actually is, and the extent found by scanning was used instead.

PipelineUnavailable

DXP0001: the requested conversion pipeline stage is not available in this build.

ProtectionNotEnforced

DXP6004: the document carries protection settings, which DocWright reports but never enforces.

ReportActionUrlRefused

DXP9501: an action's URL was not written into the projection because its scheme is not one a viewer may follow. Only http, https, mailto and URLs with no scheme at all are written; a javascript: or data: target is script or a document the report's author chose, running in the viewer's own origin.

ReportBorderStyleNotSupported

DXP9408: a report border names a style Reporting Services does not accept — DashDot, DashDotDot, Groove, Ridge, Inset, Outset or WindowInset. The border is drawn solid at its stated width and colour.

ReportChartFeatureNotDrawn

DXP9405: part of a chart is not drawn by this version — a plot type other than column, bar, line, area, pie or doughnut (scatter, range, stepped, polar and the other shapes), a subtype this version does not draw, a palette that is not one, or a plot too small to draw in. The frame, axes, title and legend are still drawn, so the chart is a chart rather than a blank box, and this names what is missing.

ReportChartNoData

DXP9404: a chart has no values to plot — its dataset returned no rows, its series or categories are empty, or every data point evaluated to nothing. The chart's box and background are drawn and the plot is left empty.

ReportCollationUnrecognized

DXP9207: a dataset's Collation names no collation DocWright recognizes. The report language's ordering is used instead.

ReportCustomCodeNotExecuted

DXP9103: a report expression calls the report's custom code (Code.Name(...)) or a custom assembly, and no code host was supplied. Custom code is never executed by default: running it would be running arbitrary code from an uploaded file.

ReportCustomItemNotDrawn

DXP9406: a custom report item could not be drawn — no drawer is registered for its Type, it has no AltReportItem to fall back to, or the drawer refused its properties. The item keeps its box and draws nothing.

ReportCyclicReference

DXP9209: a calculated field, a variable or a report item's value depends on itself. The value is Nothing and the loop is reported, which is what the reference implementation does.

ReportDanglingReference

DXP9005: a report definition refers to something it does not contain - a dataset, data source or scope named by an element that has no matching definition. The referring element and the missing name are given in the message.

ReportDataComparisonFailed

DXP9206: a sort, a group or a filter compared values that cannot be compared — a number with text, Like against something that is not text, or a TopN, BottomN, TopPercent or BottomPercent value that is not a number. The reference implementation stops processing the report, and so does DocWright.

ReportDataProviderSchemaViolation

DXP9202: a data provider's reader returned a value its own schema does not allow — a value of another type, or null in a column that does not allow null. Processing stops: coercing the value would change what the report computes.

ReportDataSetNotSupplied

DXP9201: a report needs a dataset that the data provider did not supply — it returned no reader, or no provider was given. Everything bound to the dataset is processed as empty and the omission is reported, rather than rendering as if the data had no rows.

ReportDuplicateName

DXP9004: two elements in a report definition share a name that must be unique. Report item names are referenced by expressions (ReportItems!Total.Value), so a duplicate does not merely look untidy - it makes those references ambiguous.

ReportExportContentReduced

DXP9502: part of a report reached an export in a reduced form, or not at all — an item a format has no way to carry, a border style it cannot draw, or content outside the rows a data export describes. The rest of the export is unaffected and one diagnostic names what was reduced.

ReportExpressionInvalid

DXP9101: a report expression is not one the reference compiler would accept - a syntax error, a name that is not declared, the wrong number of arguments, or a constant sub-expression that cannot be evaluated (5 \ 0). The reference implementation refuses the whole report for these, so they are reported when the expression is parsed, not when it runs. The message gives the position.

ReportExpressionNotAllowedHere

DXP9210: an expression uses something RDL forbids where it is written — an aggregate, RowNumber, RunningValue, Previous or a lookup in a calculated field; RowNumber in a variable; Previous in a group header or footer or in a matrix cell. The reference implementation refuses the whole report for these.

ReportExpressionPageGlobalOutsidePage

DXP9104: an expression reads Globals!PageNumber, TotalPages, OverallPageNumber or OverallTotalPages outside a page header or footer. Page numbers exist only once a report is paginated, and the reference implementation rejects the report for the same reason rather than printing a zero.

ReportExpressionRuntimeError

DXP9105: a report expression failed while it was being evaluated - a conversion that does not apply, an overflow, an integer division by zero. The reference implementation shows #Error in that place; the message says what failed.

ReportExpressionScopeInvalid

DXP9107: an aggregate, RowNumber, RunningValue, Previous, InScope or Level names a scope that is not a string constant, does not exist, or does not contain the place the expression is evaluated.

ReportExpressionUnknownReference

DXP9106: a report expression names a field, parameter, report item, variable, dataset or data source the report does not define. Names in these collections are case-sensitive.

ReportExpressionUnsupported

DXP9102: a report expression uses something RDL allows and DocWright deliberately does not evaluate - a .NET member outside the supported set, object creation, or a function in the refused list. The construct is named. This is a refusal, not a defect in the expression.

ReportExternalImageNotFetched

DXP9402: a report image has Source External and no resolver was supplied, so its reference was not dereferenced.

ReportFieldMissing

DXP9205: a dataset field names a column (DataField) the data does not contain. Fields!Name.IsMissing is True for it.

ReportFontSubstituted

DXP9305: a report asked for a font family that this host did not supply as the installed face of that name, so the text was measured with something else.

ReportGaugeFeatureNotDrawn

DXP9407: part of a gauge panel is not drawn, or not drawn as the reference draws it — a numeric indicator or gauge image; a gauge's frame, images, pins, thermometer pointer, logarithmic or reversed scale or custom labels; a gradient, hatch, border or shadow (the solid colour is drawn); a pointer cap's shading (a flat disc is drawn); rotated labels (drawn upright); an indicator drawn as an image; or an input value transformed in a way this version does not reproduce. What the panel can draw is drawn, and one diagnostic per gauge names everything that is missing from it.

ReportGlyphMissing

DXP9302: report text contains characters the font resolved for it has no glyph for. They are measured and drawn with the face's missing-glyph advance, so the line still breaks, and the characters are named here rather than silently turned into boxes.

ReportImageFormatUnsupported

DXP9403: a report image's bytes are not in a format DocWright decodes. PNG and JPEG are drawn; anything else — BMP, GIF, TIFF, SVG, or bytes that are not an image at all — keeps its place and draws nothing.

ReportImageNotEmbedded

DXP9503: an image could not be embedded in an HTML projection because its content type is not one a browser will render from a data: URL. The item keeps its box and its place in the region map, so a host that can serve the bytes itself still can.

ReportImageSourceUnresolved

DXP9401: a report image names a source that cannot be resolved — an Embedded image the report does not contain, a Database value that is null or is not image bytes, or a value expression that produced nothing. The image draws nothing and keeps its place.

ReportInteractiveSortNotApplied

DXP9504: an interactive sort was requested and not applied. The request names no text box the report has, or one that offers no UserSort; or the UserSort's SortExpressionScope or SortTarget names no group, data region or dataset of the report, or a target that does not contain the scope; or the text box sits outside every data region, names no scope, and the report has more than one dataset to sort. The report is processed in its authored order and one diagnostic names the request; strict mode stops the run instead.

ReportItemNotProcessed

DXP9208: a report item whose data is not processed in this version — an RDL 2005 Table, Matrix or List. It is kept in the definition and named here, and is not processed as though it had no rows.

ReportItemNotRendered

DXP9301: a report item that pagination does not draw in this version — a map, or a chart or gauge panel whose data was not processed. It keeps its place and its size on the page, so everything around it is positioned as it would be, and its content is left out.

ReportMeasureClamped

DXP9002: a measurement in a report definition was outside the representable range and was clamped. The element and the original text are named in the message.

ReportMeasureInvalid

DXP9003: a measurement in a report definition could not be parsed - a missing or unknown unit, or text where a size was required. The documented default for that property is used and the original text is preserved for round-trip.

ReportPageSetupInvalid

DXP9304: a report's page leaves no room for its body — the margins, page header and page footer are at least as tall as the page, or the columns wider than it. Pagination uses the smallest usable body instead of producing no pages or unbounded ones.

ReportParameterForwardDependency

DXP9204: a report parameter's default or valid values refer to a parameter declared after it. Parameters are evaluated in document order, so the reference cannot be satisfied — and a cycle between parameters always contains such a reference. The reference implementation refuses the report for the same reason.

ReportParameterValueInvalid

DXP9203: a report parameter has no valid value — text that does not convert to its data type, null where it is not nullable, a blank where blank is not allowed, or a value outside its valid values. The report cannot run until it has one; the parameter's prompt says why.

ReportSchemaVersionUnrecognized

DXP9001: a report definition declared a namespace DocWright does not recognize as a report definition schema. The definition is still read - every element is preserved whether or not it is modelled - but version-specific behaviour falls back to the newest schema DocWright knows.

ReportStyleValueInvalid

DXP9303: a report style property has a value pagination cannot read — a colour, a size or a keyword it does not recognize, or an expression that failed. The property's default is used.

ReportSubreportNotRun

DXP9211: a subreport was not run — no SubreportResolver was supplied, the resolver returned no definition for its ReportName, or the subreport's own run failed (a parameter with no valid value, a definition in error). The subreport keeps its authored box and draws nothing.

ResourceLimitExceeded

DXP4001: a configured resource limit was exceeded.

SignaturePresent

DXP6005: a digital signature was found; DocWright preserves it but a save invalidates it.

SymbolTextUnresolved

DXP3006: text was drawn from a symbol-encoded face whose codes have no published meaning, so the extracted text keeps the private-use codepoints the document stored. Reported once per face per conversion.

UnknownPartPreserved

DXP2003: an unknown part or XML island was preserved opaquely for round-trip.

UnsupportedElement

DXP2001: an element was skipped because DocWright does not support it.

UnsupportedEncryptionScheme

DXP6002: the document is encrypted with a scheme DocWright can detect but not decrypt.

UnsupportedFeature

DXP2002: a feature was degraded because DocWright does not fully support it.