iOfficeAI/OfficeCLI · error · ArgumentException
Invalid --page value '{pageFilter}': slide number must be >=
Error message
Invalid --page value '{pageFilter}': slide number must be >= 1. What it means
SVG/pptx --page parsed as an integer but the value is <= 0 (0 or negative). Distinct ArgumentException from the non-integer case (error 66); this one fires after int.TryParse succeeds but the value fails the positivity check. Enforces that slide numbers are 1-based.
Source
Thrown at src/officecli/CommandBuilder.View.cs:510
if (mode.ToLowerInvariant() is "svg" or "g")
{
if (handler is OfficeCli.Handlers.PowerPointHandler pptSvgHandler)
{
// CONSISTENCY(view-page): SVG mode honors --page like html mode; --page wins over --start
int slideNum = 1;
if (!string.IsNullOrEmpty(pageFilter))
{
var firstTok = pageFilter.Split(',')[0].Split('-')[0].Trim();
// CONSISTENCY(strict-page): reject non-positive --page
// values explicitly instead of silently rendering
// slide 1, mirroring how 0 / negatives are surfaced
// elsewhere in the CLI.
if (!int.TryParse(firstTok, out var p))
throw new ArgumentException(
$"Invalid --page value '{pageFilter}': expected a positive slide number.");
if (p <= 0)
throw new ArgumentException(
$"Invalid --page value '{pageFilter}': slide number must be >= 1.");
slideNum = p;
}
else if (start.HasValue && start.Value > 0)
{
slideNum = start.Value;
}
var svg = RenderViaRegistry(handler, "pptx",
new OfficeCli.Core.Rendering.RenderOptions
{ Output = OfficeCli.Core.Rendering.RenderOutputKind.Svg, StartPage = slideNum })!;
if (browser)
{
string outPath;
if (svg.Contains("data-formula"))
{
// Wrap SVG in HTML shell for KaTeX formula rendering
// GUID keeps the path unpredictable so a local attackerView on GitHub (pinned to 1ced45e900)
Solutions
- Use a slide number >= 1 (slides are 1-based)
- Clamp computed page values to at least 1 before passing to --page
- If you meant 'no specific page', omit --page entirely (defaults to slide 1, or --start)
Example fix
// before officecli view --mode svg --page 0 deck.pptx // after officecli view --mode svg --page 1 deck.pptx
Defensive patterns
Strategy: validation
Validate before calling
// Reject non-positive slide numbers before SVG mode.
var firstTok = pageFilter.Split(',')[0].Split('-')[0].Trim();
if (int.TryParse(firstTok, out int p) && p <= 0)
{
// error: slides are 1-based; do not invoke with p
} Type guard
bool IsPositiveSlide(string? pageFilter)
{
if (string.IsNullOrEmpty(pageFilter)) return true;
var firstTok = pageFilter.Split(',')[0].Split('-')[0].Trim();
return int.TryParse(firstTok, out int p) && p >= 1;
} Try / catch
try
{
// invoke view --mode svg --page X deck.pptx
}
catch (System.ArgumentException ex) when (ex.Message.Contains("must be >= 1"))
{
// clamp page to >= 1 and retry
} Prevention
- Treat slide numbers as 1-based; never pass 0 or negatives
- Clamp computed page values to Math.Max(1, value)
- Omit --page to default to slide 1
When it happens
Trigger: `view --mode svg --page 0 deck.pptx`, `--page -3 deck.pptx`. SVG mode, pptx handler, integer first token that is non-positive.
Common situations: Zero-indexed assumption (user thinks slide 0 = first); negative from a script doing arithmetic that underflows; defaulting an unset variable to 0.
Related errors
- Invalid --page value '{pageFilter}': expected a positive sli
- Invalid --page value '{pageFilter}': expected N or M-N or co
- --page {ps} out of range (total slides: {slideCount}).
- --page {p} out of range (total slides: {slideCount}).
- Invalid spacing value '{value}'. Value too large — exceeds m
AI-assisted analysis of iOfficeAI/OfficeCLI@1ced45e900 (2026-08-13).
Data as JSON: /api/errors/3e1ddc93a20b36a7.
Report an issue: GitHub.