Latest updates and news

PHP 8.4 Compatibility

22 November 2024

Good news! We've added PHP 8.4 to our test pipeline, and we're happy to confirm that typeset.sh works seamlessly with the latest PHP version. No updates are required, successfully tested with the latest release, version 0.26.22.

Release - v0.26.7

18 March 2024

We're pleased to roll out the latest version, featuring a range of small but significant improvements and fixes. A big thank you to all who reported issues, your valuable contributions help us keep refining our product for a better user experience.

Release - v0.26.0

19 February 2024

In this minor release, we're introducing a subtle modification: the default stroke width, previously null, is now set at 1px. This adjustment marks a breaking change as it could potentially impact SVG images.

Furthermore, users can now use text and tspan elements in their SVG images with this update.

Release - v0.25.0

30 January 2024

We're excited to share the latest update for Typeset.sh – version 0.25.0.

New CSS Properties: object-fit and object-position

These additions provide users with greater control over how images are displayed within their documents.

ZUGFeRD PDF Standard: Simplifying Invoicing

In response to user feedback, Typeset.sh now features a convenient save-handler that simplifies the process of attaching your XML to the PDF document. For a detailed guide, refer to the example documentation provided here.

Debug and Development View for Laravel Wrapper

15 May 2023

The Laravel Wrapper has been updated to include a debug view that is automatically enabled when in developer mode. This view allows users to preview the PDF, view the HTML code used to generate the PDF, and see the console output which displays any encountered issues.

Release - v0.24.0

3 April 2023

This fix is relatively minor, but it could cause issues with your current layouts.

We made a minor fix for right-to-left writings and table layouts. If you're using tables for right-to-left layouts, the correct table layout wasn't produced by typeset.sh. We have fixed this issue in the current release, but since it may break existing layouts, we decided to include it as a minor release rather than a patch release. If you're using tables in a right-to-left context, please make sure to test your layout.

CSS custom properties arrived at typeset.sh

1 February 2023

Exciting Update: Typeset.sh has just gotten even better with the addition of CSS custom properties in version 0.23.8.

More at https://developer.mozilla.org/

Continuous support for PHP 7.4

31 January 2023

Effective with the release of version 0.23, we have discontinued support for PHP 7.4 as it has reached the end of its life cycle. Despite this, some users are still facing difficulties updating PHP. As a result, we will continue to offer support for PHP 7.4, but strongly encourage all users to upgrade to the latest PHP version as soon as possible.

See the official end of life for PHP 7.4

docs.typeset.sh

14 January 2023

We are working on creating updated documentation through the use of GitBooks. While it is still under construction, you are welcome to view the current progress by visiting the link https://docs.typeset.sh/.

Although it is not yet finished, we believe that it will provide valuable resource for you. We will continue to make updates and improvements and appreciate any feedback you may have.

Release - v0.23.0

15 December 2022

This release focuses on improving color management features. Specific changes include:

  • More on color management, allow @color-profile rule.
  • Support for the lab() color function.
  • The separation of the Noto CJK file into a new package.
  • Various minor bug fixes.

Release - v0.22.5

11 December 2022

Minor release with some new features.

Release - v0.22.3

28 November 2022

Mostly refactoring of SVG and font packages.

  • Layout - Allow nested baseline shifts.
  • Render PDF - Allow PDF backgrounds with page selection (see example).

Release - v0.22.0

24 October 2022

This will be our last release supporting PHP 7.4. Remember, the official end of life for PHP 7.4 is just ahead, and it is time to update!

We have added the current RC for PHP 8.2 to our pipeline and are happy to see all our tests running smoothly.

Major changes have been made to the inline layout engine. These changes will allow better support for ::first-letter and ::first-line pseudo selectors as well as improved BIDI text handling.

  • Use PHP typed class properties.
  • PDF - Internal links should not change zoom level.
  • Snft fonts - Fix MarkToBaseAttachmentReader, anchors can be null.
  • Add Viewer Preference save handler.
  • Layout - Target counter should use a larger number as placeholder.
  • Layout - NormalizeFlex BR element issue.
  • Layout - Table div-zero issue.
  • Layout - Fix aspect ratio for replaced content when width and height are set.
  • Layout - Support ::first-line pseudo selector.
  • Layout - Improved ::first-letter pseudo selector.
  • Layout - Fix BIDI brackets mirroring issues.
  • Windows \r\n line breaks not handled correctly.

