You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Knockout data for devices. PdfGraphicsState.TextKnockout carries the ExtGState /TK flag (default true; saved and restored with q/Q). IPdfDevice.FillStrokePath (a default interface method, also virtual on PdfDevice) receives B, B*, b and b* as one call; its default calls FillPath then StrokePath, so existing devices behave as before. PdfDisplayList records it as one item and replays it as FillStrokePath. The display-list text format is version 5 (fillstroke record, tk=0 in gs).
Writing. PdfOpenOptions.AllowEditing opens a document for changing; PdfDictionary.SetEntry/RemoveEntry, PdfArray.Append/Insert/SetItem/RemoveAt/Clear, PdfStream.SetData/SetStoredBytes, PdfDocument.AddObject/SetObject/RemoveObject/CreateStream/SetInfo/SetXmp, and public constructors for the simple COS types. See docs/writing.md.
PdfDocument.Save writes a complete new file (classic table, or cross-reference and object streams; optional Flate for unfiltered streams; unreachable objects dropped, numbers compact) and can keep, remove or set encryption (AES-128 revision 4, AES-256 revision 6). PdfDocument.SaveIncremental appends an update that leaves the original bytes untouched. Options are in PdfSaveOptions and PdfEncryptionOptions.
A save fuzz target (open, change, save, reopen).
Fixed
PdfImage encoded data of an encrypted document (GetEncodedData) was the ciphertext; it is now the stored bytes with the encryption removed.
A startxref that pointed exactly at a cross-reference section was passed over for a reading that landed on white space in front of another object, in files with junk before the header; an exact hit now wins.
Composite glyphs of MingLiU, PMingLiU and DFKai-SB fonts (and subsets of them) were drawn with displaced or missing strokes, because their component placement is done by the font's own instructions. For fonts recognised from their names or program-table checksums, the glyph instructions now run (at one pixel per font unit, without grid fitting), in a budgeted interpreter; a failing program falls back to the plain outline with a diagnostic. All other fonts are unchanged and never execute font code. See docs/pdf-fonts.md.