Conversation
Member
bsweeney
commented
Jul 6, 2024
- Continue rendering when stylesheet parsing fails
- Modify internal Stylesheet handling of data URIs
- Improve semi-colon detection during property parsing
When parsing a stylesheet containing a large string the regex utilized by Dompdf can fail. Depending on the location of the problematic string, the regex failure can prevent parsing a style property, a style declaration, or an entire stylesheet. This change is intended to resolve the most likely cause of this type of failure, which is the presence of data URIs in the stylesheet. To work around the regex parsing issues Dompdf replaces data URIs with blob-like URIs. The blob URI shortens the string to a regex-parsable length. When the CSS property value is retrieved the blob URI is rewritten to it's original form. fixes #3482
Regular expressions are problematic for parsing certain string combinations that can be found in CSS property values. In order to improve the accuracy of parsing we will walk the declaration string, splitting on the semi-colon as before, except where the semi-colon falls within defined delimeters. This change also unescapes semi-colon's where escaped in the resulting property. fixes #3482
1ba1afb to
126042c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.