Release - v0.21.15

29 August 2022

Some minor fixes and improvements.

  • Snft fonts - Fix MarkToBaseAttachmentReader, anchors can be null.
  • Add Viewer Preference save handler.
  • Layout - Target counter should use a larger number as placeholder.
  • Layout - NormalizeFlex BR element issue.
  • Layout Table - Div Zero issue.
  • Layout - Fix aspect ratio for replaced content when width and height are set.
  • Windows \r\n line breaks not handled correctly.

Release - v0.21.9

7 July 2022

Some minor fixes and improvements.

  • QR Code - Allow to define error correction level vai attribute.
  • Snft fonts - Fix chaining contextual reader.
  • SVG - Add image and dashed stroke support.
  • SVG - Nested used elements did not inherit styles.
  • Layout - break-after sometimes failed.
  • Layout Table - Allow page break on table rows.

Release - v0.21.7

17 June 2022

Some minor fixes and improvements.

  • UrlResolver - Should not cache http errors.
  • Renderer - fdiv() issue on PHP 7.4
  • Layout - Table - Support min/max width on table cells.

Release - v0.21.6

17 May 2022

Some minor fixes and improvements.

  • SVG - Quadratic curve-to operation not parsed correctly.
  • SVG - Add support symbol element.
  • SVG - Add support for markers.

Release - v0.21.2

9 April 2022

Some minor fixes and improvements.

  • Fix url-resolver http ignoring query part.
  • Add support for text-decoration-style: wavy.
  • Add support for text-decoration-thickness.
  • Add default styles for u, del, ins elements.
  • Non-breaking space should not collapse.

Release - v0.21.0

5 April 2022

Hello page groups!

More power to page selectors. Have you ever wanted to address the first page of a particular structure, like chapters, sections, etc.? This can be done now with page groups.

Checkout the examples in our css documentation.

We have done our math homework and rewritten the renderer for the SVG linear gradient. This fixes issues with more complicated gradients that use custom transformations.

The default UriResolver has also been updated and refactored. Except for scheme resolvers the signature has not been altered and should not cause any trouble. It fixes issues with Windows paths.

Some viewers, looking at you Firefox :), have issues with certain tiling patterns used for background rendering. We have updated our implementation to one that seems to be accepted by Firefox, allowing SVG images as background.

Release - v0.20.3

8 March 2022

Hyphenation comes to typeset.sh!

To make it work, provide a valid language code (e.g. <html lang="de">) and set hyphens to auto p {hyphens: auto;}.

You can fine tune the hyphenation algorithm with the following CSS properties:

Release - v0.20.0

1 March 2022

We are happy to announce the release of version 0.20. We have refactored and improved major parts of the CSS layout engine. This should resolve many annoying edge cases and will allow us to move forward!

This release will also have support for page footnotes and column-span "all".

When updating, check your PDF, changes to the default.css and layout engine may have altered the looks of your PDF. No changes have been made to the main entry interfaces and classes.

  • Basic support for footnotes.
  • Support for column-span all.
  • Allow roman counters.
  • Allow symbol() counters.
  • Absolute position are now relative to page
  • Fix background gradiant issues when using background-size.
  • GIF images not supported correctly.
  • Fixing nth-child selector.
  • Flex row column-gap not working.
  • Allow percentage for vertical alignment.
  • HTML with no charset provided should be considered UTF-8 by default.
  • Page name selector in combination with :first did not work.
  • Update default.css for ul and ol padding.
  • CSS counters did not work in some cases.
  • Display html/body background like other tools.
  • ...

Big thank you again to everyone supporting this project!

Release - v0.19.0

15 January 2022

The original plan was to release our new layout engine with version 0.19 and properly start supporting PHP 8.1. Unfortunately we did not manage to finish the new layout engine on time, so we decided to postpone it to version 0.20 and publish v0.19 without it.

