Hello / Bonjour πŸ‘‹

The team and I are happy to announce important news, in order:
Carbone v4.0.0 is out with many new features! After a long beta testing phase with many of you playing with dynamic charts, it is now into production!
New Pricing for Carbone Cloud services (API and Studio plans are merged now!!)
Company updates and a roadmap update for the summer

Let's dive in πŸ‘‡

Carbone V4.0.0

As it is a major new version, it includes long-awaited features, which give you more power over creating reports!

Access the latest version

Carbone Cloud API: Add the header "carbone-version":4 to your HTTP requests.
Carbone Cloud Studio: Click on the top-right "settings" icon > click on "version" > Select 4.X.X.
Carbone On-premise: Everything is included on the email you received.
Carbone JS on Github 😺: The rendering engine will be updated on the coming weeks, stay tuned.

Top Features

1 - Dynamic Charts πŸ“Š

You can create rich visualizations from your JSON data! It has been a long awaited feature since the beginning of Carbone:
Charts can be injected into ODT, DOCX or PDF reports.
Two solutions are available: create native charts from your text editor, or you can inject charts with Echarts 5 as images.
Basically, you got infinite possibilities.

Discover usage examples and all details on the Charts documentation.

2 - Array aggregators πŸ”’

Calculates a set of values and returns a single value thanks to list aggregators:
aggSum: Sum-up values, e.g. {d.cars[].qty:aggSum} => 21
aggAvg: Get an average, e.g. {d.cars[].qty:aggAvg} => 3.5
aggMin: Get the minimum value from an list, e.g. {d.cars[].qty:aggMin} => 1
aggMax Get the maximum value from an list, e.g.`{d.cars[].qty:aggMax}` => 10
aggCount Count the number of elements, e.g. {d.cars[].qty:aggCount} => 6

Filters and custom grouping close can be chained with aggregators. For instance, sum up salaries grouped by departments:
{d.departments[i].people[].salary:aggSum(.i)}

Discover usage examples and all details on the aggregator documentation.

3 - Explicit errors 🚩

Carbone now shows explicit error messages when designing a template. A message is thrown when:
a tag {d.} tries to access an array and a object in the same time.
a list is printed and there is a missing [i] or [i+1].
Carbone cannot find the section to repeat
there is a dot . before []
the syntax is not correct. Ex: .sort.[sd, .sor]t.[sd
and more are coming!

4 - Access the loop iterator! πŸ”‚

Access the iterator value when a list is printed into a document.
Example: In {d[i].cars[i].other.wheels[i].tire.subObject:add(.i):add(..i):add(...i)}
The number of dots equals the number of previous i:
- .i matches the index value of wheels[i]
- ..i matches the index value of cars[i]
- ...i matches the index value of d[i]

Discover usage examples and all details on the documentation.

5 - Dynamic colors for shapes 🌈

The bindColor replaces background and line color of shapes.
This is an experimental feature only available for DOCX templates

Discover usage examples and all details on the bindColor documentation.

Discover all new features and fixes on the changelog

New Pricing for Carbone Cloud services

Previous plans are unified: now you are subscribed to one plan, it will generate one invoice per month/year, and that's it!
Your subscription gives you access to Carbone Cloud services: Carbone Cloud API and Carbone Cloud Studio!

The new pricing is available on carbone.io/pricing.html or your account.

If you were subscribed to Carbone Render API and/or Carbone Studio, now it is one subscription named Legacy Plan, giving you access to both services πŸ₯³

What changed and what is new ?

Carbone Render API is renamed Carbone Cloud API.
Carbone Studio is renamed Carbone Cloud Studio.
Your subscription gives you access to two services by default: the Cloud API and Cloud Studio.
Your cloud subscription gives you storage space for your templates. You can manage your storage space from your account, with all your templates uploaded through the API and Studio. Click to learn more.
Templates added through the Render API are persistent by default: 1 template added = 1 template stored for an unlimited time on your storage space. It is possible to make templates non persistent by adding the header to your HTTP requests { "carbone-version":4, "carbone-template-delete-after": 86400} with days in seconds, 86400 is one day (max 30 days).
API Usage Analytics: from your account, you can follow the API usage by days/weeks/months in real time! Performances stats are coming. πŸ“Š
Billing - SEPA payment method is now available!
Billing - you can set a billing email to receive future invoices.
Billing - Invoices are directly available on your account.
Account - Email verification βœ…
Account - You can change your password, and it must be a pretty strong one πŸ’ͺ
Account - New Interface and better overall experience, discover the new shiny interface: https://account.carbone.io πŸ¦„

What did not changed ?

Your quantity of credits (previously known as "render")
Your API keys (Prod/Test)
Your templates on Carbone Studio are always persistent (and now accessible on your storage space)
Your users
Your discount (if you had one)

Company Update

During the past months:
April 2022: Carbone is laureate of the "TrophΓ©es Avenir", a contest supporting original or new projects for companies located in the French department called "VendΓ©e" (Atlantic coast πŸ„β€β™‚οΈ).
June 2022: Carbone joined a Startup accelerator named β€œLa Cabine” for six months.

What's coming:
August 2022: Carbone V4.1.0 update: the HTML formatter will support image tags! Preview on Twitter.
October 2022: Carbone is joining the AWS and OVH Marketplace! Contact us if you want an early access.

Do you have any questions or feedback? The team is available on the live chat ✌️
Also, keep an eye on our Twitter and LinkedIn accounts for Carbone tips and news!

Thanks and cheers 🍻 - David, Guillaume, and Steeve

David (left), Steeve (middle), and Guillaume (right) in Saint-Gilles-Croix-de-Vie, France
Was this article helpful?
Cancel
Thank you!