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
/StructParentsis removed from the copied pages and no/MarkInfois 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
/Lengthdid not agree with where itsendstreamkeyword 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,mailtoand URLs with no scheme at all are written; ajavascript:ordata: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,OutsetorWindowInset. 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
Collationnames 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 noAltReportItemto 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
Nothingand 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,
Likeagainst something that is not text, or aTopN,BottomN,TopPercentorBottomPercentvalue 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,Previousor a lookup in a calculated field;RowNumberin a variable;Previousin 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,OverallPageNumberorOverallTotalPagesoutside 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
#Errorin that place; the message says what failed.
- ReportExpressionScopeInvalid
DXP9107: an aggregate,
RowNumber,RunningValue,Previous,InScopeorLevelnames 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
SourceExternaland 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.IsMissingis 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
Embeddedimage the report does not contain, aDatabasevalue 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 theUserSort'sSortExpressionScopeorSortTargetnames 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,MatrixorList. 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
SubreportResolverwas supplied, the resolver returned no definition for itsReportName, 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.