Starting with typeset.sh v0.19, PHP 7.4 is the new minimum requirement.

This version fixes any deprecate warnings for PHP8.1 and introduce some syntax sugar that comes with PHP 7.4.

Past minor release (v0.18.7 - v0.18.18)

14 January 2022

Quick update regarding the minor releases over the past three month.

  • Fix UTF-8 issues in document title, description, author and bookmarks.
  • Improved CMYK colour conversion when saving for print ready PDF-X4.
  • Fix CFF font sub-setting issue that occurred for some fonts.
  • Fix fallback font issues for unicode characters 0x3378-0x33AF
  • Fix offsetGet() and offsetUnset() return type warnings.
  • Allow manipulation of CURL options when using URIResolver.
  • Add support for standard PDF encryption and read-only mode.
  • Typeset.sh crashed when directory was used as image src.
  • Typeset.sh crashed on empty image src.
  • Table percentage column width caused an exception.
  • Fix performance for nested gird layouts.
  • Recover from incorrect UTF-8 encoding.
  • Add color "overprint" support (cmyk(0%, 0%, 0%, 100%, overprint)).

Minor release - v0.18.6

28 September 2021

  • Allow exporting as PDF/X-4.
  • Transparency group created RGB space in CMYK context.
  • Allow page size height to be auto as well as max/min-height properties.

Minor release - v0.18.4

20 September 2021

  • Attribute selector inside @media fails.
  • Div by zero error if data:// image is not loaded correctly.
  • CSS - Support ex units.
  • Snft font - Error while loading empty string from name table.
  • CSS - !important flag should overwrite inline styles.
  • Flex - Negative margin on flex-item not computed considered.
  • CSS - Hide hidden input fields by default.
  • CSS - Allow auto for page size height.

Release - v0.18.0

1 September 2021

We have update the layout system so each layout (flow, grid, flex, etc) is not dependent directly on other layouts. This should however not affect your application unless you have done any deep customization.

Typeset.sh now supports PDF object streams and will save PDFs as version 1.6 by default. Object streams allow to further compress the PDF. This is quite useful as we started supporting tagged PDFs since version 1.6 and those objects may increase the filesize a bit. Placing those object in one bucket and compressing them will decrease the file further.

Minor release - v0.17.6

27 August 2021

  • QR Code - Allow custom encoding.

PHP 7.2

24 August 2021

All things must come to an end. The official PHP7.2 support ended December 2020. We have continued supporting PHP 7.2 as it was not a big issue for us, but the release of PHP8.1 is coming soon.

Since we heavily rely on PHPUnit which does not support PHP 7.2 anymore so we decided that version 0.18.0 will be the last release officially supporting PHP 7.2. Future releases will most likely still work with it, however we will drop it from our CI pipeline and composer json and therefore will not run any automated tests anymore.

Having said that, we will of cause continue supporting PHP 7.3 till the end of its life (Dec 2021) while we will also get ready for PHP 8.1.

Minor release - v0.17.5

21 August 2021

  • Japanese KATAKANA script not rendered correctly.

Minor release - v0.17.4

28 July 2021

  • CSS - Nested @import resolved using wrong base url.
  • Flex layout - improve performance by caching measured sizes.
  • Don't crash on empty font src uri.
  • SVG - Polygon path fails when path is not trimmed

Minor release - v0.17.3

21 July 2021

  • URLResolver now logs all exceptions and appends them to the final issue list.
  • Table modulation of incorrect tables is moved from the layout to a separate pre-layout process.
  • Minimum width computed falsely for nested intrinsic blocks.
  • Table layout - Allow column width as percentage.

Minor release - v0.17.2

4 June 2021

  • Add support for the hr-element
  • A forced named page break, should continue with the named page after a nested page-break.

Minor release - v0.17.1

3 May 2021

  • Allow absolute position inside grid layouts.
  • Decode URLs first for data:base64 encoded urls.

Version 0.17.0 - Inline SVG

24 April 2021

Version 0.17 is out. Now supporting inline SVG graphics. More...

Blog: Create a Swiss QR-Bill

3 May 2021

