Follow us on Twitter for updates. Our blog highlights the best new features and changes.

Newest Release

5.1.0 - 11 Nov 2020

See the announcement post.

PSPDFKit now requires and is built with Xcode 12.2.

  • API

    Renames PSPDFDocumentCheckpointSavedNotificationSucessKey to PSPDFDocumentCheckpointSavedNotificationSuccessKey. (#26649)

  • API

    The PSPDFIdentifiable protocol was unused and has been removed. (#25685)

  • Removed

    Deprecates the subFilter property of PDFSigner. Use the signatureType property instead. (#25051)

  • Removed

    Deprecates DrawingPoint.isValid/PSPDFDrawingPointIsValid in favor of DrawingPoint.isFinite/PSPDFDrawingPointIsFinite. (#25078)

  • Added

    Adds a new reload(documentProviders:dataProviderOverride:) method to Document to reload a single document provider with optionally replacing the data provider as well. This is useful for a fine-grained document updating when compound documents are used. (#26350)

  • Added

    Adds new invalidation methods in PDFCache to invalidate multiple pages at once. The API has been renamed to reflect this and the old version has been deprecated. (#26350)

  • Added

    Adds support for finding the correct form field type in non-conforming PDF files. (#26459)

  • Added

    Adds new annotationChangePublisher to capture added, removed and changed annotation events. (#26105)

  • Added

    Adds a new .signatureOnly signature appearance setting to create a digital signature with a custom appearance. (#25143)

  • Added

    Adds support for PEM format PKCS#1 private keys for use with digital signatures. (#24919)

  • Added

    Adds the option to prepare a PAdES signature container with the “ETSI.CAdES.detached” signature sub-filter type. Signature must be created externally. (#24887)

  • Changed

    Improves documentation for TextFormField.isComb. (#26598)

  • Changed

    Improves performance with path drawing by removing unnecessary path operations. (#25922)

  • Changed

    Improves rendering performance of documents with lots of image patterns. (#26186)

  • Changed

    Improves performance for form elements with an extremely high number of associated annotations. (#26443)

  • Changed

    Improves the documentation for AnnotationManager.ChangeBehaviorKey.suppressNotifications. (#26431)

  • Changed

    Improves the Processor behavior when license doesn’t include the forms component. (#24604)

  • Changed

    Improves OfficeConversionOperation API to wait for connectivity before trying to connect to the PSPDFKit Server for the file conversion operation. The converted file downloading task from the server times out after 120 seconds. (#25639)

  • Changed

    Improves font rendering in forms with Chinese, Japanese, Korean and Thai characters. (#24337)

  • Changed

    Improves outline parsing performance by lazy loading outline element actions on demand. (#20924)

  • Changed

    Improves performance loading some documents with broken internal links (named destinations). (#24398, #26099)

  • Changed

    Improves the documentation for Processor.Configuration.merge(item:onPage:). (#26199)

  • Changed

    Improves documentation of PDFLibrary notifications. (#26040)

  • Changed

    Document now offers a savePublisher Combine publisher for save events. (#25963)

  • Changed

    Replaces all instances of PSPDFValueTransformerName with the better suited NSValueTransformerName. (#26124)

  • Changed

    Document now conforms to the ObservableObject protocol. (#26105)

  • Changed

    OutlineElement and Annotation classes now conform to the Identifiable protocol. (#26109)

  • Changed

    The byteRange property of the PDFSignatureInfo class has been refined for Swift. (#25143)

  • Changed

    Updates HarfBuzz to version 2.7.2. (#25717)

  • Fixed

    Fixes a problem where the signature reason, name or location may not appear correctly if they contain non-ASCII characters. (#26671)

  • Fixed

    Fixes an issue where partially redacted curved path objects may be misdrawn. (#26698)

  • Fixed

    Fixes annotation points and bounding boxes loading as zero when using the external file annotation save mode and calling setRotationOffset(_:forPageAt:) before annotations were loaded. Note that this API is intended for temporary rotations. We recommend using the Document Editor for persistent rotations. (#26639)

  • Fixed

    Fixes duplication of newly created pages in the Document Editor. (#26074)

  • Fixed

    Fixes a problem where signing a document again after filling a form field may invalidate existing digital signatures. (#25637)

  • Fixed

    Fixes an assert that was triggered by malformed documents that contained fonts that were not indirect objects. (#26450)

  • Fixed

    Fixes an issue in the Document Editor when adding an item to a imported page. (#25837)

  • Fixed

    Fixes an issue where form calculation was triggered when setting an empty string on a form field that didn’t have a value. (#26345)

  • Fixed

    Fixes an issue where the note icon for markup annotations sometimes render farther than the marked up text. (#25740)

  • Fixed

    Fixes an issue where using additional filters for rendering the PDF pages could crash the app. (#25957)

  • Fixed

    Fixes rendering a wrong color if the color was using a ICC color profile and the color was out of bounds. (#26535)

  • Fixed

    Fixes setting the TextFormField properties isMultiLine, isPassword, isComb, doNotScroll, isRichText, doNotSpellCheck, and fileSelect and the ChoiceFormField properties isEdit, isMultiSelect, commitOnSelChange, and doNotSpellCheck to false not behaving as expected. (#25498)

  • Fixed

    Fixes text clipping for form fields exceeding their maxLen due to programatic changes. (#26340)

  • Fixed

    Fixes CVE-2020-15999 in upstream dependency FreeType. (#26610)

  • Fixed

    Fixes a crash on preparing a form element for signing that has just been added to the document. (#25739)

  • Fixed

    Fixes an issue where an app would crash on trying to load an embedded file in a PDF document created using multiple data providers. (#26023)

  • Fixed

    Fixes an issue where appearance streams weren’t re-generated when using the processor even though ‘NeedAppearances’ was set in the PDF. (#26123)

  • Fixed

    Fixes an issue where documents with high object numbers were identified as corrupt. (#26062)

  • Fixed

    Fixes an issue where trying to convert Annotation.Kind to a String led to an infinite loop. (#25949)

  • Fixed

    Fixes an issue where warning messages were displayed in other readers when flattening a signature form field. (#25923)

  • Fixed

    Fixes form field JavaScript actions in the generated documents when merging two or more documents together. (#25603)

  • Fixed

    Fixes the PDF JavaScript function getNthFieldName to return the FQN of the form field. (#26144)

  • Fixed

    Fixes a crash that could happen when creating form fields. (#25806)

  • Fixed

    Fixes an issue where appearance streams of form field widgets weren’t preserved correctly. (#25550)

  • Fixed

    Fixes an issue where bezier paths were drawn incorrectly when a miter limit was set. (#25758)

  • Fixed

    Fixes an issue where form elements were included in the page rendering which shouldn’t have been. (#25799)

  • Fixed

    Fixes an issue where the digital signature advanced properties contained the signature creator twice. (#25611)

  • Fixed

    Fixes FTS queries with 3 or more words when searching for an exact match when using the unicode tokenizer. (#25068)

  • Fixed

    Fixes a crash that could happen as a result of a race condition when form fields were repaired and the page was rendered at the same time. (#24885)

  • Fixed

    Fixes an issue where a thin white bar could be visible along the right edge of a document page in inverted rendering mode. (#21334, #24830)

  • Fixed

    Fixes an issue where a form field value was lost when using external annotation saving. (#24740)

  • Fixed

    Fixes an issue where text form fields weren’t displayed correctly after flattening due to their appearance stream being wrong in the original document. (#24918)

  • Fixed

    Fixes duplicate string occurrences when copy and pasting from documents with duplicate content. (#25108)

  • Fixed

    Fixes setting the PDFFormField properties isReadOnly, isRequired and isNoExport to false not behaving as expected. (#25498)

  • Fixed

    Fixes the placement of the popup annotation linked to a note annotation. When a note annotation is moved, the popup annotation will now follow the location and is always placed within the bounds of the page. (#24468)

  • Fixed

    Fixes the saving of small shapes with large line widths. Shapes with these characteristics in documents saved by PSPDFKit will now be visible on any reader. (#25531)

  • Fixed

    Fixes a problem where signing a document with existing digital signatures may invalidate them. (#24780)

  • Fixed

    Fixes an issue where objects rendered with the Overlay blend mode didn’t always render correctly. (#24298)

  • Fixed

    Fixes an issue where our text parser returned descending characters from the line above the intended search area. (#24709)

  • Fixed

    Fixes an issue where text form fields would be rendered with a black fill color for certain documents after saving the annotations in an external file. (#24739)

  • Fixed

    Fixes an issue where text with word or character spacing is shifted after redaction has been applied. (#24476)

  • Fixed

    Fixes an issue where umlauts were displayed wrong in certain documents because the wrong encoding was used when shaping the text. (#24465)

  • Fixed

    Fixes partial annotation parsing for sound and link annotations when external annotation storage is used. (#24813)

Previous Releases

4.5.0 - 13 Jul 2020

See the announcement post.

  • Removed

    Deprecates the Processor class method cancellAllConversionOperations in favor of the rename, cancelAllConversionOperations. (#24630)

  • Changed

    Improves memory handling for Office file conversion operation. (#24485)

  • Changed

    Improves performance when removing a unloaded document from cache. (#24669)

  • Changed

    Improves handling of memory warning notifications for documents with unsaved changes. (#24654)

  • Changed

    Separates ConversionOperation subclasses into their own header and implementation files. (#24562)

  • Changed

    Updates GSL to version 3.1.0. (#24480)

  • Changed

    Updates HarfBuzz to version 2.6.7. (#24477)

  • Fixed

    Fixes a problem where some certificates with CRL distribution point extensions may not be validated correctly. (#24660)

  • Fixed

    Fixes a crash when parsing certain rare documents. (#24599)

  • Fixed

    Fixes a very rare crash on certain documents when multiple pages were rendered at the same time. (#24598, #24626)

  • Fixed

    Fixes a possible endless loop while trying to repair form fields in certain documents. (#23901, #24597)

  • Fixed

    Fixes an issue where form fields may not be editable in some cases. (#23123)

4.4.0 - 16 Jun 2020

See the announcement post.

In preparation for macOS 10.16, this version of PSPDFKit now drops support for macOS 10.13. It also requires and is built with Xcode 11.5 (11E608c).

This release has some smaller breaking API changes. Please see our migration guide for details.

  • API

    Changes the PSPDFObject string constants to an extensible enum PSPDFObjectFinderOption. Also introduces a new extensible enum PSPDFObjectFinderType to separate the output types from the options. (#24343)

  • API

    Changes the type of the options dictionary keys on the URLAction initialiser from String to Action.Option. (Only affects Swift). (#23831)

  • API

    Changes the type of the options parameter of annotationsByDetectingLinkTypes:forPagesAtIndexes:options:progress:error: from NSDictionary<NSString *, NSDictionary<NSNumber *, NSArray<PSPDFAnnotation *> *> *> * to NSDictionary<PSPDFObjectFinderType, NSDictionary<NSNumber *, NSArray<PSPDFAnnotation *> *> *> *. (#24343)

  • API

    Changes the type of the options parameter of objectsAtPDFPoint:pageIndex:options: and objectsAtPDFRect:pageIndex:options: from NSDictionary<NSString *, NSNumber *> * to NSDictionary<PSPDFObjectFinderOption, NSValue *> *. (#24343)

  • API

    Deprecates the constants used for searching text using PDFLibrary API in favor of new constants of type PDFLibrary.Option. (#24215)

  • API

    In the PSPDFPageView class, changes the type of the options param in objectsAtPoint:options: and objectsAtRect:options: from NSDictionary<NSString *, NSNumber *> * to NSDictionary<PSPDFObjectFinderOption, NSValue *> * and return type from NSDictionary<NSString *, id> * to NSDictionary<PSPDFObjectFinderType, id> *. (#24343)

  • API

    Removes the Swift free function BoundingBoxFromLines. (#24435)

  • API

    Removes the PDFPage class, as it was not possible to create or obtain PDFPage objects via public API. (#24413)

  • API

    Renames PDFFileAnnotationPovider to PDFFileAnnotationProvider (only affects Swift). (#24072)

  • API

    Renames PDFSigner.Error to PDFSignerError in Swift. This is a breaking change with no deprecation in order to avoid ambiguity with the Swift.Error type. (#23912)

  • API

    The Processor class methods generatePDF(from ...) now have a non-optional return type and call their completion handler with an error if the required feature is missing in the license. (#24352)

  • API

    The behavior of the editable property of Annotation was changed slightly. It now also depends on the readOnly property. (#23868)

  • API

    The document must now have a file annotation provider when calling the PDFDocumentProvider method setRotationOffset(_:forPageAt:). Calling this method when there is no file annotation provider will have no effect. (#23686)

  • Removed

    Deprecates the BackForwardActionListDelegate methods backForwardList(_:requestedBackActionExecution:) and backForwardList(_:requestedForwardActionExecution:), and the BackForwardActionList methods requestBack, requestBack(to:), requestForward , and requestForward(to:) in favor of variants with an animated parameter. (#23791)

  • Removed

    Deprecates the type aliases PDFLine and ViewLine because their names were inaccurate. (#24433)

  • Removed

    Deprecates AESCryptoInputStreamErrorCode renaming it to AESCryptoInputStreamError in Swift. Xcode will provide an automatic fix. (#23912)

  • Removed

    Deprecates AESCryptoOutputStreamErrorCode renaming it to AESCryptoOutputStreamError in Swift. Xcode will provide an automatic fix. (#23912)

  • Removed

    Deprecates Cryptor.ErrorCode renaming it to CryptorError in Swift. (#23912)

  • Removed

    Deprecates PSPDFError renaming it to PSPDFKitError in Swift. Xcode will provide an automatic fix. (#23912)

  • Removed

    Deprecates PSPDFSignerError renaming it to PSPDFSignerErrorCode in Objective-C. (#23912)

  • Removed

    Deprecates all cases of AESCryptoInputStreamError, replacing them with more consistent names. (#23912)

  • Removed

    Deprecates all cases of AESCryptoOutputStreamError replacing them with more consistent names. (#23912)

  • Removed

    Deprecates the mergePage(from:password:sourcePageIndex:destinationPageIndex:transform:blendMode:) method of Processor.Configuration and replaces it with mergeAutoRotatedPage(from:password:sourcePageIndex:destinationPageIndex:transform:blendMode:) which auto-rotates the page to match the rotation of the destination page. (#23858)

  • Added

    Adds a new API for PSPDFKit Server powered Office document conversion to PDF files. (#24304)

  • Added

    Adds removeSignature() to SignatureFormElement to allow removing digital signatures programmatically. (#24094)

  • Added

    Adds new Annotation.clearAppearanceStream() helper. (#24114)

  • Added

    Adds support for executing GoBack and GoForward named actions. (#23791)

  • Added

    Adds support for saving into any data provider with a data sink in the document editor. (#24103)

  • Changed

    Improves error reporting when calling write(toFileURL:) on Processor with a URL where a file already exists. (#24092)

  • Changed

    Improves quality of fallback font rendering. (#24136)

  • Changed

    Ensures that note annotations with an unknown icon always use a fallback image. (#23977)

  • Changed

    Improve style sheet parsing to recognize font names better. (#23968)

  • Fixed

    Fixes a dangling pointer upon destruction of PSPDFKit. (#24387)

  • Fixed

    Fixes a problem where the asset name of a screen annotation may not be decoded correctly in some cases. (#24269)

  • Fixed

    Fixes a problem where the font name of a free text annotation may not be decoded correctly in some cases. (#24269)

  • Fixed

    Fixes an issue flattening form fields correctly when the artbox of the page contains an offset. (#23385)

  • Fixed

    Fixes an issue where attempting to access link annotations that reference remote destinations containing certain characters could lead to a failed assertion. (#24212)

  • Fixed

    Fixes an issue where combo boxes with attached JavaScript actions would fail to execute the attached actions when changing their value. (#23120)

  • Fixed

    Fixes an issue where text was rendered incorrectly when the ‘comb’ option was used. (#24395)

  • Fixed

    Fixes an issue where the read-only property of an annotation would get ignored if the annotation had a user, allowing it to be erasable. (#23868)

  • Fixed

    Fixes an issue where using a custom background color filled the rendered image beyond the page bounds. (#22590)

  • Fixed

    Fixes an issue in strip-framework.sh which would occur where running the app for a second time when the dSYMs were added to the Run Script Phase. (#24172)

  • Fixed

    Fixes a crash that could occur when flattening certain note annotations, created by or edited on other PDF editors. (#24146)

  • Fixed

    Fixes an assertion failure “Should not be creating new annotations when applying rotation” when calling setRotationOffset(_:forPageAt:) to apply temporary before the document has loaded annotations when using a custom annotation provider. We recommend using the Document Editor for persistent rotations. (#23686)

  • Fixed

    Fixes edits to the page binding not being saved in certain documents. (#24115)

  • Fixed

    Fixes an issue where non-Latin text may not render correctly. (#23287)

  • Fixed

    Fixes an issue where wrong characters were displayed in multi-line form fields. (#23317)

  • Fixed

    Fixes an issue where accessing SDK.Setting.additionalFontDirectories in Swift would cause an ambiguous use error. (#23774)

  • Fixed

    Fixes potential document corruption when incremental saving encrypted documents. (#23689)

4.3.0 - 27 Mar 2020

See the announcement post.

PSPDFKit now requires and is built with Xcode 11.4 (11E146).

This release has breaking API changes, especially in Swift. Please see more details in our migration guide..

  • API

    Changes all types to use Swift-friendly names in Swift, removing the PSPDF prefix. Modules supply an implicit namespace. Please refer the migration guide for details. (#23139)

  • API

    Further refines various API in Swift. See the migration guide for details.

  • API

    In Objective-C, the fields property of PSPDFAbstractFormAnnotation is now typed NSArray<id<PSPDFFormFieldIdentifier>> * to more clearly document what this property contains. In Swift, this property has been refined as var fieldIdentifiers: [FormFieldIdentifier]?. (#23596)

  • API

    Renames the PSPDFReachability enum to PSPDFReachabilityStatus. (#23636)

  • API

    Updates the update block in -[PSPDFAnnotationManager updateAnnotationsOnPageAtIndex:error:withUpdateBlock:] to allow reporting errors occurred in the block. (#23517)

  • API

    PSPDFAnnotationWriteOptions type has been renamed to PSPDFAnnotationWriteOption. Along with it, its constant PSPDFAnnotationWriteOptionsGenerateAppearanceStreamForTypeKey has been renamed to PSPDFAnnotationWriteOptionGenerateAppearanceStreamForType. (#23539)

  • Removed

    Removes entries for the localized string key "Could not retrieve the signature contents". Use "Could not retrieve the signature contents." (with period at end) instead. (#23037)

  • Removed

    Removes entries for the localized string key "Saved Annotations". Use "SavedAnnotations" (no space) instead. (#23037)

  • Removed

    Removes entries for the localized string key "The certificate has expired". Use "The certificate has expired." (with period at end) instead. (#23037)

  • Removed

    Removes the localized strings entry with the key "Polyline" in favor of "PolyLine" (with capital L), which can be accessed through the PSPDFAnnotationStringPolyLine constant. The user-facing text is still Polyline. (#23233)

  • Removed

    Removes the localized strings with keys beginning with PSPDFPolicyEvent, which were not used by PSPDFKit. (#23493)

  • Removed

    Removes the localized strings with the key "Page". PSPDFKit now uses "Page %@" instead. (#23493)

  • Removed

    Removes the unused PSPDFSettings protocol. (#23226)

  • Removed

    Removes support for very large images in the embedded gallery. Please resize images to a suitable size on a server before loading them on a device. (#23082)

  • Removed

    Deprecates -[<PSPDFDataProviding> replaceWithDataSink:error:] in favor of -replaceContentsWithDataSink:error:. (#23703)

  • Removed

    Deprecates PSPDFAnnotationRegisterOverrideClasses. This functionality should not be needed and will be removed in a future update. PSPDFFileAnnotationProvider already takes care of registering the appropriate overrides when reading an external annotation file. (#23701)

  • Added

    Adds British English localization. (#23186)

  • Added

    Adds PSPDFError.dataProviderIsInFlight, which is reported when an operation on DataContainerProvider, FileDataProvider, or CoordinatedFileDataProvider fails because the receiver is not yet ready for use. (#23612)

  • Added

    Adds a global override to disable PSPDFDocument permissions in the PSPDFKit UI. Configurable via the PSPDFHonorDocumentPermissionsKey option on PSPDFKitGlobal. (#1022)

  • Added

    Adds stricter validation to digital signature containers created externally. (#23011)

  • Added

    Adds support for validating digital signatures created by DocuSign. (#22191)

  • Added

    Adds documentation for the optional DataProviding methods implemented by DataContainerProvider, FileDataProvider, and AESCryptoDataProvider. (#23612)

  • Changed

    Improves the class overriding mechanism and adds PSPDFOverridable conformance to all participating classes. (#18178)

  • Changed

    Changes the default value of enableHorizontalResizing from PSPDFFreeTextAnnotation to be enabled. (#22961)

  • Fixed

    Fixes PDF JavaScript when scripts are encoded in UTF-16. (#23044)

  • Fixed

    Fixes a potential issue resulting in data loss after saving. (#23474, #23485)

  • Fixed

    Fixes a rare issue where document checkpointing could assert as a race condition when cleaning up files. (#23699)

  • Fixed

    Fixes a rare problem where the application may terminate unexpectedly after loading a document or setting a form field value. (#22924)

  • Fixed

    Fixes a regression where the rotation knobs were incorrectly hidden on selecting a free text annotation. (#23607)

  • Fixed

    Fixes an issue with flattening form fields when the ArtBox of the page contains an offset. (#23385)

  • Fixed

    Fixes a crash when rendering certain pages from multiple threads. (#23209, #23339)

  • Fixed

    Fixes an issue where clearing the cache could sometimes lead to a deadlock. (#23651, Z#18024)

  • Fixed

    Fixes an issue where document features could remain stale when the document progress functionality was used (e.g. Instant downloads). (#23330)

  • Fixed

    Fixes an issue where error information was not propagated properly in -[PSPDFAnnotationUpdater moveAnnotationAtZIndex:toZIndex:error:]. (#23517)

  • Fixed

    Fixes an issue where free text annotation could be rotated after resizing with annotation rotation disabled. (#23438)

  • Fixed

    Fixes an issue where freshly recorded and deleted sound annotations would loose audio after the deletion is undone. (#23389)

  • Fixed

    Fixes an issue where opening a certain document with form fields caused a crash. (#23001)

  • Fixed

    Fixes an issue where spacing between words was far too large. (#23439)

  • Fixed

    Fixes an issue where text on form fields is occasionally rendered with incorrect rotation on rotated pages. (#22854)

  • Fixed

    Fixes an issue where values of text form fields are only visible when selected. (#23652)

  • Fixed

    Fixes localized text in some places. (#23493)

  • Fixed

    Fixes some rare stability issues when filling a form document with JavaScript scripts. (#23443)

  • Fixed

    Fixes an issue where Helvetica-Bold wasn’t displayed correctly. (#22664)

  • Fixed

    Fixes an issue where form field elements would not be fillable even if their backing form field was not readonly. (#21061)

  • Fixed

    Fixes an issue where some PDF JavaScript calculations may not work correctly. (#23043)

  • Fixed

    Fixes an issue where the mailDoc and similar JavaScript functions may not parse their arguments correctly. (#23257)

  • Fixed

    Fixes empty text form fields not rendering their background color. (#23263)

  • Fixed

    Fixes -[PSPDFAnnotationSet initWithAnnotations:copyAnnotations:] not normalizing bounding boxes like its deprecated variant did. (#23061)

4.2.0 - 21 Jan 2020

PSPDFKit now requires and is built with Xcode 11.3 (11C29).

See the announcement post and migration guide for this release.

  • API

    Changes the localized string key Redact to be for the redaction annotation type instead of the word “Redact”, which is no longer translated by PSPDFKit. In other words, the key Redact was removed and then the key Redaction was changed to Redact to match the PDF specification. The best way to get this localized string key is to use the constant PSPDFAnnotationStringRedaction. (#21243)

  • API

    Changes the localized string key for the file annotation type from File to FileAttachment to match the PDF specification. The best way to get this localized string key is to use the constant PSPDFAnnotationStringFile. (#21243)

  • API

    Changes the localized string key for the free text annotation type to only FreeText. The duplicate entry with the key Text is now used for note annotations to match the PDF specification. The best way to get this localized string key is to use the constant PSPDFAnnotationStringFreeText. (#21243)

  • API

    Changes the localized string key for the note annotation type from Note to Text to match the PDF specification. The best way to get this localized string key is to use the constant PSPDFAnnotationStringNote. (#21243)

  • API

    Changes the parameter type of the PSPDFDefaultAnnotationStyleManager methods defaultColorPresetsForKey: and defaultBorderPresetsForKey: from String/NSString to AnnotationStateVariantID/PSPDFAnnotationStateVariantID. (#22769)

  • Added

    Adds support for incrementally saving encrypted documents. (#22722)

  • Added

    Adds support for the JavaScript function ‘doc.gotoNamedDest’. (#18957)

  • Changed

    Improves complex script text rendering. (#22573)

  • Changed

    Improves error handling for -[PSPDFFileAnnotationProvider saveAnnotationsWithOptions:error:]. (#14335)

  • Changed

    Improves image stamp quality and reduces PDF size growth by avoiding unnecessary image re-encoding. (#22828, #20325)

  • Changed

    Improves license check error message to be more user friendly. (#12904)

  • Changed

    Improves user-facing descriptions of the types of annotations by considering variants. (#21243)

  • Changed

    Improve compatibility with macOS 10.15 Preview for annotation notes in the sidebar. (#22791)

  • Changed

    Improves font selection and prefers fonts already in the document in more cases. (#22530)

  • Removed

    Removes the localized strings entry with the key Squiggle, which was not used. The localized text for the squiggly annotation type has changed to ‘Squiggle’ using the key Squiggly as before. The best way to get this localized string key is to use the constant PSPDFAnnotationStringSquiggly. (#22861)

  • Changed

    Uses modern NSFontDescriptor enums on macOS for better Swift bindings. (#22678)

  • Fixed

    Fixes a problem where encrypted documents could not be digitally signed correctly. (#22722)

  • Fixed

    Fixes a problem where some PDF pages may not be rendered correctly. (#22767)

  • Fixed

    Fixes an issue that caused a blank page after flattening annotations on a certain document. (#22279)

  • Fixed

    Fixes an issue where characters weren’t escaped correctly when exporting XFDF. (#22844)

  • Fixed

    Fixes an issue where free-text annotations were not rendered properly on selection when rendered with filter render options. (#20512)

  • Fixed

    Fixes an issue where multiple form elements that are related to the same form field could not be targeted as a group in JavaScript actions, as described by the PDF Reference. The form elements can still be addressed individually by appending .x to the (fully qualified) name of the form field, where x is the index of the form element in the annotations property of the PSPDFFormField. (#22755)

  • Fixed

    Fixes an issue where popup annotations were positioned incorrectly. (#22730)

  • Fixed

    Fixes an issue where text is not displayed in small free-text annotations. (#22514)

  • Fixed

    Fixes an issue where the file size optimization algorithm didn’t run. (#22809)

  • Fixed

    Fixes an issue where the outline was overridden if set, before property was accessed. (#22678)

  • Fixed

    Fixes an issue where toggling eraser on a page with temporary rotation rendered ink annotations in a regressed state. (#22434)

  • Fixed

    Fixes an issue which led to bookmarks not getting updated when importing InstantJSON. (#22198)

  • Fixed

    Fixes an issue with creating a Submit Form action from JSON without action flags. (#22784)

  • Fixed

    Fixes an issue with form calculations if one of the form fields contained multiple form elements. (#22675)

  • Fixed

    Fixes a race condition in PSPDFAESCryptoDataProvider that could result in app termination when Multithreaded Rendering was enabled. (#20011)

  • Fixed

    Fixes an issue where a form field element appearance stream was regenerated accidentally. (#21618)

  • Fixed

    Fixes an issue where flattened note annotations at the borders of pages would not be rendered correctly. (#22353)

  • Fixed

    Fixes an issue where symlinks where not properly resolved for the documentsDirectoryURL in -[PSPDFLibraryFileSystemDataSource -initWithLibrary:documentsDirectoryURL:documentHandler:]. (#22518)

4.1.0 - 3 Dec 2019

PSPDFKit now requires and is built with Xcode 11.2.1 (11B500).

  • API

    Deprecates -attachBinaryInstantJSONAttachmentFromDataProvider:mimeType:error: and replaces it with -attachBinaryInstantJSONAttachmentFromDataProvider:error:, omitting the mimeType. (#17813)

  • API

    -[PSPDFCache imageForRequest:imageSizeMatching:] now has an error parameter. (#21836)

  • API

    -[PSPDFCacheInfo cacheInfoForRequest:] now has an error parameter. (#21836)

  • API

    -[PSPDFRenderTask initWithRequest:] now has an error parameter. (#21836)

  • API

    Deprecates the PSPDFAnnotationProviderRefreshing protocol. PSPDFContainerAnnotationProvider now conforms to this protocol, which means that PSPDFKit handles refreshing internally. If you are implementing the refreshing protocol, please contact us to discuss your requirements. (#21885)

  • Added

    Adds support for Image Documents with transparency. (#18907)

  • Added

    Adds support for copying ink signatures to the clipboard. (#21608)

  • Added

    Adds support for input file lists (.xcfilelist) to strip-framework.sh to simplify adding the dSYMs. (#22151)

  • Added

    Adds support for redaction annotations to Instant JSON. (#21389)

  • Added

    Adds support for setting temporary rotations using setRotationOffset when using custom annotation providers that are subclasses of PSPDFContainerAnnotationProvider. (#21885)

  • Added

    Adds the ability to initialize PSPDFImageDocument with any data provider. (#21140)

  • Changed

    Improves NSSecureCoding support for various classes. (#20696)

  • Changed

    Improves handling when other apps installed on the system declare new types (UTIs) for standard filename extensions like .pdf and .jpg. (#22418)

  • Changed

    Improves memory usage while searching document with a lot of annotations. (#22367)

  • Changed

    Improves the performance of the redaction component so that big documents are redacted quicker. (#22102)

  • Changed

    Improves the rendering of annotations with dashed borders. (#10216)

  • Changed

    Rendering complex annotation appearance streams no longer blocks accessing the annotation object on a different thread. (#21836)

  • Changed

    Updates HarfBuzz to version 2.6.2. (#21686)

  • Fixed

    Fixes ISO8601 timezone support in Instant JSON. (#21148)

  • Fixed

    Fixes a crash related to multi-threading and font loading. (#22387)

  • Fixed

    Fixes a rare situation where setting form field flags may cause a deadlock. (#19942)

  • Fixed

    Fixes a regression that caused certain link annotations to not work. (#21709)

  • Fixed

    Fixes an issue where a deadlock could occur after executing a PDF action or JavaScript. (#22201)

  • Fixed

    Fixes an issue where annotation additional actions may not be deserialized correctly. (#21983)

  • Fixed

    Fixes an issue where annotations were updated too often after executing a PDF action or JavaScript. (#22201)

  • Fixed

    Fixes an issue where deleting or moving pages from a PDF did not update the outline. (#21620, #22048)

  • Fixed

    Fixes an issue where some filled form fields may not show their content correctly. (#22100)

  • Fixed

    Fixes an issue where symlinks where not properly resolved for the documentsDirectoryURL in -[PSPDFLibraryFileSystemDataSource -initWithLibrary:documentsDirectoryURL:documentHandler:]. (#22518)

  • Fixed

    Fixes an issue where text after signing had incorrect characters after looking at it in another viewer. (#20930)

  • Fixed

    Fixes an issue where text entered in certain form fields was rendered garbled. (#21700)

  • Fixed

    Fixes an issue where the redaction tool may not work correctly in some cases when selecting text. (#22486)

  • Fixed

    Fixes widget annotation rotation property persistence when coming from Instant JSON. (#21552, #21621)

  • Changed

    Increases image size limits. (#22029)

  • Fixed

    Fixes an issue if a TrueType font collection has more than 32 fonts. (#22148)

  • Fixed

    Fixes an issue where an annotation copied from another document was rendered blurry. (#20070)

  • Fixed

    Fixes an issue where certain high resolution images weren’t rendered. (#22322)

  • Fixed

    Fixes an issue where creating an annotation using +[PSPDFAnnotation annotationFromInstantJSON:documentProvider:error:] would lead to a crash if the destination document had multiple document providers. (#22207)

  • Fixed

    Fixes an issue where form repairs were done too eagerly. (#20786)

  • Fixed

    Fixes an issue where pages would be rendered with incorrect background colors when setting PSPDFRenderOptions.backgroundFill for any render type. (#21800)

  • Fixed

    Fixes an issue where selecting the Open In option when sharing pages out of a document would not work. (#22209)

  • Fixed

    Fixes an issue where temporarily rotated annotations were saved incorrectly in PSPDFAnnotationSaveModeEmbeddedWithExternalFileAsFallback mode. (#22188)

  • Fixed

    Fixes an issue where using a big size for the digital signature container may abort the digital signing process. (#22130)

  • Fixed

    Fixes a crash that would occur while rendering a thumbnail for a page which does not have a valid size. (#22365)

  • Fixed

    Fixes an issue where certificates with multi-value RDNs may not be parsed correctly. (#22221)

  • Added

    Adds support for printing array structures from JavaScript code inside a PDF. (#19063)

  • Fixed

    Fixes a rare deadlock when rendering certain documents. (#21856)

  • Fixed

    Fixes a rendering error where the font ArialMT wasn’t selected correctly. (#21744)

  • Fixed

    Fixes an issue where multiple simultaneous conflict resolution prompts could potentially trigger an internal assertion. (#21694)

  • Fixed

    Fixes an issue where some Swift API, like PSPDFKitGlobal.setLogHandler(), were not accessible when using the CocoaPods integration. (#21846)

  • Fixed

    Fixes a performance regression when rendering with an ICC based color space. (#21776)

  • Fixed

    Fixes an issue where some properties of a widget annotation were not persisted when the document was saved. (#21546)

  • Fixed

    Fixes an issue where documents using certain kind fonts (especially Chinese, Japanese, and Korean) would cause the app to crash. (#21626)

  • Fixed

    Fixes secure coding of PSPDFRenderOptions. Before all properties would be encoded as nil or zero, which could lead to rendering pages with black backgrounds. (#21708)

  • Fixed

    Fixes an issue where the z-index wasn’t preserved when flattening annotations. (#21385)

  • Fixed

    Fixes an issue where a digital signature applied to a certain kind of document may not show correctly in third party PDF readers. (#18943)

  • Fixed

    Fixes an issue when using multi-threaded rendering. (#18582)

  • Fixed

    Fixes a crash when using the processor on certain documents with very deep object hierarchies. (#21674)

4.0.0 - 19 Sep 2019

PSPDFKit now requires and is built with Xcode 11.0.

The accompanying release of PSPDFKit for iOS brings our UI to the Mac. Check out our Introducing PSPDFKit for Mac Catalyst blog post for more information.

Below is a summary of the API changes in this release. For a full list, with our suggested migration strategy for each API that has been changed or removed, please see the migration guide for PSPDFKit 9 for iOS. The guide also provides migration steps for xcframework integration and the removal of PSPDFKitSwift.

  • Removed

    Removes all previously deprecated API. Please see our PSPDFKit 9 for iOS migration guide to learn about the appropriate migration strategy. (#20904)

  • API

    -[PSPDFDataProviding replaceWithDataSink:] has been extended to include an error parameter -[PSPDFDataProviding replaceWithDataSink:error:]. (#14338)

  • API

    Renames the PSPDFKit global singleton to PSPDFKitGlobal to avoid conflicts with the PSPDFKit module name in Swift. (#21292)

  • API

    Swift-incompatible methods on PSPDFProcessor and delegate-based error and completion handling on PSPDFProcessorDelegate have been removed. (#21233, Z#15373)

  • API

    The PSPDFProcessor PDF generation API has been converted to class methods to better isolate it from the PDF processing operations. (#21000)

  • API

    The PSPDFRenderOption enumeration has been replaced with the PSPDFRenderOptions class that now properly supports NSSecureCoding. (#17342)

  • API

    The shouldDeleteAnnotation property on PSPDFAnnotation has been replaced with isDeletable. (#21293)

  • API

    PSPDFAnnotationStyleManager now uses PSPDFStylePreset, a new protocol, rather than __kindof PSPDFModel* to expose preset instances. (#21362)

  • API

    PSPDFLineAnnotation.init(point1:point2:) is no longer a failable initializer that produces an implicitly unwrapped optional. (#21194)

  • API

    The class property isDeletable on PSPDFAnnotation has been converted to a per-object property to include object flags. (#21293)

  • Removed

    Removes the rendering option to disable text anti-aliasing when using the non-native text rending option. (#21204)

  • Removed

    Removes the class property isWritable on PSPDFAnnotation. All implemented subclassed annotation and form types are writable. (#21293)

  • Added

    Adds NSSecureCoding support to PSPDFAnnotation and its subclasses. (#12026)

  • Added

    Adds NSSecureCoding support to PSPDFColorPreset and PSPDFBorderStylePreset. (#21362)

  • Added

    Adds support for setting a user activity on PSPDFDocument. (#20431)

  • Added

    Adds PSPDFDocumentSaveStrategyRewriteAndOptimizeFileSize to enable file size optimizations when saving documents. (#20826)

  • Changed

    Improves JPEG2000 with transparency support. (#20483)

  • Changed

    Improves filesystem checking to better handle external storage and file server support on iOS 13. (#21159)

  • Changed

    Improves font rendering and fixes several edge cases. (#20930)

  • Changed

    Improves handling and documentation of custom digital signature sizes. Now cases where the signature size exceeds the reserved size in a document will be informed correctly. (#21304)

  • Changed

    Improves the validation of Instant JSON payloads so that case differences in properties are tolerated. (#21145)

  • Changed

    Improves error reporting in +[PSPDFAnnotation annotationFromInstantJSON:documentProvider:error:] when the document was misconfigured. (#21177)

  • Changed

    Improves memory usage with complex documents. (#20970)

  • Changed

    Improves the stability of some PDF form operations. (#21032)

  • Changed

    Improves the validation of InstantJSON in some corner cases. (#20748)

  • Changed

    Improves performance when opening documents with many links. (#20786)

  • Changed

    Disables generating PDFs from URLs and HTML strings on Mac Catalyst. (#21000)

  • Changed

    Updates Botan to version 2.11.0. (#20549)

  • Changed

    Updates Duktape to version 2.4.0. (#20954)

  • Fixed

    Fixes a bug in redaction rendering where the font size wasn’t consistent. (#21088)

  • Fixed

    Fixes an issue with transparent strokeColor in Instant JSON. (#21391)

  • Fixed

    Fixes an issue when importing XFDF files in specific documents. (#21271)

  • Fixed

    Fixes an issue where images with the lighten blend mode didn’t get rendered correctly. (#20642)

  • Fixed

    Fixes an issue where loading a document would fail if it contained JPEG2000 images not specifying a color space. (#21311)

  • Fixed

    Fixes an issue where text after signing had incorrect characters after looking at it in another viewer. (#20930)

  • Fixed

    Fixes an issue where the error object was not set in case of a failure in -[PSPDFDataProviding replaceWithDataSink:error:]. (#21116)

  • Fixed

    Fixes an issue where using the document editor to merge a document with many pages would lead to an out-of-memory crash. (Z#15277)

  • Fixed

    Fixes issues with transparent image stamp annotations. (#7646)

  • Fixed

    Fixes issues with transparent images in XFDF. (#9221)

  • Fixed

    Fixes some stability issues related to color space management. (#21529)

  • Fixed

    Fixes some stability issues when fonts are loaded from a document. (#21042)

  • Fixed

    Fixes some use cases where PDFs with JavaScript validation scripts may not work as expected. (#21291)

  • Fixed

    Fixes a problem where some dates may be incorrectly formatted as Sunday. (#20363)

  • Fixed

    Fixes an issue with annotation hit testing that could result in taps being received by a link annotation that was underneath another link annotation. (#21055)

  • Fixed

    Fixes an issue where link annotations with a nil border color and a valid dash array were not being rendered. (#20749)

  • Fixed

    Fixes annotations being misplaced when reopening a document that loads annotations from an external file after setRotationOffset:forPageAtIndex: had been used to apply a temporary rotation when that document was saved. (#20976)

  • Fixed

    Fixes annotations sometimes being blurry when reopening a document that loads annotations from an external file after setRotationOffset:forPageAtIndex: had been called before that document was saved. (#20976)

  • Fixed

    Fixes annotations sometimes not being saved to an external file after only annotation updates happened and setRotationOffset:forPageAtIndex: was called before saving. (#20976)

  • Fixed

    Fixes pasted rotated vector stamps being double rotated which resulted in clipping. (#20916)

  • Fixed

    Fixes -[PSPDFProcessorConfiguration drawOnAllCurrentPages:] producing offset drawing when the page has a MediaBox with a non-zero origin. (#20797)

  • Fixed

    Fixes the drawingBlock of PSPDFFileAppearanceStreamGenerator not automatically handling page rotation. (#20983)

  • Fixed

    Fixes a possible crash in certain documents due to a null dereference in isLinkedInAcroForms. (#21121)

  • Fixed

    Fixes an issue where rotating pages using the document editor would always reset the page binding setting to the left edge. (#20732)

3.5.0 - 31 Jul 2019

PSPDFKit now requires and is built with Xcode 10.3 (10G8).

  • Added

    Adds an optional JSON Podspec (podspec.json) that you can use by appending .json to your podspec link. Learn more in our CocoaPods guide. (#20335)

  • Added

    Adds API to change the order in which annotations are stacked on the page (the z-index). (#100)

  • Added

    Adds support for rotating image stamp annotations. (#19692)

  • Added

    Adds support for rotating vector stamp annotations. (#20345)

  • Added

    Adds support for rendering emojis in free text annotations and forms. (#20629)

  • Added

    Adds a PSPDFObjectsTestIntersectionFractionKey option for the document object finder, which can be used to filter out objects based on the fraction of their area intersecting with the target rectangle. (#20643)

  • Added

    Adds support for preserving the Instant JSON id in the PDF. (#20572)

  • Added

    Adds support for serializing and deserializing border properties of link annotations. (#20359)

  • Added

    Add support for vertical alignment in single-line form fields when exporting or printing PDF files. (#19882)

  • Changed

    The pageBinding property setter of PSPDFDocument now saves the page binding into the document instead of just keeping it in memory. (#20327)

  • Changed

    Improves automatic repair of AcroForms when loading documents with a large number of annotations. (#19947)

  • Changed

    Updates Expat to version 2.2.7. (#20545)

  • Changed

    Updates libpng to version 1.6.37. (#19851)

  • Changed

    Updates openjpeg to version 2.3.1. (#20647)

  • Fixed

    Fixes an issue reading media boxes. (#20592)

  • Fixed

    Fixes a deadlock that could occur when performing concurrent equality checks on annotation objects. (#20688)

  • Fixed

    Fixes calling sizeToFit on a free text annotation resizing the annotation incorrectly. (#20302, Z#14464)

  • Fixed

    Fixes an issue where annotations could become rotated and distorted in certain documents. (#20267)

  • Fixed

    Fixes the appearance stream of stamp annotations sometimes not being preserved when the annotation is rotated, which is needed to avoid distorting it. (#15898)

  • Fixed

    Fixes an assertion when importing annotations outside the page range using XFDF. (#20424)

  • Fixed

    Fixes page indices being incorrect after the first data provider when exporting Instant JSON from a document with multiple data providers. (#20343)

  • Fixed

    Fixes a crash that would occur after applying an Instant JSON update to a document where the changes contained form field updates. (#20152)

  • Fixed

    Fixes an issue where form fields with calculation order may not be flattened correctly by the processor. (#20434)

  • Fixed

    Fixes an issue where some documents with dropdown fields may show an arrow when the document is flattened. (#9539)

  • Fixed

    Fixes a problem where overriding the digital signature reserved size may corrupt the signature appearance. (#20496)

  • Fixed

    Fixes an issue that may prevent documents with certain restrictions from being digitally signed. (#20741)

  • Fixed

    Fixes an issue where a custom dataSource set on a PSPDFSigner object was overridden sometimes. (#20487)

  • Fixed

    Fixes an issue where some documents signed with invisible signatures could not be validated correctly. (#20277)

  • Added

    Adds -[PSPDFDocumentEditor rotationForPageAtIndex:] to get the current rotation for a page of the document being edited. (#19960)

  • Added

    Adds a property on PSPDFBookmarkManager to access the associated PSPDFDocument instance. (#20226)

  • Changed

    Improves the loading performance for complex documents with lots of link annotations. (#19399)

  • Changed

    PSPDFBookmarksChangedNotification is no longer posted when loading a document. (#18638)

  • Fixed

    Fixes very occasional text rendering problems. (#20155)

  • Added

    Adds support for importing and exporting free text callout annotations using JSON. (#18202)

  • Changed

    Improves loading performance for documents with complex outlines. (#20279)

  • Changed

    Improves rendering of text with non-Latin characters. (#20189)

  • Fixed

    Fixes an issue where image stamp annotations rotated by third-party software may lose their appearance. (#20165)

  • Fixed

    Fixes video metadata lookup for YouTube videos. (#20180)

3.4.0 - 30 May 2019

  • API

    Replaces the rotation property setter of PSPDFFreeTextAnnotation with setRotation:updateBoundingBox:, which is declared in the PSPDFRotatable protocol. (#19983)

  • Added

    Adds Welsh localization. (#19923)

  • Added

    Adds a new PSPDFPKCS7 class for representing a digital signature PKCS7 container. (#19916)

  • Added

    Adds a way to construct an instance of a PSPDFPrivateKey from NSData that represents a valid private key in either PKCS1 or PKCS8 encoding format. (#19916)

  • Added

    Adds embedSignatureInFormElement: API to the PSPDFSigner, an API that embeds a digital signature in a document already prepared to contain a digital signature. (#19479)

  • Added

    Adds hashDocumentProviderRange: API to the PSPDFDocumentProvider, an API that returns a hashed part of a document provider, indicated by a particular byte range. Useful for creating digital signatures. (#19479)

  • Added

    Adds prepareFormElementToBeSigned: API to the PSPDFSigner, an API that reserves space in a signature form field so that it can be signed later. (#19479)

  • Added

    Adds the ability to set a custom signature watermark. (#19438)

  • Added

    Adds support for the Doc.documentFileName JavaScript API. (#18775)

  • Changed

    Makes enums use NS_CLOSED_ENUM so Swift callers don’t need to handle unknown cases. (#18679)

  • Changed

    Improves rendering of text in appearance streams. (#19877)

  • Changed

    Improves the performance of some JavaScript calculation scripts. (#19234)

  • Changed

    Embedded goto actions will go to the specified page instead of going to the first page of the embedded target document. (#10963)

  • Changed

    Improves automatic repair of AcroForms to support more document errors. (#19834)

  • Changed

    Renames PSPDFSignatureInputMethod enum to PSPDFDrawInputMethod. The previous values have been deprecated. (#19800)

  • Changed

    Updates Expat to version 2.2.6. (#19868)

  • Changed

    Updates the Botan library version to 2.10.0. (#19767)

  • Fixed

    Fixes a bug which caused the font picker to scroll to the selected item with a jerky animation. (#19108)

  • Fixed

    Fixes an issue creating form fields where some fields could not be retrieved later by their original keys. (#19945)

  • Fixed

    Fixes an issue where JavaScript API doc.getField() could get into a state where it wasn’t possible to retrieve newly created form fields. (#20027)

  • Fixed

    Fixes an issue where rotating a page after deleting a note annotation could lead to an assertion failure. (#19853)

  • Fixed

    Fixes an issue where the line start and end of a polyline annotation didn’t honor a clear fill color. (#20097)

  • Added

    Adds undo support for link annotations. (#19702)

  • Added

    Adds a variant property on PSPDFAnnotation. (#19903)

  • Fixed

    Fixes an issue where the redaction text may not be correctly added in some scenarios. (#19703)

  • Fixed

    Fixes an issue with file conflict resolution which caused incorrect handling of cases where an opened document is renamed, moved, or deleted when the app is backgrounded. (#19782)

  • Changed

    Improves performance when attempting to load custom fonts on demand. (#19662, #19661)

  • Changed

    Improves performance when executing JavaScript actions on form fields with complex interdependent validation logic. (#19661)

  • Changed

    Improves results from PSPDFLibrary when the PSPDFLibraryMatchExactPhrasesOnly option is specified, and a tokenizer other than the default porter tokenizer is used. (#19685)

  • Changed

    Prevents a potential multithreading violation when the sqlite backend is accessed while a low memory notification is broadcasted. (#19750)

  • Fixed

    Fixes an issue where the PSPDFRenderDrawBlock set using -[PSPDFProcessorConfiguration drawOnAllCurrentPages:] was overridden by the PSPDFRenderDrawBlock of a PSPDFDocument’s render options. (#19541)

  • Fixed

    Fixes an issue where an annotation would not be up-to-date when using the processor while using the external file annotation save mode. (#19498)

  • Fixed

    Fixes an issue where readonly checkboxes may not be rendered correctly. (#19506)

  • Fixed

    Fixes a crash that could occur when deleting annotations using the menu interface. (#18061)

  • Fixed

    Fixes a potential crash when processing large documents under low-memory conditions. (#19768)

3.3.0 - 23 Apr 2019

  • API

    Replaces the rotation property setter of PSPDFStampAnnotation with setRotation:updateBoundingBox:, which is declared in the PSPDFRotatable protocol. (#15888)

  • Removed

    Deprecates -[PSPDFBookmarkManager removeBookmarkForPageAtIndex:] in favor of the new removeBookmarksForPageAtIndex:, which more accurately describes the handling of multiple bookmarks per page. (#16371)

  • Added

    Adds support for rotating stamp annotations to any angle and ensures the visual size is retained when the rotation is changed. (#15899)

  • Added

    Adds a customData property to PSPDFAnnotation. The contents of this property are saved to the corresponding annotation provider. (#18889)

  • Added

    Adds PSPDFDirectory.documentPickerDirectory as a way to show the system file picker for directory selection. (#16997)

  • Added

    Adds a drawingBlock property to PSPDFFileAppearanceStreamGenerator to allow additional custom drawing. See AppearanceStreamGeneratorWithCustomDrawingExample in PSPDFCatalog. (#19277)

  • Added

    Adds French (Canadian) localization. (#19686)

  • Added

    Adds showWatermark to PSPDFSignatureAppearance. This allows hiding the watermark from digital signatures. (#19438)

  • Added

    Adds support for signing PDF documents using P12 keystores that contain CA certificates. (#19448)

  • Added

    Adds support for modifying form fields and annotation widgets to Instant Document JSON. (#18771)

  • Added

    Adds FontStyle to Instant JSON for widget annotations. (#18083)

  • Changed

    Improves JavaScript error validation and error reporting. (#18899)

  • Changed

    Improves performance of pages which hold lots of objects. (#19396)

  • Changed

    Improves the performance of documents with JavaScript interactivity in many common scenarios. (#19119)

  • Changed

    Automatically triggers a clearCache when the data directory is set. (#18898)

  • Changed

    Changes the default PSPDFDocumentEditorConfiguration.saveDirectories to PSPDFDirectory.documentPickerDirectory, to use the system file picker for choosing a save location. (#16997)

  • Changed

    Increases the default levels of undo actions from 40 to 100 to store more history. (#18756)

  • Changed

    Loading PDF actions is now more reliable. (#18843)

  • Changed

    Optimizes storage size of Magic Ink template files. (#19453)

  • Changed

    Suppresses parsing and potential display of unsupported annotation types, such as widget annotations. (#19415)

  • Changed

    Updates ICU to version 63.1. (#18974)

  • Changed

    Updates libjpeg-turbo to 2.0.2. (#18973)

  • Changed

    Updates libpng to 1.6.36. (#18972)

  • Changed

    Updates zlib to 1.2.11. (#18975)

  • Fixed

    Fixes a problem where a form field that is made visible by a JavaScript script may not show its formatted appearance. (#19119)

  • Fixed

    Fixes a rare issue when parsing outlines. (#19469)

  • Fixed

    Fixes a very occasional crash on editing form elements. (#19595)

  • Fixed

    Fixes an assertion that could occur when applying certain rotation values in Instant JSON in certain documents. (#19391)

  • Fixed

    Fixes an issue exporting Instant JSON shape annotations with transparent stroke colors. (#19120)

  • Fixed

    Fixes an issue when redacting documents with monochrome inline images. (#19579)

  • Fixed

    Fixes an issue when drawing a path using a pattern with alpha transparency. (#19148)

  • Fixed

    Fixes an issue when rendering text with an overlay blend mode. (#19151)

  • Fixed

    Fixes an issue when setting transparent colors in annotations. (#19120)

  • Fixed

    Fixes an issue when sharing a document that resulted in blank pages. (#19267)

  • Fixed

    Fixes an issue where the QuadPoints of link annotations were saved to the PDF incorrectly. (#19427)

  • Fixed

    Fixes an issue where -[PSPDFDocument+DataDetection objectsAtPDFRect:pageIndex:options:] could return a nil annotations array. (#18846)

  • Fixed

    Fixes an issue where a page would sometimes fail to render when scrolling through a document quickly. (#18571)

  • Fixed

    Fixes an issue where annotations created by Apple Preview may not be copied and pasted correctly. (#19154)

  • Fixed

    Fixes an issue where border width and border dash array of free-text annotations were not serialized properly to Instant JSON. (#19481)

  • Fixed

    Fixes an issue where entering text after a PDF document script has executed may not work correctly. (#19119)

  • Fixed

    Fixes an issue where form field input may not be correctly validated while the user is typing if some form field flags are set. (#19448)

  • Fixed

    Fixes an issue where link annotations may not work correctly after a document is exported. (#19222)

  • Fixed

    Fixes an issue where malformed widget annotations weren’t correctly attached to the form. (#19581)

  • Fixed

    Fixes an issue where opening a document with annotations written by a version of PSPDFKit prior to 8.0 could lead to a deadlock. (#19007)

  • Fixed

    Fixes an issue where some JPX images may not render correctly. (#18648)

  • Fixed

    Fixes an issue where some memory may be leaked after running a script. (#19016)

  • Fixed

    Fixes an issue where stamps with custom AP streams were added with the wrong rotation on rotated PDF pages. (#19351)

  • Fixed

    Fixes an issue where text edited in form fields was incorrectly set in other form fields as well. (#19236)

  • Fixed

    Fixes an issue where the fillColor property was ignored in Instant JSON for polyline annotations. (#19443)

  • Fixed

    Fixes an issue with instant ink annotation not being sent to clients. (#19325)

  • Fixed

    Fixes an issue with text markup alignment on accented characters. (#18214)

  • Fixed

    Fixes some characters being missing from search preview. (#19361)

  • Fixed

    Fixes an issue where the caps key may be incorrectly enabled on some form fields. (#19246)

  • Fixed

    Fixes an issue where ink drawings created in macOS Preview and represented as vector stamps could in some cases be incorrectly displayed as a default stamp. (#19157)

  • Changed

    Reduces the numbers of undo actions recorded when modifying the points of free text callout, line, polyline, and polygon annotations. (#18197)

  • Removed

    Removes the PSPDFFormElementFlag enumeration, which was unused. The supported flags can be set through the readOnly, required, and noExport properties on PSPDFFormField. (#19101)

  • Fixed

    Fixes a potential crash when resolving additional downloadable fonts. (#18981)

  • Fixed

    Fixes a rare deadlock when using undo/redo while a document is being deallocated. (#18977)

  • Fixed

    Fixes an issue that could result in missing annotation note indicators for notes added in third party editors. (#19039)

  • Fixed

    Fixes an issue where a form field with custom formatting may not be formatted correctly when its exported XFDF data is imported again. (#18791)

  • Fixed

    Fixes an issue where annotation note indicators could be clipped when positioned on the edge of the annotation bounding box. (#19039)

  • Fixed

    Fixes an issue where changes to the fileURL property of objects in a document’s dataProviders array were not reflected in the fileURLs, or fileURL property of that document. PSPDFDocument now uses KVO to reflect changes to the fileURL property of its dataProviders that conform to PSPDFFileDataProviding in its own fileURLs, and fileURL properties. (#18835)

  • Fixed

    Fixes an issue where some JavaScript keystroke handling scripts may not work as intended. (#19070)

  • Fixed

    Fixes an issue where the image of a push button may be displaced in some cases. (#18932)

  • Fixed

    Fixes some issues where certain properties changed by a JavaScript script may not reflect correctly in the UI. (#18125)

  • Fixed

    Fixes an issue where some layers were hidden incorrectly. (#14439)

  • Changed

    Improves JavaScript error validation and error reporting. (#18899)

  • Changed

    Automatically triggers a clearCache when the data directory is set. (#18898)

  • Fixed

    Fixes an issue where -[PSPDFDocument+DataDetection objectsAtPDFRect:pageIndex:options:] could return a nil annotations array. (#18846)

  • Fixed

    Fixes an issues where a page would sometimes fail to render when scrolling through a document quickly. (#18571)

3.2.0 - 8 Feb 2018

  • API

    Changes the return type of -[PSPDFBookmarkManager addBookmarkForPageAtIndex:] from void to PSPDFBookmark *. (#10916)

  • API

    Deprecates PSPDFDocumentSaveOptionForceRewrite in favor of newly added PSPDFDocumentSaveOptionForceSaving and PSPDFDocumentSaveOptionStrategy. (#18142)

  • Removed

    Deprecates -[PSPDFDocument applyInstantJSONFromDataProvider:toDocumentProvider:error:] in favor of a version that adds a lenient parameter, that controls the behavior when the JSON is (partially) invalid. (#18630)

  • Added

    Adds PSPDFOriginalFontNameAttributeName to improve handling of fonts in free text annotations where the font is not readily available. In addition, setting an annotation’s fontName now preserves the fontSize. (#18421)

  • Added

    Adds localizedActionType to PSPDFAction, and changes some of the strings returned from localizedDescriptionWithDocumentProvider:. (#10916)

  • Added

    Adds support for cloudy borders in shape annotations and free text annotations via Instant JSON. (#18547)

  • Added

    Adds support for multi-threaded rendering. (#18199)

  • Added

    Adds support for stamp and free text annotation rotation in Instant JSON. (#18019)

  • Added

    Adds support for the doc.removeField JavaScript API. (#18621)

  • Changed

    Improves compatibility with 3rd-party SDKs that use Aspects to hook into message passing. (#18793)

  • Changed

    Improves handling of a document’s documentProviders being recreated, which happens when calling clearCache and in low-memory situations. (Z#12006)

  • Changed

    Improves handling of failures to add annotations to a given annotation provider. Annotations that could not be attached to the document are now not included in the return value of an annotation provider’s -addAnnotations:options: method. (#16326)

  • Changed

    Improves initial text parsing performance. (#18534)

  • Changed

    Improves performance when looking up fonts. (#17981)

  • Changed

    Improves the locking mechanism for password-protected documents so that calling -[PSPDFViewController reloadData] won’t reload an explicitly-locked document. (#18561)

  • Changed

    Improves the performance of documents which apply masks to text objects. (#15497)

  • Changed

    Allow the use of -[PSPDFDocumentProvider setRotationOffset:forPageAtIndex:] on providers with custom annotation providers like XFDF or PSPDFKit Instant. (#17603)

  • Changed

    Exposes -[PSPDFAnnotation blendMode]. See https://pspdfkit.com/guides/ios/annotations/annotation-blend-modes/. (#18410)

  • Fixed

    Fix an issue in full-text search that could cause a deadlock during indexing. (#18750)

  • Changed

    Padding for glyph frames is no longer applied in PSPDFBoundingBoxFromGlyphs and PSPDFRectsFromGlyphs. PSPDFDefaultTextPaddingFactor has been removed as well. (#18036)

  • Changed

    The documentProvider property on PSPDFAnnotation is now readonly. (#18578)

  • Changed

    Updates the Botan library to version 2.9.0. (#18271)

  • Changed

    Use app name in JavaScript alerts. (#18529)

  • Fixed

    Fixes a bug where annotations parsed from XFDF would be displayed incorrectly on a rotated page. (#17603)

  • Fixed

    Fixes a problem importing/exporting color values. This could lead to unnecessary appearance stream regeneration. (#18428)

  • Fixed

    Fixes a rare deadlock when using ink annotations from multiple threads. (#18674)

  • Fixed

    Fixes an issue when opening a rotated Image Document. (#17791)

  • Fixed

    Fixes an issue where creating text markup annotations via +textOverlayAnnotationWithRects:boundingBox:pageIndex: ignored the bounding box parameter and used the union of the rects as bounding box instead. (#18092)

  • Fixed

    Fixes an issue where rendering a page with lot of annotations on a large zoom scale would cause memory usage to spike. (#18224)

  • Fixed

    Fixes an issue with Image Documents when images have an orientation. (#17791)

  • Fixed

    Fixes an issue with Image Documents when saving back to an already rotated image. (#18483)

  • Fixed

    Fixes an issue with accessing the document metadata after receiving a low memory warning. (#18769)

  • Fixed

    Fixes an issue with render cancellation when using a document that contains multiple data providers. (#18563)

  • Fixed

    Fixes delegates not being correctly called for PSPDFDocumentEditorDelegate for some editor actions. (#18531)

  • Fixed

    Fixes text markup annotations being created incorrectly on rotated pages with text that appears the right way up. (#18219, Z#11941)

  • Added

    Adds a unique identifier uuid to PSPDFAnnotation. (#17635)

  • Changed

    Improves error reporting when creating an image for a page of a document fails. (#18212)

  • Fixed

    Fixes an issue when invalid Image Documents are read back. (#18110)

  • Fixed

    Fixes an issue where the redaction of a monochrome image may change its color unexpectedly. (#18176)

  • Fixed

    Fixes an issue with some documents using large amounts of memory when searching and navigating. (#18118)

  • Changed

    Improves file asset handling for invalid PDF documents. (#18102)

  • Changed

    Improves handling of invalid documents when enqueueing them in PSPDFLibrary. (#18106)

  • Changed

    Improves handling of malformed documents when parsing the extended graphics state. (#18057)

  • Changed

    Improves the API documentation for PSPDFUsernameHelper and PSPDFDocument.defaultAnnotationUsername. (#18031)

  • Changed

    Improves thread handling and exiting when an app termination event is detected. (#18044)

  • Changed

    Improve app termination handling when background library indexing operations are in flight. (#18056)

  • Fixed

    Fixes a crash parsing text on a very small number of documents. (#18032)

  • Fixed

    Fixes an assertion that might be triggered on document deallocation when the undo controller hasn’t been cleaned up yet. (#18062)

  • Fixed

    Fixes an issue where PSPDFLibrary would return incorrect results when searching within documents that contained Unicode surrogate pairs (like Emoji) in their text. (#3292)

  • Fixed

    Fixes an issue where redacting certain kinds of vector graphics may incorrectly redact part of the background. (#18071)

  • Fixed

    Fixes an issue where redacting certain kinds of vector graphics may result in a lot of memory consumption. (#18065)

  • Fixed

    Fixes an issue where the JavaScript method Doc.print may not work correctly. (#18111)

  • Fixed

    Fixes an issue where the signature overlay may show incorrect text in non-Western languages. (#17918)

  • Fixed

    Fixes an issue with file change tracking that could trigger to multiple conflict resolution messages or a document reload loop. (#18090, #18133)

  • Fixed

    Fixes some visualization issues with markup annotations, specially on rotated pages. (#12927, #13162, #17713, #17889, #18002, #18024)

  • Changed

    Improves strikeout annotation rendering, by making the line a little bit thicker and the baseline a little bit below the vertical center. (#17889)

  • Fixed

    Fixes a rare exception when deallocating undoable objects in multiple threads. (#17983)

3.1.0 - 6 Dec 2018

  • API

    The distinction between standard stamps and custom text stamps has been clarified with the following deprecations and replacements. If you previously used the stamp subject consider whether you want a standard or custom text stamp. For standard stamps, subject has been deprecated in favor of stampType and the value of this property should usually be one of the values defined by the new PSPDFStampType string enum. PSPDFKit will provide the localized title for standard stamps. localizedSubject has been deprecated in favor of title. Set the title instead of stampType for custom text stamps, where you provide a title that has already been localized or user-generated. subtext has been deprecated in favor of subtitle. (#15895)

  • API

    -[PSPDFAnnotationSummarizer temporaryPDFFileURLForPages:completionBlock:] is now only available on iOS. (#17109)

  • Added

    Adds a custom tokenizer (PSPDFLibraryUnicodeTokenizerName) that performs full Unicode case folding on the input text. (#16219)

  • Added

    Adds better support for annotations with custom appearance streams. (#15658)

  • Added

    Adds progress reporting and cancellation support to PSPDFAnnotationSummarizer. (#17749)

  • Added

    Adds support for conflict resolution options to PSPDFCoordinatedFileDataProvider and PSPDFDocument. This is achieved by levering APFS to create a lightweight file copy used for safe reading and potential later restoration. (#13367)

  • Added

    Adds support for page bookmarks in compound documents. (#11008)

  • Changed

    Improves compatibility with forms on malformed PDFs. (#17707)

  • Changed

    Improves document features to reflect the current state of the document, by automatically updating them once an encrypted document has been unlocked. (#17271)

  • Changed

    Improves error handling when saving a document fails. (#17685)

  • Changed

    Improves performance on initializing a data provider. (#17897)

  • Changed

    Improves tracking of external file changes. (#17946)

  • Changed

    Changes the type of the keys of PSPDFDocumentPDFMetadata to PSPDFMetadataName. (#16790)

  • Changed

    Log message sent from our render core can now be intercepted with the log handler. (#17732)

  • Changed

    PSPDFDocumentXMPMetadata and PSPDFDocumentPDFMetadata now have failable document initializers and simply return nil if a document is not valid. (#17736)

  • Changed

    PSPDFUndoController now checks if an undo/redo operation can be performed and fails gracefully, instead of throwing an exception when undo/redo is called on an empty stack. (#17921)

  • Removed

    Removes zooming in on search results on iPads. (#17260)

  • Changed

    The disk cache is now invalidated when a device locale change is detected. (#17919)

  • Changed

    The redaction feature now deletes annotations and form fields that intersect with a redaction annotation. (#17390)

  • Changed

    PSPDFAnnotationSummarizer no longer returns a nullable on its initializer. (#17109)

  • Fixed

    Fixes a potential race condition when changing annotation properties from multiple threads at the same time. (#17690)

  • Fixed

    Fixes a problem where some text in a PDF document may be redacted incorrectly. (#17699)

  • Fixed

    Fixes an issue applying redactions on encrypted documents. (#17722)

  • Fixed

    Fixes an issue looking up destinations in a names tree. This could lead to unresolvable link/outline destination. (#17206)

  • Fixed

    Fixes an issue opening certain documents with invalid IRT fields. (#17797)

  • Fixed

    Fixes an issue that may happen after copying a page using the document editor. (#17825)

  • Fixed

    Fixes an issue when using PSPDFAppearanceCharacteristics without an image. (Z#11409)

  • Fixed

    Fixes an issue where XMP metadata was corrupted when saving password protected documents. This enables saving bookmarks into password protected documents. (#17238)

  • Fixed

    Fixes an issue where changing the button caption property of a button from JavaScript code may not change the button appearance. (#17719)

  • Fixed

    Fixes an issue where editing a form field in the middle may incorrectly move the cursor to the end. (#17926)

  • Fixed

    Fixes an issue where keystroke range replacements were not caught by Javascript correctly. (#17106)

  • Fixed

    Fixes an issue where some PDF documents may show an indefinite spinner and not render correctly. (#17446)

  • Fixed

    Fixes an issue where the Javascript VM init sequence prevented errors from bubbling up to the user. (#17745)

  • Fixed

    Fixes an issue where the overlay text of a redaction may not be in the correct place in some cases. (#17695)

  • Fixed

    Fixes an issue where the wrong message is return when a certificate is expired. (#16727)

  • Fixed

    Fixes an issue with importing/exporting vector stamps with InstantJSON. (#16690)

  • Fixed

    Fixes issues when importing annotations on rotated pages using InstantJSON. (#17814)

  • Changed

    Improves error handling in the text parser for corrupted PDF documents. (#17735)

  • Changed

    Improves handling of embedded assets in annotations. (#17717)

  • Changed

    Background library index tasks are now correctly stopped when an application will terminate event is sent. (#17733)

  • Changed

    Improve NSCoder error handling support for PSPDFDataContainerProvider. (#17734)

  • Fixed

    Fixes a potential issue when rendering images. (#17737)

  • Fixed

    Fixes an issue where PSPDFImageDocument’s data provider would reference invalid memory. (#17763)

  • Fixed

    Fixes an issue where text could not be selected in certain documents. (#17759)

  • Fixed

    Fixes an issue where text for highlighted annotations sometimes didn’t include newline character. (#17595)

  • Fixed

    Fixes an occasional issue when rendering text. (#17747)

  • Fixed

    Fixes the PSPDFAnnotation API hasBinaryInstantJSONAttachment and writeBinaryInstantJSONAttachmentToDataSink:error: returning incorrect values in certain situations. (Z#11192)

  • Fixed

    Fixes an issue where underline annotations may not work correctly on rotated pages. (#14252)

  • Changed

    Improves text selection for documents with rotated pages. (#14252)

  • Fixed

    Fixes a crash that may happen when trying to generate the appearance stream of a push button. (#17627)

  • Fixed

    Fixes a potential issue when converting magic ink annotations. (#17618)

  • Fixed

    Fixes a potential issue when rendering certain PDF documents with note annotations. (#17617)

  • Fixed

    Fixes an issue in handling documents with partially invalid pages. (#17621)

  • Fixed

    Fixes an issue with unexpected state when clearing the annotation selection for specific configurations. (#17619)

  • Added

    Adds support for util.scand, a JavaScript API that can be used from PDF documents to parse dates from strings. (#17480)

  • Changed

    Improves performance while entering text using a non-latin font into form fields. (#17593)

  • Changed

    Adjust default values of PSPDFLibrary cooldown timer for iOS 12.0 and higher. (#17441)

  • Changed

    Changes the format of the InstantJSON bookmark format. The id is now saved in pdfBookmarkId and skippedBookmarkIds has been renamed to skippedPdfBookmarkIds. (#17400)

  • Fixed

    Fixed an issue where the wrong encoding was used for the Symbol font. (#17245)

  • Fixed

    Fixes a crash that could occur if an annotation is deleted while a checkpoint is being saved. (#17408)

  • Fixed

    Fixes a crash that may happen when you add form fields with certain kinds of JavaScript scripts. (#17472)

  • Fixed

    Fixes an issue where JavaScript dependent calculations may not be executed after a syntax error. (#17025)

  • Fixed

    Fixes an issue where JavaScript form field validation erroneously used the previous value. (#16462)

  • Fixed

    Fixes an issue where redacting content in some documents may show validation issues in third party readers. (#17486)

  • Fixed

    Fixes an issue where rotating a page after adding a note annotation would crash without saving the document prior to rotation. (#17473)

  • Fixed

    Fixes duplicate annotations when using PSPDFXFDFAnnotationProvider together with PSPDFFileAnnotationProvider. (#17526)

  • Fixed

    Fixes an issue inserting Emoji, Arabic or East Asian text in form fields. (#17574)

  • Added

    Adds -[PSPDFNamedAction initWithNamedActionType:] as alternative initializer. (#17311)

  • Changed

    Improves a free text annotation compatibility with Adobe Acrobat and other PDF readers. (#15095)

  • Changed

    Improves support for NSSecureCoding in PSPDFDocument. (#17273)

  • Changed

    Improve magic ink’s detection of lines and arrows. (#17339)

  • Fixed

    Fixes an issue rendering certain documents with complex clip paths. (#16683, #17267)

3.0.0 - 17 Oct 2018

  • API

    PSPDFKit now uses a standardized coordinate system where the page origin is always in the lower-left corner as the page appears on screen. The simplifies interaction with pages that have a rotation or cropbox set in the PDF. Please see the migration guide if you did anything in PDF coordinates or page coordinates, such as reading or writing annotation or glyph positions, or using PSPDFViewState. (#15890)

  • API

    Instant JSON binary attachment APIs now take and return a mime-type. (#16039)

  • API

    Removes PSPDFPageInfo’s rect, rotatedRect, and rotationTransform. They have been replaced by size and transform. (#15890)

  • API

    Separates PSPDFPageInfo’s rotation property into savedRotation and rotationOffset. (#15890)

  • API

    Removes the externalSignatureDelegate property of PSPDFSigner. Use the delegate property instead, as it’s intended to be more flexible. (#15853)

  • API

    Removes the synchronous signing methods in PSPDFSigner. It’s more preferred to use the ones that are based on setting a custom dataSource or delegate, as they offer more flexibility. (#15853)

  • API

    Changes the parameters of the conversion functions between view and PDF coordinate spaces. (#15890)

  • Added

    Adds API support for resetting form fields to the PSPDFFormParser. (#16808)

  • Added

    Adds API to PSPDFProcessorConfiguration to apply redaction annotations. (#2127)

  • Added

    Adds Comparison features. Adds changeStrokeColorOnPageAtIndex:toColor:, and mergePageFromDocument:password:sourcePageIndex:destinationPageIndex:transform:blendMode: to PSPDFProcessorConfiguration. (#16396)

  • Added

    Adds PSPDFAdditionalFontDirectories option to configure additional font directories. (#13991)

  • Added

    Adds PSPDFDocumentSaveOptionApplyRedactions to apply redactions when saving the document. (#2127)

  • Added

    Adds PSPDFSignerDataSource and PSPDFSignerDelegate to be able to add digital signatures to documents asynchronously. (#15853)

  • Added

    Adds maximumContiguousIndexingTime and automaticPauseDuration to PSPDFLibrary to configure the automatic pause. (#17026)

  • Added

    Adds outlineColor to PSPDFAnnotationStateManager, and PSPDFAnnotationStyleKeyOutlineColor as a new annotation style key, to allow setting the outline color of redaction annotations. (#2127)

  • Added

    Adds a configurable privateKey property to PSPDFSigner. For convenience, this property is already set for you if you use the most common PSPDFSigner subclass, PSPDFPKCS12Signer, as soon as you unlock the .p12 bundle. (#15853)

  • Added

    Adds a new render option, PSPDFRenderOptionDrawRedactionsAsRedacted, to draw redactions in their redacted state. (#2127)

  • Added

    Adds model-level support for redaction annotations via the new PSPDFRedactionAnnotation class. (#2127)

  • Added

    Adds the ability to compare document pages via PSPDFProcessorConfiguration. Requires the PDF Comparison feature to be enabled in your license. (#16396)

  • Added

    Adds support for bookmarks to Instant Document JSON. (#16165)

  • Changed

    Improves the performance of documents with a lot of JavaScript calculations. (#11925, #16490)

  • Changed

    Renames PSPDFMarkupAnnotation to PSPDFTextMarkupAnnotation, and its highlightedString property to markedUpString. (#16652)

  • Fixed

    Fixes a bug where the reason or location of a digital signature may not be persisted in the document correctly. (#15853)

  • Fixed

    Fixes a potential deadlock during document (re-)initialization. (#15005)

  • Fixed

    Fixes a race condition that could result in an incorrect page count when using documentByAppendingDataProviders:. (#16994)

  • Fixed

    Fixes a render rounding issue that may happen in PDF documents with a displaced cropbox. (#15169)

  • Fixed

    Fixes an issue that caused problems saving new annotations in particular documents. (#16717)

  • Fixed

    Fixes an issue when extracting link annotations. (#16854)

  • Fixed

    Fixes an issue where JavaScript scripts that hold a strong local reference to event.target may not work correctly. (#16507)

  • Fixed

    Fixes an issue where documents with a large number of form fields failed to display editing options. (#16911)

  • Fixed

    Fixes an issue where form elements were not correctly updated. (#16408)

  • Fixed

    Fixes an issue where importing images in push buttons via JavaScript may add an annotation in some cases. (#16751)

  • Fixed

    Fixes an issue where not all form fields were listable immediately after opening a document. (#16479)

  • Fixed

    Fixes an issue where some PDF pages could not be inserted as attachments for images. (#16729)

  • Fixed

    Fixes an issue where some document outlines may not be persisted correctly after using the document processor. (#16688)

  • Fixed

    Fixes an issue where some documents with JavaScript may be unresponsive for a great amount of time. (#16886)

  • Fixed

    Fixes an issue where the blend mode of ink annotations may not be persisted correctly. (#16376)

  • Fixed

    Fixes an issue where the system sound recorder could invoke messages on already deallocated delegates after recording a sound annotation. (#16743)

  • Fixed

    Fixes an issue with JPEG2000 images. (#14850)

  • Fixed

    Fixes an issue with document checkpointing after saving fails. (#16600)

  • Fixed

    Fixes an issue with free text annotations reducing render quality after moving them around many times. (#16329)

  • Fixed

    Fixes an locking issue that could result in a deadlock while saving document editor changes. (#16980)

  • Fixed

    Fixes annotations created from Instant JSON being offset from their correct position in documents with non-uniform page sizes. (#16802, Z#10493)

  • Fixed

    Fixes a performance problem with documents that contain large clipping paths. (#16481)

  • Fixed

    Fixes a problem applying Instant Document JSON. (#16004)

  • Fixed

    Fixes a problem rendering documents with particular fonts. (#16361)

  • Fixed

    Fixes an issue where the selection indices may not be set correctly during JavaScript keystroke validation. (#17199)

  • Added

    Adds -library:didFinishIndexingDocumentWithUID:success: to PSPDFLibraryDataSource. (#16185)

  • Added

    Adds -library:didRemoveDocumentWithUID: to PSPDFLibraryDataSource. (#16185)

  • Added

    Adds PSPDFRotatable protocol that enables annotations to be rotated. (#16183)

  • Changed

    Annotations that are hidden or have the NoView flag set are no longer part of interactions. (#16344)

  • Changed

    Clarify requirements for custom UID values on PSPDFDocument. (Z#9936)

  • Changed

    Ensures PSPDFDocument.title is updated when the document is unlocked. (V#1599)

  • Changed

    Ensures that PSPDFLibrary stops indexing when the application is terminating. (#16212)

  • Changed

    Image documents now correctly report that bookmarks are not supported. (#16138)

  • Fixed

    Fixes an issue where an assertion is raised when adding an annotation while the underlying file for a PSPDFDocument is being changed. (#16276)

  • Fixed

    Fixes PSPDFDocument.title not being updated when the title is changed by an instance of PSPDFDocumentPDFMetadata. (#16193)

  • Fixed

    Fixes a crash that would occur when trying to edit a document after having duplicated pages. (#16360)

  • Fixed

    Fixes a race condition during undo registration that could result in a bad memory access. (#16216)

  • Fixed

    Fixes an issue where PSPDFLibraryFileSystemDataSource would remove previously indexed documents when adding a document in explicit mode. (#16185)

  • Fixed

    Fixes an issue where calling JavaScript function AFSpecial_Keystroke with certain arguments may cause an infinite loop in some devices. (#16126)

  • Fixed

    Fixes an issue where form elements were not detected by PSPDFDocument (when using PSPDFFileAnnotationProvider). (#16161)

  • Fixed

    Fixes an issue where radio buttons could be unselected. (#16233)

  • Fixed

    Fixes drawing annotations on rotated pages. (#16183)

  • Fixed

    Fixes an issue when loading checkpoint files. (#16277)

2.7.0 - 23 July 2018

  • API

    Adds isUnlockedWithFullAccess property to PSPDFDocument. (#12227)

  • API

    Improves type safety of PSPDFDocumentPDFMetadata keyed subscript access. (#12227)

  • API

    Introduces dedicated types for annotation variants (PSPDFAnnotationVariantString) and state-variant identifiers (PSPDFAnnotationStateVariantID), and updates all related APIs to correctly consume and vend the new types. (#14238)

  • Removed

    Deprecates PSPDFDiskCache’s jpegCompression in favor of compression. (#14075)

  • Removed

    Deprecates PSPDFProcessorSkipPDFCreationKey since it no longer does anything. (#15894)

  • Removed

    Deprecates the rotation property on PSPDFAnnotation and adds the same property on the subclasses PSPDFFreeTextAnnotation and PSPDFStampAnnotation. (#15894)

  • Added

    Adds isEncryptedWithUserPassword, isUnlockedWithFullAccess, isUnlockedWithUserPassword properties to PSPDFDocumentProvider. (#12227)

  • Added

    Adds permissionsLevel property to PSPDFDocumentProvider to indicate access level of opened document. (#12227)

  • Added

    Adds support for JavaScript do not disturb mode. In that mode, if code tries to show an alert message, it will be automatically translated into a console log instead. This is useful in the batch processing of form fields that may have validation scripts attached. You can configure this mode via the javaScriptStatus property of PSPDFDocument. (#15498)

  • Added

    Adds support for extracting and attaching binary Instant JSON attachments. (#15834)

  • Added

    Adds support for rendering borders and border colors in link annotations. (#15566)

  • Added

    Adds image attachments to Instant Document JSON. (#15748)

  • Changed

    Improves document password support and compatibility with third-party readers. (#15951)

  • Changed

    Improves the performance of the document searcher, specially in devices with low memory. (#15916)

  • Changed

    Improves hash call performance for lazily evaluated actions. (#13917)

  • Changed

    Ensures that the processor always encrypt documents using the 128-bit AES algorithm if the user didn’t change the defaults. (#15946)

  • Removed

    Removes incorrect PSPDF_CLASS_AVAILABLE annotation from PSPDFDocumentEditorConfiguration. Subclassing this class is not supported, and has now been marked with PSPDF_CLASS_AVAILABLE_SUBCLASSING_RESTRICTED. (#15147)

  • Changed

    PSPDFDocumentEditor now returns NSProgress when calling importPagesTo:fromDocument:withCompletionBlock:queue: for better status tracking. (#15918)

  • Fixed

    Fixes PSPDFFile.fileURL returning an empty NSURL when initialized with a nil fileURL. (#16120)

  • Fixed

    Fixes a crash that could occur after adding an annotation deserialized from Instant JSON. (#14815, Z#9340)

  • Fixed

    Fixes a problem where a form field may not be automatically formatted in some cases. (#15567)

  • Fixed

    Fixes a problem where entering text in some form fields with JavaScript validation may not be possible. (#15864)

  • Fixed

    Fixes a problem where some XFA forms with JavaScript may show an alert message when the document is open. (#16000)

  • Fixed

    Fixes a race condition that could lead to an assertion failure through improved locking. (#15548)

  • Fixed

    Fixes a rare issue adding page references with the document editor. (#14705)

  • Fixed

    Fixes an issue exporting document pages with a rare outline configuration. (#15923)

  • Fixed

    Fixes an issue where a new digital signature could not be created in some documents. (#15683, #15702)

  • Fixed

    Fixes an issue where bookmarks may not be saved correctly in certain documents. (#15826)

  • Fixed

    Fixes an issue where rendering was being incorrectly canceled. (#15685)

  • Fixed

    Fixes an issue where the library tokenizer was nil after creating the library with +[PSPDFLibrary libraryWithPath:tokenizer:error:]. (#15991)

  • Fixed

    Fixes memory leaks that occurred when using PSPDFProcessor. (#15767)

  • Fixed

    Fixes serialization and deserialization of the PSPDFURLAction.unmodifiedURL URL property. (#13990)

  • Changed

    Improves image document saving performance. (#15540)

  • Added

    Added the ability to print image documents. (#15375)

  • Changed

    Image quality for JPEG now used in Image Documents. (#15499)

  • Changed

    Validation errors generated by JavaScript code are now localized in every language that is currently supported. (#14577)

  • Fixed

    Fixes mistaken API rename for -[PSPDFDocument fileURLs]. (#15660)

  • Fixed

    Fixes an issue with vector stamp annotations becoming grey when moving or resizing them. (#15345)

  • Fixed

    Fixes an issue when closing documents with smart form tab orders. (#15580)

  • Fixed

    Fixes an issue where a form field may be rendered more times than necessary. (#15528)

  • Fixed

    Fixes an issue where annotation additional actions may not be preserved after a document is saved. (#2185)

  • Fixed

    Fixes growing image document after save. (#15479)

2.6.0 - 31 May 2018

This version of PSPDFKit requires and is built with Xcode 9.4 (9F1027a). The new Image Documents component, which enables you to keep PSPDFImageDocuments editable even after saving, requires an updated license.

We prepared a migration guide to help you with some of the API changes in this version.

  • API

    The configuration builder blocks in PSPDFBaseConfiguration are now noescape for better Swift compatibility. (#15077)

  • API

    The constants in PSPDFAnnotationStyleManager have been renamed and now better map to Swift. (#15077)

  • API

    PSPDFDocument.annotationsForPageAtIndex:type: is now guaranteed to never return nil. (#15077)

  • Removed

    Deprecates PSPDFFileAnnotation’s appearanceName in favor of iconName. (#15319)

  • Removed

    Deprecates class-level methods on PSPDFProcessor and introduces new new instance-based API that allows for cancellation. (#10480)

  • Added

    Adds the ability to keep annotations on PSPDFImageDocuments editable even after saving. Requires the Image Documents feature to be enabled in your license. See https://pspdfkit.com/blog/2018/image-documents/ for more information. (#14894)

  • Added

    Adds an external file source option when adding new pages to a document with the document editor. (V##248)

  • Added

    Adds blend modes to Annotations. This improves rendering for appearance steams with different blend modes. (#15080)

  • Added

    Adds the ability to define arbitrary patterns for new pages when editing a document. (#14951)

  • Added

    Adds the ability to embed files to PSPDFFileAnnotation using -[PSPDFEmbeddedFile initWithFileURL:fileDescription:]. (#15210)

  • Changed

    Improves JavaScript support, including form formatting, calculation, and validation. (#9501)

  • Changed

    Improves XFDF output by omiting opacity if set to the default (1.0). (#15354)

  • Changed

    Improves rendering behavior for stamp annotations. Stamps are keeping their aspect ratio on resizing now. Stamps created with PSPDFKit now always use the same rendering, no matter if they were just created or after being saved in the document. The subject of stamps is now always rendered in uppercase characters. Custom stamps are now sized-to-fit before adding them to the document. (#1824)

  • Added

    Added annotation name to Instant JSON. Also renamed pspdfkit/file name to filename to prevent collisions. (#14856)

  • Added

    Added better detection for standard stamp subjects for Instant JSON. (#14919)

  • Changed

    Cancelling a PSPDFRenderTask now reduces further CPU usage more effectively. (#14218)

  • Changed

    PSPDFPageRenderer is now deprecated and will be removed in a later update. (#15189)

  • Fixed

    Fixes a crash which occurred when manually searching a protected document. (#15177)

  • Fixed

    Fixes a potential deadlock situation during document cache invalidation. (#15259)

  • Fixed

    Fixes an issue where glyph frames were larger than expected due to unexpected values in their fonts. (#14169)

  • Fixed

    Fixes an issue where newly created note annotations would require two taps for deselection. (#15221)

  • Fixed

    Fixes security vulnerability CVE-2018-9127 in Botan, where wildcard certificates could be accepted for invalid hostnames. (#15374)

2.5.0 - 11 Apr 2018

  • API

    Deprecates PSPDFAnnotationOptionUserCreatedKey. (#14669)

  • API

    Renames PSPDFSignatureHashAlgorithmSHA386 to PSPDFSignatureHashAlgorithmSHA384 which is actually the correct name. (#13932)

  • API

    tryLoadAnnotationsFromFileWithError: has been removed from PSPDFFileAnnotationProvider. Use loadAnnotationsWithError: instead to customize annotation loading. (#14570)

  • API

    Deprecates PSPDFTextBlock.glyphs, PSPDFWord.glyphs, and PSPDFSelectionState.selectedGlyphs in favor of NSRange-based APIs. (#14606)

  • API

    Adds isGenerated to PSPDFGlyph to check if the glyph is an autogenerated filler. (#14606)

  • API

    PSPDFGlyph.indexOnPage is not -1 to indicate that it is a generated filler. Use PSPDFGlyph.isGenerated instead. indexOnPage can now be used to uniquely identify a glyph on a page, and is the index of the glyph in the PSPDFTextParser.glyphs array. (#14606)

  • Added

    Adds createdAt, updatedAt and creatorName to Instant JSON. (#14443)

  • Added

    Adds isReply and inReplyToAnnotation properties on PSPDFAnnotation. (#5721)

  • Added

    Adds properties for author-specific state on PSPDFNoteAnnotation. (#5721)

  • Added

    Adds PSPDFAESCryptoDataSink. (#13912)

  • Changed

    Improves cleaning up resources in PSPDFDocument’s dealloc. (#14586)

  • Changed

    Improves performance when examining document permission features. (#14747)

  • Changed

    Improves text selection performance in documents with a lot of text. (#14516)

  • Changed

    Filters out invalid characters from a page’s text. (#14516)

  • Changed

    Performance improvements for documents with many data sources. (#14651)

  • Changed

    Removing an annotation with removeAnnotations:options: on PSPDFAnnotationManager or PSPDFDocument now also removes replies to that annotation. (#14385)

  • Changed

    The relationship between PSPDFXFDFAnnotationProvider and PSPDFFileAnnotationProvider is now more explicit. If you use XFDF for form filling, you now need to keep around both providers. Furthermore, the annotation manager now only saves into the first annotation provider implementing the save method. Previously all were called, which could have led to incorrect results. (#14323)

  • Fixed

    Fixes a crash that could happen during application termination. (#14483)

  • Fixed

    Fixes a lock inversion when setting up the document providers. (#14525)

  • Fixed

    Fixes a potential crash when saving a document. (#14082)

  • Fixed

    Fixes a potential issue when removing annotations. (#14381)

  • Fixed

    Fixes an issue that prevented correct caching of rendered pages. (#14390)

  • Fixed

    Fixes an issue where -[PSPDFTextParser textWithGlyphs:] would exclude the last glyph. (#14636)

  • Fixed

    Fixes an issue where a flattened document shows a blank page in Preview. (#13708)

  • Fixed

    Fixes an issue where action destinations would not be found if sorted incorrectly. (#14412)

  • Fixed

    Fixes an issue where document checkpoints were not loaded for decoded document instances. (#14624)

  • Fixed

    Fixes an issue where image data wasn’t properly removed after rewriting the PDF. (#14708)

  • Fixed

    Fixes an issue where searching for text in a document would return results with empty text blocks. (#14516)

  • Fixed

    Fixes an issue where some PSPDFDocumentSecurityOptions initializers would sometimes return nil. (#14646)

  • Fixed

    Fixes an issue where the documents features sometimes returned an incorrect value when called right after creating a PSPDFDocument. (#14574)

  • Fixed

    Fixes an issue where using a custom bookmark provider with readonly documents disabled adding and editing bookmarks. (#14574)

  • Fixed

    Fixes document corruption issue when document has a header and is incrementally saved. (#14249)

  • Fixed

    Fixes an issue where the deletion of an annotation could not be undone properly. Important: Calling removeAnnotations:options: on a PSPDFFileAnnotationProvider no longer posts PSPDFAnnotationChangedNotification! Deleted annotations are still being returned from dirtyAnnotations until the next save — like before. They are, however, not returned from annotationsForPageAtIndex: anymore. This behavior is also far less surprising. (#14305)

  • Fixed

    Fixes a document corruption bug when the document has a header and is incrementally saved. (#14249)

  • Fixed

    Fixes an animation glitch when rearrange pages with the document editor. (#14367)

  • Fixed

    Fixes an issue where PSPDFTextParser.glyphs could be incorrect for certain documents. (#10844)

  • Fixed

    Fixes an issue where dropdown arrow on combo boxes are not seen when box has a small width. (#14326)

  • Fixed

    Fixes an issue where dropdown arrows are still seen on combo boxes when document is flattened. (#9539)

  • Fixed

    Fixes issue where pdfId was required when importing a Instant JSON document. (#14494)

  • Fixed

    Fixes potential deadlocks during annotation rendering. (#14534)

  • Fixed

    Fixes an issue where opening large documents with marked content used very large amounts of memory. (#14415)

  • Fixed

    Fixes potential deadlocks when opening a lot of documents. (#14503)

  • Fixed

    Fixes an issue where PSPDFFile.fileData did not lazily memory map the file data when being called from user code. (#14539)

  • Fixed

    Fixes an issue with lossy cached images quality. (#13897)

2.4.0 - 2 Mar 2018

  • API

    -[PSPDFContainerAnnotationProvider clearNeedsSaveFlag] now asserts that it is called inside a write block! For more details, please refer to the documentation of PSPDFContainerAnnotationProvider(SubclassingHooks). (#14181)

  • API

    Certain types in Swift have been renamed to improve interoperability. (#10491)

  • API

    Deprecates encryptionAlgorithm in PSPDFPrivateKey, in favor of signatureEncryptionAlgorithm, which is enum-typed. (#13940)

  • API

    PSPDFDocumentSecurityOptions initializers may return error instead of assert. (#10491)

  • Added

    Adds PSPDFDocumentFeatures as a central place for checking the availability of various features. (#9107)

  • Added

    Adds a PSPDFCatalog example illustrating how to generate a PDF document on a mobile device without any server use. (#13776)

  • Added

    Adds a new protocol, PSPDFExternalSignature, that can be used to provide a digital signature for a document externally. (#13940)

  • Added

    Adds an example UpdateConfigurationWhenRotatingExample.swift for changing the configuration when rotating the device. (#13820)

  • Added

    Adds support for automatic access tracking for security scoped URLs. (#13863)

  • Added

    Adds the shouldTrackDeletions class property to PSPDFContainerAnnotationProvider to customize the effect of removeAnnotations:options: on dirtyAnnotations. See PSPDFContainerAnnotationProvider.h for more information. (#8839)

  • Changed

    Adjusts the gap between two pages in continuous scroll mode. (#13877)

  • Changed

    Changes the localized description of empty note annotations from Text to Note (localized). (#14057)

  • Changed

    Improve error messages when digitally signing a document failed. (#13741)

  • Changed

    Shows an error message when digitally signing failed instead of throwing an exception in some cases. (#13741)

  • Changed

    PSPDFTextParser now respects reading order of text blocks defined in the PDF using Marked Content. (#9677, #322)

  • Fixed

    Fixes FTS5 search on SQLite versions >= 3.20.0. (#14036)

  • Fixed

    Fixes a deadlock when calling removeAllAnnotationsWithOptions: on an instance of PSPDFContainerViewController or a subclass and clarifies locking requirements. (#14178)

  • Fixed

    Fixes an assertion when a non-specified named action was deserialized via Instant JSON. (#13804)

  • Fixed

    Fixes an issue saving a document with invalid PDF syntax (empty dictionary key). (#14009)

  • Fixed

    Fixes an issue where -[PSPDFAnnotation annotationFromInstantJSON:documentProvider:error:] attached the annotation to the document. (#14140)

  • Fixed

    Fixes an issue where some annotations in a custom annotation provider were not rendered properly. (#12762)

  • Fixed

    Fixes an issue where some form fields with custom FQNs may not be signed correctly. (#14309)

  • Fixed

    Fixes an issue where the hash of two equal PSPDFAnnotation objects could be different. (#13852)

  • Fixed

    Fixes an issue where the wrong font was selected. (#14027)

  • Fixed

    Fixes crashes on document unload when FormTabOrderCalculator is being processed. (#13976)

  • Fixed

    Fixes issue with text selection in certain cases. (#13803)

  • Fixed

    Fixes potential crash when saving files with irregular outlines. (#14116)

  • Fixed

    Fixes the issue where PSPDFDocument.hasDirtyAnnotations would return NO after removing an annotation from a custom annotation provider. (#8839, Z#5114)

2.3.0 - 12 Jan 2018

  • API

    Deprecates the baseURL property from PSPDFFileDataProvider. (#12525)

  • API

    Deprecates baseURL-based PSPDFFileDataProvider initializers. (#12525)

  • Added

    Adds PSPDFImageDocument for simple annotating of image files using PSPDFKit. (#13538)

  • Added

    Adds form field values to Instant JSON. (#13335)

  • Added

    Adds a new log level (PSPDFLogLevelCritical), that is enabled by default. (#13212)

  • Added

    Adds support for PEM-encoded certificates in PKCS#7 files. (#13698)

  • Changed

    Improves file coordination update notifications, by ignoring cases that do not represent content changes. (#13394)

  • Changed

    Improves the detection of digital signatures in third-party PDF readers. (#13593)

  • Changed

    Improves the stability of the digital signing process with some certificate authorities with missing fields. (#13694)

  • Changed

    Improves locking during document cache reset. (#10984)

  • Fixed

    Fixes an issue where zooming in on large free text annotations, stamps, or form fields could use a lot of memory, which could result in crashing. (#13685, #13686)

  • Fixed

    Fixes missed search terms which span over a newline without a hyphen. (#11862)

  • Fixed

    Fixes an issue with stamp annotations not being rendered when using XFDF. (#13330)

  • Fixed

    Fixes an issue with sound annotations losing sound data when using XFDF. (#13324)

  • Fixed

    Fixes specific issue where previous xref has the same object number as a newly created object. (#13183)

  • Fixed

    Fixes an issue where PSPDFGalleryManifest could override a link annotation’s url in some cases. (V#1084)

  • Fixed

    Fixes an issue where image stamp annotations appeared scaled up. (#13703)

  • Fixed

    Fixes a problem where signed documents loaded using a data provider may incorrectly warn about changes when validated. (#13549)

  • Fixed

    Fixes file coordination issues that could occur while the application is backgrounded. (#13652)

  • Fixed

    Fixes an issue where a signed document may show a warning if inspected with a PDF lint tool. (#13719)

  • Fixed

    Fixes an issue where PSPDFFile could in some cases return stale data for a file. (#13614)

  • Fixed

    Fixes an issue where the opacity was not applied to the callout of a PSPDFFreeTextAnnotation. (#13576)

  • Fixed

    Fixes an issue where some annotation widgets’ appearance streams were not updated properly when the underlying form field’s value changed. (#13344)

  • Changed

    Improves performance when fetching document level JavaScript objects. (#13281)

  • Fixed

    Fixes an issue where an ink annotation’s background (fill color) was incorrectly ignored. (#13216)

  • Fixed

    Fixes an issue where documents with links may not point to the correct destination after being exported. (#13341)

  • Fixed

    Fixes missed search terms which span over a newline without a hyphen. (#11862)

  • Fixed

    Fixes an issue with stamp annotations not being rendered when using XFDF. (#13330)

  • Fixed

    Fixes an issue with sound annotations losing sound data when using XFDF. (#13324)

  • Fixed

    Fixes incorrect glyph frames being returned from PSPDFTextParser for documents with vertical or rotated text. (#13423)

  • Fixed

    Fixes some crashes when undoing and redoing operations. (#12358)

  • Fixed

    Fixes a crash in PSPDFFileAnnotationProvider when the document has not been initialized properly. (#12358)

  • Fixed

    Fixes some crashes in PDFResourceProvider caused by a race condition. (#13413)

  • Fixed

    Fixes potential crashes when some classes are deallocating. (#13421)

2.2.0 - 23 Nov 2017

  • API

    Deprecates PSPDFJSONSerializing in favor of Instant JSON (See PSPDFAnnotation+Instant.h). (#10516)

  • Added

    Adds Instant JSON support to PSPDFDocument and PSPDFAnnotation. (#10516)

  • Fixed

    Fixes a rare text extraction issue where some space characters are not correctly extracted. (#6273)

  • Fixed

    Fixes an issue where stamp annotations get blurry. (#12981)

2.1.0 - 17 Nov 2017

  • API

    Deprecates PSPDFAnnotationTriggerEventLooseFocus in favor of PSPDFAnnotationTriggerEventLoseFocus. (#13078)

  • Added

    Adds support for proper removal of PSPDFFormElements when calling removeAnnotations:. (#12797)

  • Added

    Adds support for transferring document level JavaScript when processing a document (#12769)

  • Changed

    Improves correctness for JavaScript util.printf call. (#12759)

  • Changed

    Improves reliability when saving documents with broken cross-reference tables. (#12212)

  • Changed

    Improves detection of RichMedia elements and always prefers to show controls for audio-only tracks. (#12986)

  • Changed

    Improves the performance of document outline parsing when the document is very big. (#11854)

  • Fixed

    Fixes the positioning of the underline on text when no ascending characters are present on the line. (#11489)

  • Fixed

    Fixes a problem where some PDF documents may not show every form field element. (#12998)

  • Fixed

    Fixes an rare crash in PSPDFLibraryFileSystemDataSource due to mutation of a set while enumerating it. (#12987)

  • Fixed

    Fixes a potential issue when trying to interact with a form whilst a PSPDFProcessor is in progress. (#12973)

  • Fixed

    Fixes an issue where some highlight annotations were rendered incorrectly in specific PDFs. (#12937)

  • Fixed

    Fixes missing document link action when destination is not defined. (#12917)

  • Fixed

    Fixes an issue with file size when flattening annotations. (#12749)

  • Fixed

    Fixes an issue in the bookkeeping of spread views which resulted in an assertion when looking for a specific page view. (#12654)

  • Fixed

    Fixes an issue where PSPDFProcessor didn’t export some annotations in particular documents. (#11795)

  • Fixed

    Fixes an issue when saving a document that has been restored from a checkpoint. (#12890)

  • Fixed

    Fixes an issue with incorrect tab order in forms. (#12902)

  • Fixed

    Fixes an issue where some flattened documents may not show correctly in third party readers. (#12901)

  • Fixed

    Fixes an issue where actions weren’t properly persisted. (#12884)

  • Fixed

    Fixes an issue when exporting XFDF with non-ascii characters. (#12892)

  • Fixed

    Fixes an issue when the appearance stream of form elements was not correctly reset when applying XFDF values. (#12892)

  • Fixed

    Fixes issues with font selection for non latin languages. (#12297, #11639)

  • Fixed

    Fixes issues when restoring from checkpoints. (#12669)

  • Fixed

    Fixes an issue where text in some form fields may be cut. (#12494 and #11287)

  • Fixed

    Fixes an issue rendering text while zoomed in specific documents. (#12392)

  • Fixed

    Fixes an issue where underline annotations and text extraction may not work correctly for some documents. (#12070)

  • Fixed

    Fixes an issue where the leading zero was not displayed when formatting a number. (#12565)

  • Fixed

    Fixes an issue where some annotations may not be shown even when they are present in a document. (#12295)

2.0.1 - 7 Oct 2017

  • Removed

    Removes unneeded files from PSPDFKit.framework.

2.0.0 - 6 Oct 2017

See the announcement post.

  • API

    Removes most PSPDFDocument initializers and all class factory methods, in favor of just the flexible initWithDataProviders: and the convenient initWithURL:. A full list of migration strategies for each method can be found in the migration guide. (#12087)

  • API

    Removes the baseURL and files properties from PSPDFDocument. (#12087)

  • API

    Adds an options parameter to the PSPDFDocument save methods, which means the alwaysRewriteOnSave property has been replaced by PSPDFDocumentSaveOptionForceRewrite. See the Document Save Options section in the migration guide for more details. (#8297)

  • API

    Renames PSPDFProcessorSaveOptions to PSPDFDocumentSecurityOptions and renames related API. See the Document Save Options section in the migration guide for a full list of API changes. (#8297)

  • API

    Removes disk cache strategy and page index parameters from PSPDFCache caching methods. (#11669)

  • API

    Renames the PSPDFDataProvider protocol to PSPDFDataProviding and adds more specialized protocols for file-backed data providers. Custom data providers can cooperate with PSPDFKit to support file coordination. (#11199)

  • API

    The parameters of the PSPDFFileCoordinationDelegate methods now conform to PSPDFCoordinatedFileDataProviding instead of NSFilePresenter. (#11199)

  • API

    PSPDFXFDFParser and PSPDFXFDFWriter now use PSPDFDataProviding and PSPDFDataSink instead of a NSInputStream and NSOutputStream. (#11693)

  • API

    Prefix changes: Renames isAnnotationsEnabled to areAnnotationsEnabled, isBookmarksEnabled to areBookmarksEnabled, isPageLabelsEnabled to arePageLabelsEnabled and isFormsEnabled to areFormsEnabled on PSPDFDocument. (#9742)

  • API

    Renames PSPDFUndoProtocol to PSPDFUndoSupport. (#11237)

  • API

    Renames -[PSPDFDocument documentByAppendingObjects:] to documentByAppendingDataProviders: and this array can no longer contain instances of NSString, NSURL, or NSData. (#12087)

  • API

    Renames the dataProviderArray property on PSPDFDocument to dataProviders. (#12087)

  • API

    Removes the contentSignatures property from PSPDFDocument and adds a signature property to the PSPDFDataProviding protocol. (#12087)

  • API

    PSPDFRenderTask can now fail. There is a new delegate method renderTask:didFailWithError:, and the completionHandler is now passed either an image or an error. (#11500)

  • API

    Renames the class PSPDFAbstractTextOverlayAnnotations to PSPDFMarkupAnnotation. (#10182)

  • API

    Removes -[PSPDFAnnotation isFixedSize]. (#12007)

  • API

    Renames PSPDFileCoordinationDelegate to PSPDFFileCoordinationDelegate. (#11765)

  • API

    Removes -[PSPDFSignatureFormElement drawArrowWithText:andColor:inContext:] subclassing hook. (#12083)

  • API

    Removes document unrelated callback methods from PSPDFDocumentDelegate: pdfDocument:didRenderPageAtIndex:inContext:withSize:clippedToRect:annotations:options:, pdfDocument:provider:shouldSaveAnnotations:, pdfDocument:didSaveAnnotations:, pdfDocument:failedToSaveAnnotations:error:, pdfDocument:underlyingFileDidChange:. (#12178)

  • API

    Replaces -[PSPDFLibrary updateIndex] with -[PSPDFLibrary updateIndexWithCompletionHandler:]. (#11509)

  • API

    Removes metadata handling from PSPDFLibrary. (#12261)

  • API

    Replaces annotationsByDetectingLinkTypes:forPagesInRange:options:progress:error: with annotationsByDetectingLinkTypes:forPagesAtIndexes:options:progress:error:. (#11502)

  • Added

    Adds Document Checkpointing to recover changes to documents that may not have been saved. (#8471)

  • Added

    Adds new PSPDFSignatureAppearance class, which allows you to configure the appearance of digital signatures in a document. (#980)

  • Added

    Adds a PSPDFSignatureBiometricProperties class, which allows you to store and recover encrypted biometric information about a handwritten digital signature. (#980)

  • Added

    Adds signFormElement:withCertificate:writeToDataSink:withAppearance:completionBlock: to PSPDFSigner to allow signing documents to a generic PSPDFDataSink. (#8879 and #11267)

  • Added

    Adds creation methods for PSPDFFormField subclasses allowing you to create new form fields. (#12056)

  • Added

    Adds removeFormElements:error: and removeFormFields:error: to PSPDFFormParser. This allows removing of either form elements or form fields. (#11928)

  • Added

    Adds support for changing many PSPDFFormField properties that were read-only before. (#12157)

  • Added

    Adds support for setting any PDF as an appearance stream on an annotation using the PSPDFAppearanceStreamGenerator protocol. (#11428)

  • Added

    Adds PSPDFAnnotationProviderDelegate for callback methods related to annotation saving. (#12178)

  • Added

    Adds outline property to PSPDFDocument, used for getting the documents’ outline. (#11801)

  • Added

    Adds support for AES encryption when saving or processing a document. (#4420)

  • Changed

    Improves how PSPDFLibrary deals with long running indexing tasks. See PSPDFLibrary.automaticallyPauseLongRunningTasks. (#12158)

  • Changed

    Improves progress handling by automatically canceling active document progress when all data provider progresses are canceled. (V#916)

  • Changed

    Improves library updates by making them completely asynchronous. (#11509)

  • Changed

    Improves exact phrase matching in PSPDFLibrary. (#12261)

  • Changed

    Improves XFDF performance and compliance. (#11693)

  • Changed

    Changes -[PSPDFDocument addAnnotations:options:] and -[PSPDFDocument removeAnnotations:options:] to accept options dictionaries with keys of type NSString. (#12008)

  • Changed

    Implements setMaxLength: for PSPDFFormElement. (#11834)

  • Changed

    The minimumSize property of PSPDFAnnotation has been changed from 32 to 16. (#11871)

  • Fixed

    Fixes an issue saving an original document after signing it. (#11911)

  • Fixed

    Fixes potential file coordinator races. (#11938, #11206)

  • Fixed

    Fixes an issue when rendering decomposed UTF-8 strings (#11985)

  • Fixed

    Fixes an issue in our KVO helper that could cause a recursive locking abort. This only was discovered with custom code and doesn’t affect default usage. (rdar://34307466, #11990)

  • Fixed

    Fixes an issue that prevented modifications to compareOptions for manual text searching (#12047).

  • Fixed

    Fixes an issue where a digital signature field could not be properly deleted (#12082).

  • Fixed

    Fixes an issue where indexing wasn’t stopped when the application gets terminated. (#12215)

  • Fixed

    Fixes a cosmetic issue where an ink signature field may show as unsigned (#12127).

  • Fixed

    Fixes an issue where flattening a document may generate warnings when it is open in third party readers. (#12066)

  • Changed

    Improves performance for hit-testing ink annotations. (#11858)

  • Changed

    Improves apperance stream generation to not have extra space after non-latin characters in form fields. (#11874)

  • Fixed

    Fixes an issue with recreating AVPlayer and AVPlayerItem when it was in an error state. (#11864)

  • Fixed

    Fixes an infinite recursion when describing certain NSValueTransformer instances. (#11881)

  • Fixed

    Fixes a rare crash when saving. (#11861)

  • Changed

    Improves performance for loading and interacting with complex forms. (#11389)

  • Changed

    Improves the eraser radius calculations. (#11803)

  • Fixed

    Fixes a stamp annotation quality degradation issue for images after moving/resizing. (#11625)

  • Fixed

    Fixes a font selection issue with documents using the Courier font. (#11228)

  • Fixed

    Fixes an issue where the selected property of annotation views was not set correctly. (#11687)

  • Fixed

    Fixes a layout issue when moving knobs of callout annotation that could happen in rare cases. (#9750)

  • Fixed

    Fixes an issue where documents could sometimes end up locked after saving when an owner-password is set. (V#1121)

  • Fixed

    Fixes an issue where the document cache was not properly invalidated when saving manually via PSPDFDocumentEditor. (#11767)

  • Fixed

    Fixes PSPDFMediaPlayerController not behaving correctly in some cases when a subclass exists. (#11671)

  • Fixed

    Fixes an issue in the sample catalog that made the subclassing category not show up. (#11707)

  • API

    Changes the object of PSPDFMediaPlayerControllerPlayback* notifications from PSPDFGalleryVideoItem to PSPDFMediaPlayerController. (#11549)

  • Added

    Adds support for external named destinations in PSPDFRemoteGoToAction. (#11320)

  • Changed

    Allows backwards selection of text when creating markup annotations. (#11583)

  • Changed

    Improves the rendering of polygon annotations. (#11620)

  • Changed

    Improves form text rendering with non-latin characters. (#10996)

  • Fixed

    Fixes an issue where videos were shown fullscreen when screen mirroring was enabled. (#11549)

  • Fixed

    Fixes a color management issue for file annotations. (#11488)

  • Fixed

    Fixes an issue where annotation assets might have gotten overwritten in some cases. (#11581)

  • Fixed

    Fixes incorrect default resizing behavior for freetext and callout annotations. (#11630)

  • Fixed

    Fixes a leaking color space when encoding images. (#11512)

  • Fixed

    Fixes an issue where an image annotation with a note could lose the image data. (#11652)

1.2.0 - 21 Jul 2017

  • API

    Adds option to configure flattening or embedding of form elements to PSPDFProcessorConfiguration. (#11096)

  • API

    Introduces failable annotationsByDetectingLinkTypes:forPagesInRange:options:progress:error: instead of annotationsFromDetectingLinkTypes:pagesInRange:options:progress:error:. (#11125)

  • API

    Changes isFixedSize and fixedSize to be instance properties on PSPDFAnnotation. (#10931)

  • API

    Moves allowedImageQualities to PSPDFImagePickerController from PSPDFAnnotationStateManager. (#11172)

  • API

    Audit and update several nullability declarations for correctness. (#11183)

  • API

    The method extractImageFromAppearanceStreamWithTransform:error: on PSPDFAnnotation has been removed. Use the equivalent loadImageWithTransform:error: method on PSPDFStampAnnotation. The call was not useful for other annotation types. (#11185)

  • API

    PSPDFDocument’s undoController is now declared as nullable and set to nil when undoEnabled is disabled shortly after document initialization. (#11476)

  • Added

    Adds support for flattening signature annotations. (#11096)

  • Added

    Adds Adobe root CA by default when using PSPDFSignatureManager, so that documents can be more easily verified the same way as on desktop readers. (#11240)

  • Changed

    The global SQLite message logger now filters out irrelevant common known logs from iOS like cfurl_cache_response. (#10890)

  • Changed

    Improves certificate validation for digital signatures. (#11128)

  • Changed

    Improves support for more types of certificates in digital signatures. (#11083)

  • Changed

    Improves RTL language support in forms. (#11013)

  • Changed

    Improves memory management when rendering forms. (#11176)

  • Changed

    Improves support for file presenter based document deletion notifications in multi data provider documents. (#10362)

  • Fixed

    Fixes very rare issue on saving files repeatedly. (#9477)

  • Fixed

    Fixes a problem while importing some kind of certificates for digital signatures. (#11120)

  • Fixed

    Fixes an issue where one PSPDFSignerError had an invalid error code. (#11186)

  • Fixed

    Fixes some crashes when signing a particular type of PDF documents. (#11285)

  • Fixed

    Fixes an issue where signatures could show the certificate issuer name instead of the certificate subject name. (#11368)

  • Fixed

    Fixes a rare race condition in the render queue that could occur when using any kind of drawing based annotation with the eraser tool while a page rendering completes. (#11326)

  • Fixed

    Fixes an issue where some digital signatures couldn’t be open in Adobe Acrobat. (#11390)

  • Fixed

    Fixes an issue with encoding preloaded monochrom images. (#10985)

  • Fixed

    Fixes a rare deadlock related to undo operations. (#11479)

  • Fixed

    Fixes a data race in PSPDFRenderQueue. (#11494)

  • Removed

    Deprecates annotationsFromDetectingLinkTypes:pagesInRange:options:progress:error:. (#11125)

  • Removed

    Deprecates fixed size class methods on PSPDFAnnotation in favor of instance properties. (#10931)

  • Removed

    Deprecates the undoEnabled property on PSPDFUndoController. (#11476)

1.1.0 - 26 Jun 2017

This release removes the embedded OpenSSL. This results in a smaller binary and faster link times.

  • Added

    Adds new digital signature implementation that no longer relies on OpenSSL. (#10864)

  • Added

    Adds support for filtering watermarks (enabled by default). See PSPDFDocument.isWatermarkFilterEnabled. (#8144, #10874)

  • Changed

    Various refinements around nullability that have been discovered with Xcode 9’s Undefined Behavior Sanitizer. (#10876)

  • Changed

    Improves support for form filling via JavaScript. (#10979)

  • Changed

    Improves documentation of the digital signatures feature. (#11027)

  • Fixed

    Fixes issue while saving PDF files. (#10849)

  • Fixed

    Fixes a leak when rendering a bitmap. (#10847)

  • Fixed

    Fixes an issue where documents with incorrectly created annotations could cause infinite loops. (#10640)

  • Fixed

    Fixes rare file coordination related crashes and deadlocks. (#10935)

  • Fixed

    Fixes an issue where the bookmark migration could deadlock in some configurations. (#10857)

  • Fixed

    Fixes an issue with digital signatures where a name and date was required. (#7892)

  • Fixed

    Fixes an issue where embedded files with very long names might fail to be extracted correctly. (#11028)

  • Fixed

    Fixes an issue with digital signatures where some valid signatures are not recognized by Adobe Reader. (#9565)

  • Fixed

    Fixes an issue where the cache is not properly invalidated if saving a document fails. (#11022)

1.0.0 - 25 May 2017

See the announcement post.

  • Changed

    First public release.