To solve the given optimization problem, we first need to translate the natural language description into a symbolic representation. This involves defining variables for each item, formulating the objective function, and listing all constraints using these variables.

Let's define:
- \(x_1\) as the quantity of manila envelopes,
- \(x_2\) as the amount of red highlighters,
- \(x_3\) as the total number of paper clips.

The objective function to minimize is: \(9x_1 + 8x_2 + x_3\).

Given constraints:
1. Sustainability score from manila envelopes and paper clips should be at least 40: \(9.78x_1 + 12.61x_3 \geq 40\).
2. Sustainability score from manila envelopes and red highlighters should be at least 62: \(9.78x_1 + 4.69x_2 \geq 62\).
3. Total sustainability score from all items should be at least 62: \(9.78x_1 + 4.69x_2 + 12.61x_3 \geq 62\).
4. Constraint on manila envelopes and red highlighters: \(2x_1 - 7x_2 \geq 0\).
5. All variables must be integers (non-fractional amounts).

Symbolic representation:
```json
{
    'sym_variables': [('x1', 'manila envelopes'), ('x2', 'red highlighters'), ('x3', 'paper clips')],
    'objective_function': '9*x1 + 8*x2 + x3',
    'constraints': [
        '9.78*x1 + 12.61*x3 >= 40',
        '9.78*x1 + 4.69*x2 >= 62',
        '9.78*x1 + 4.69*x2 + 12.61*x3 >= 62',
        '2*x1 - 7*x2 >= 0'
    ]
}
```

Now, let's write the Gurobi code to solve this problem:
```python
from gurobipy import *

# Create a new model
m = Model("Optimization_Problem")

# Define variables
x1 = m.addVar(vtype=GRB.INTEGER, name="manila_envelopes")
x2 = m.addVar(vtype=GRB.INTEGER, name="red_highlighters")
x3 = m.addVar(vtype=GRB.INTEGER, name="paper_clips")

# Set objective function
m.setObjective(9*x1 + 8*x2 + x3, GRB.MINIMIZE)

# Add constraints
m.addConstr(9.78*x1 + 12.61*x3 >= 40, "sustainability_score_min_1")
m.addConstr(9.78*x1 + 4.69*x2 >= 62, "sustainability_score_min_2")
m.addConstr(9.78*x1 + 4.69*x2 + 12.61*x3 >= 62, "total_sustainability_score_min")
m.addConstr(2*x1 - 7*x2 >= 0, "envelopes_highlighters_constraint")

# Optimize model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print("Manila Envelopes:", x1.x)
    print("Red Highlighters:", x2.x)
    print("Paper Clips:", x3.x)
    print("Objective Function Value:", m.objVal)
else:
    print("No optimal solution found")
```