We have created a simple QR-Bill template you can use for free.

QR-Bill

Version 0.17.0 - Inline SVG

24 April 2021

Version 0.17 is out. Now supporting inline SVG graphics. More...

Render QR codes

7 April 2021

Version 0.16.8 is out. Together with the qr-code-element extension you can now easily create QR-codes on the fly. Try it out.

Version 0.16.3 is out

21 February 2021

Minor release fixing some issues and missing table row background. More...

Version 0.16.0, first release of 2021 is out

10 February 2021

This release will support PDF tags which is an requirement for producing for PDF/A1-A and PDF/UA standards.

Please Note; PDF/UA is not something that can be done automatically, it involves the author of a document to provide well structured documents (well placed h1, tables and scope definitions, alt tags, etc). We will provide a guid with more information soon. To get started best practice is to follow the guidelines for any html website and use tools like as Adobe Acrobat or PDF Accessibility Checker to verify your PDFs. More...

Version 0.15.0 is out

21 December 2020

Our last planned release for this year. Supporting box-shadows and currentColor keyword. More...

Version 0.14.3 is out

17 November 2020

Better SVG image support, plus you can now include other PDFs as image. More...

Version 0.14.0 is out

9 November 2020

We are continuously improving our codebase. This release addresses minor issues and adds better support for PDF/A-1b. You can also now sign PDfs (adbe.pkcs7.detached) More...

Version 0.13.0 is out

21 October 2020

Another release focusing on code quality. We have introduced psalm to our pipeline. With the upcoming release of PhpStorm 2020.3, we want to start supporting the new doc-comment syntax. More...

leader() support with v0.12.1

7 October 2020

Now supporting content: leader(...) which is quite a nice feature for generating table of contents (TOC) pages. See our demo.

Version 0.12.0 is out

2 October 2020

A new release is out. It fixes many issues and a lot of refactoring of the code has been done, so while there aren’t many new features, it works better than ever. More...

Grid layout with version 0.11.0

9 September 2020

We have been quiet last month, but we have been working hard and are happy to release the first version that supports grid layouts.

This version also comes with basic support for @media rules. More...

Released version 0.10.0

24 July 2020

This release fixes a few layout and performance issues and also adds support for some basic form fields. More...

typeset.sh is ready for laravel 7

20 July 2020

Looking for an easy way to produce PDFs in your Laravel application? We have the solution you need. We have just released a simple Laravel7 typeset.sh wrapper. More here.

<?php Route::get('/invoice/print', function () { $invoice = new stdClass(); return typesetsh\pdf('invoice', ['invoice' => $invoice]); }); See more on github

Released version 0.9.0

19 July 2020

This release fixes minor issues, but there is one change that could potential break any implementation that uses the typesetsh\Pdf\Renderer class.

With this release, it’s now easier to parse many documents at once and render them all to one pdf.

Ready for PHP8

16 July 2020

We added PHP8 to our build pipeline and are happy to say that all tests ran without a single failure.
The only minor issue we had was that PHP7 did not have a stable sort. Which caused some tests to fail at first.

Generating PDFs with HTML and CSS

7 July 2020

Here is a quick introduction for web developers on using HTML and CSS to generate PDFs.
It touches upon a few issues specific to print media and how CSS can solve them. Read...

Released version 0.8.1

7 July 2020

A minor release fixing some simple issues that should not cause any breakages. More...

Released version 0.8

1 July 2020

We are happy to announce that version 0.8. typeset.sh now supports (repeating-)?(linear|radial)-gradient() image functions as wall as orphans and widows CSS properties.

Released version 0.7

17 June 2020

Version 0.7 is out. Adds nth-of-type CSS selector. More...

Released version 0.6

11 May 2020

Just released v0.6. No new features, but fixes a bunch of text layout issues. Hope you still enjoy it. More...

Released version 0.5

17 April 2020

Version 0.5 now supports the CSS flex layout model! More...

Released version 0.1.0

17 October 2019

Our first public stable release.

First commit - 26d63d54

16 July 2016

This project seems quite new, but the first code commit was actually done in the summer of 2016. A lot has happened since then!