Skip to content

Commit 12e4d5b

Browse files
author
PSPDFKit
committed
Release 3.9.0
1 parent 05b38da commit 12e4d5b

File tree

66 files changed

+1637
-587
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+1637
-587
lines changed

CHANGELOG.md

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,22 @@
11
## Newest Release
22

3+
### 3.9.0 - 22 Mar 2024
4+
5+
- Adds annotation toolbar customization for iOS and Android. (J#HYB-209)
6+
- Adds support for `MeasurementValueConfiguration` to replace `setMeasurementScale` and `setMeasurementPrecision`. (J#HYB-206)
7+
- Updates for PSPDFKit 13.3.3 for iOS. (#43792)
8+
- Updates for PSPDFKit 2024.1.2 for Android. (#43792)
9+
- Fixes events callback functions not being triggered on Web. (J#HYB-221)
10+
- Fixes blank page when an annotation toolbar item is selected on Web. (#43792)
11+
12+
## Previous Releases
13+
314
### 3.8.2 - 27 Feb 2024
415

516
- Updates for PSPDFKit 13.3.1 for iOS. (#43550)
617
- Fixes issue where PSPDFKit for Flutter does not work on web with Flutter SDK version 13.19.0 (J#HYB-216)
718
- Fixes issue where annotation toolbar items are not being displayed on Web. (J#HYB-217)
819

9-
## Previous Releases
10-
1120
### 3.8.1 - 14 Feb 2024
1221
- Fixes callbacks when Pspdfkit.present() is used. (J#HYB-204)
1322

android/build.gradle

+5
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,9 @@ dependencies {
5959
implementation "com.pspdfkit:$pspdfkitMavenModuleName:$pspdfkitVersion"
6060
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
6161
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
62+
implementation "androidx.compose.material:material:1.6.3"
63+
implementation "androidx.constraintlayout:constraintlayout:2.1.4"
64+
implementation "androidx.constraintlayout:constraintlayout-compose:1.0.1"
65+
implementation "androidx.compose.foundation:foundation:1.6.3"
66+
implementation "androidx.compose.ui:ui:1.6.3"
6267
}

android/config.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ if (pspdfkitMavenUrl == null || pspdfkitMavenUrl == '') {
3838

3939
ext.pspdfkitVersion = localProperties.getProperty('pspdfkit.version')
4040
if (pspdfkitVersion == null || pspdfkitVersion == '') {
41-
ext.pspdfkitVersion = '2024.1.0'
41+
ext.pspdfkitVersion = '2024.1.2'
4242
}
4343

4444
ext.pspdfkitMavenModuleName = 'pspdfkit'
@@ -55,5 +55,5 @@ ext.pspdfkitFlutterVersion = pubspecYaml.version
5555
ext.androidCompileSdkVersion = 34
5656
ext.androidMinSdkVersion = 21
5757
ext.androidTargetSdkVersion = 34
58-
ext.androidGradlePluginVersion = '8.1.2'
58+
ext.androidGradlePluginVersion = '8.2.2'
5959
ext.kotlinVersion = "1.8.10"

android/src/main/AndroidManifest.xml

+4
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,9 @@
1515
<activity
1616
android:name="com.pspdfkit.flutter.pspdfkit.FlutterPdfActivity"
1717
android:windowSoftInputMode="adjustNothing" />
18+
19+
<meta-data
20+
android:name="pspdfkit_automatic_initialize"
21+
android:value="false" />
1822
</application>
1923
</manifest>

android/src/main/java/com/pspdfkit/flutter/pspdfkit/AnnotationConfigurationAdaptor.kt

+16-45
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,22 @@ import android.content.Context
1313
import android.graphics.Color
1414
import androidx.core.util.Pair
1515
import com.pspdfkit.annotations.AnnotationType
16-
import com.pspdfkit.annotations.AnnotationType.*
16+
import com.pspdfkit.annotations.AnnotationType.CIRCLE
17+
import com.pspdfkit.annotations.AnnotationType.FILE
18+
import com.pspdfkit.annotations.AnnotationType.FREETEXT
19+
import com.pspdfkit.annotations.AnnotationType.HIGHLIGHT
20+
import com.pspdfkit.annotations.AnnotationType.INK
21+
import com.pspdfkit.annotations.AnnotationType.LINE
22+
import com.pspdfkit.annotations.AnnotationType.NOTE
23+
import com.pspdfkit.annotations.AnnotationType.POLYGON
24+
import com.pspdfkit.annotations.AnnotationType.POLYLINE
25+
import com.pspdfkit.annotations.AnnotationType.REDACT
26+
import com.pspdfkit.annotations.AnnotationType.SOUND
27+
import com.pspdfkit.annotations.AnnotationType.SQUARE
28+
import com.pspdfkit.annotations.AnnotationType.SQUIGGLY
29+
import com.pspdfkit.annotations.AnnotationType.STAMP
30+
import com.pspdfkit.annotations.AnnotationType.STRIKEOUT
31+
import com.pspdfkit.annotations.AnnotationType.UNDERLINE
1732
import com.pspdfkit.annotations.LineEndType
1833
import com.pspdfkit.annotations.configuration.AnnotationConfiguration
1934
import com.pspdfkit.annotations.configuration.AnnotationProperty
@@ -33,7 +48,6 @@ import com.pspdfkit.annotations.configuration.SoundAnnotationConfiguration
3348
import com.pspdfkit.annotations.configuration.StampAnnotationConfiguration
3449
import com.pspdfkit.annotations.stamps.StampPickerItem
3550
import com.pspdfkit.configuration.annotations.AnnotationAggregationStrategy
36-
import com.pspdfkit.flutter.pspdfkit.util.MeasurementHelper
3751
import com.pspdfkit.ui.fonts.Font
3852
import com.pspdfkit.ui.inspector.views.BorderStylePreset
3953
import com.pspdfkit.ui.special_mode.controller.AnnotationTool
@@ -69,8 +83,6 @@ const val MIN_TEXT_SIZE = "minimumFontSize"
6983
const val MAX_TEXT_SIZE = "maximumFontSize"
7084
const val DEFAULT_FONT = "fontName"
7185
const val AVAILABLE_FONTS = "availableFonts"
72-
const val DEFAULT_SCALE = "defaultScale"
73-
const val DEFAULT_PRECISION = "defaultPrecision"
7486
const val OVERLAY_TEXT = "overlayText"
7587
const val REPEAT_OVERLAY_TEXT = "repeatOverlayText"
7688

@@ -307,21 +319,6 @@ class AnnotationConfigurationAdaptor {
307319
)
308320
}
309321

310-
DEFAULT_SCALE -> (configuration[key] as Map<String, Any>?)?.let { scaleObject ->
311-
val scale = MeasurementHelper.convertScale(scaleObject)
312-
if (scale != null) {
313-
builder.setDefaultScale(scale)
314-
}
315-
}
316-
317-
DEFAULT_PRECISION -> configuration[key].let { precisionString ->
318-
val precision =
319-
MeasurementHelper.convertPrecision(precisionString as String)
320-
if (precision != null) {
321-
builder.setDefaultPrecision(precision)
322-
}
323-
}
324-
325322
MAX_ALPHA -> builder.setMaxAlpha((configuration[key] as Double).toFloat())
326323
MIN_ALPHA -> builder.setMinAlpha((configuration[key] as Double).toFloat())
327324
MAX_THICKNESS -> builder.setMaxThickness((configuration[key] as Double).toFloat())
@@ -375,19 +372,6 @@ class AnnotationConfigurationAdaptor {
375372
)
376373
}
377374

378-
DEFAULT_SCALE -> configuration[key].let { scaleObject ->
379-
val scale = MeasurementHelper.convertScale(scaleObject as Map<String, Any>)
380-
if (scale != null)
381-
builder.setDefaultScale(scale)
382-
}
383-
384-
DEFAULT_PRECISION -> (configuration[key])?.let { precisionString ->
385-
val precision =
386-
MeasurementHelper.convertPrecision(precisionString as String)
387-
if (precision != null)
388-
builder.setDefaultPrecision(precision)
389-
}
390-
391375
MAX_ALPHA -> builder.setMaxAlpha((configuration[key] as Double).toFloat())
392376
MIN_ALPHA -> builder.setMinAlpha((configuration[key] as Double).toFloat())
393377
MAX_THICKNESS -> builder.setMaxThickness((configuration[key] as Double).toFloat())
@@ -441,19 +425,6 @@ class AnnotationConfigurationAdaptor {
441425
)
442426
}
443427

444-
DEFAULT_SCALE -> (configuration[key] as Map<String, Any>?)?.let { scaleObject ->
445-
val scale = MeasurementHelper.convertScale(scaleObject)
446-
if (scale != null)
447-
builder.setDefaultScale(scale)
448-
}
449-
450-
DEFAULT_PRECISION -> configuration[key].let { precisionString ->
451-
val precision =
452-
MeasurementHelper.convertPrecision(precisionString as String)
453-
if (precision != null)
454-
builder.setDefaultPrecision(precision)
455-
}
456-
457428
DEFAULT_LINE_END -> configuration[key].let { lineEndPair ->
458429

459430
builder.setDefaultLineEnds(extractLineEndPair(lineEndPair as String))

android/src/main/java/com/pspdfkit/flutter/pspdfkit/ConfigurationAdapter.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import androidx.annotation.Nullable;
1919
import androidx.annotation.StyleRes;
2020

21+
import com.pspdfkit.annotations.measurements.MeasurementValueConfiguration;
2122
import com.pspdfkit.configuration.PdfConfiguration;
2223
import com.pspdfkit.configuration.activity.PdfActivityConfiguration;
2324
import com.pspdfkit.configuration.activity.ThumbnailBarMode;
@@ -29,13 +30,15 @@
2930
import com.pspdfkit.configuration.settings.SettingsMenuItemType;
3031
import com.pspdfkit.configuration.sharing.ShareFeatures;
3132
import com.pspdfkit.configuration.theming.ThemeMode;
33+
import com.pspdfkit.flutter.pspdfkit.util.MeasurementHelper;
3234
import com.pspdfkit.preferences.PSPDFKitPreferences;
3335
import com.pspdfkit.ui.special_mode.controller.AnnotationTool;
3436

3537
import java.util.ArrayList;
3638
import java.util.EnumSet;
3739
import java.util.HashMap;
3840
import java.util.List;
41+
import java.util.Map;
3942

4043
class ConfigurationAdapter {
4144
private static final String LOG_TAG = "ConfigurationAdapter";
@@ -186,8 +189,7 @@ class ConfigurationAdapter {
186189
private static final String ENABLED_MEASUREMENT_TOOLS = "enableMeasurementTools";
187190
private static final String ENABLE_MAGNIFIER = "enableMagnifier";
188191
private static final String ENABLED_MEASUREMENT_TOOL_SNAPPING = "enableMeasurementToolSnapping";
189-
190-
192+
191193
@NonNull
192194
private final PdfActivityConfiguration.Builder configuration;
193195
@Nullable

android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterInstantPdfActivity.kt

+16
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ package com.pspdfkit.flutter.pspdfkit
1010

1111
import android.os.Bundle
1212
import com.pspdfkit.document.PdfDocument
13+
import com.pspdfkit.flutter.pspdfkit.util.MeasurementHelper
1314
import com.pspdfkit.instant.document.InstantPdfDocument
1415
import com.pspdfkit.instant.exceptions.InstantException
1516
import com.pspdfkit.instant.ui.InstantPdfActivity
@@ -21,6 +22,8 @@ import java.util.concurrent.atomic.AtomicReference
2122
* activity.
2223
*/
2324
class FlutterInstantPdfActivity : InstantPdfActivity() {
25+
26+
2427
override fun onCreate(bundle: Bundle?) {
2528
super.onCreate(bundle)
2629
bindActivity()
@@ -41,6 +44,11 @@ class FlutterInstantPdfActivity : InstantPdfActivity() {
4144
super.onDocumentLoaded(pdfDocument)
4245
val result = loadedDocumentResult.getAndSet(null)
4346
result?.success(true)
47+
measurementValueConfigurations?.forEach {
48+
pdfFragment.let { fragment ->
49+
MeasurementHelper.addMeasurementConfiguration(fragment, it)
50+
}
51+
}
4452
}
4553

4654
override fun onDocumentLoadFailed(throwable: Throwable) {
@@ -99,6 +107,7 @@ class FlutterInstantPdfActivity : InstantPdfActivity() {
99107
}
100108

101109
companion object {
110+
private var measurementValueConfigurations:List<Map<String,Any>>? = null
102111

103112
@JvmStatic
104113
var currentActivity: FlutterInstantPdfActivity? = null
@@ -110,5 +119,12 @@ class FlutterInstantPdfActivity : InstantPdfActivity() {
110119
fun setLoadedDocumentResult(result: MethodChannel.Result?) {
111120
loadedDocumentResult.set(result)
112121
}
122+
123+
@JvmStatic
124+
fun setMeasurementValueConfigurations(configurations: List<Map<String, Any>>?) {
125+
measurementValueConfigurations = configurations
126+
}
113127
}
128+
129+
114130
}

android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfActivity.java

+10-18
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
import androidx.annotation.NonNull;
66
import androidx.annotation.Nullable;
77

8-
import com.pspdfkit.annotations.measurements.MeasurementPrecision;
9-
import com.pspdfkit.annotations.measurements.Scale;
108
import com.pspdfkit.document.PdfDocument;
9+
import com.pspdfkit.flutter.pspdfkit.util.MeasurementHelper;
1110
import com.pspdfkit.ui.PdfActivity;
1211

12+
import java.util.List;
13+
import java.util.Map;
1314
import java.util.concurrent.atomic.AtomicReference;
14-
1515
import io.flutter.plugin.common.MethodChannel.Result;
1616

1717
/**
@@ -23,19 +23,14 @@ public class FlutterPdfActivity extends PdfActivity {
2323
@Nullable private static FlutterPdfActivity currentActivity;
2424
@NonNull private static final AtomicReference<Result> loadedDocumentResult = new AtomicReference<>();
2525

26-
@Nullable private static Scale scale;
27-
@Nullable private static MeasurementPrecision floatPrecision;
26+
@Nullable private static List<Map<String,Object>> measurementValueConfigurations;
2827

2928
public static void setLoadedDocumentResult(Result result) {
3029
loadedDocumentResult.set(result);
3130
}
3231

33-
public static void setMeasurementScale(@Nullable final Scale scale) {
34-
FlutterPdfActivity.scale = scale;
35-
}
36-
37-
public static void setFloatPrecision(@Nullable final MeasurementPrecision floatPrecision) {
38-
FlutterPdfActivity.floatPrecision = floatPrecision;
32+
public static void setMeasurementValueConfigurations(@Nullable final List<Map<String,Object>> configurations) {
33+
measurementValueConfigurations = configurations;
3934
}
4035

4136
@Override
@@ -64,13 +59,10 @@ public void onDocumentLoaded(@NonNull PdfDocument pdfDocument) {
6459
if (result != null) {
6560
result.success(true);
6661
}
67-
68-
if (scale != null) {
69-
pdfDocument.setMeasurementScale(scale);
70-
}
71-
72-
if (floatPrecision != null) {
73-
pdfDocument.setMeasurementPrecision(floatPrecision);
62+
if (measurementValueConfigurations != null && getPdfFragment() !=null) {
63+
for (Map<String, Object> configuration : measurementValueConfigurations) {
64+
MeasurementHelper.addMeasurementConfiguration(getPdfFragment(), configuration);
65+
}
7466
}
7567
}
7668

Original file line numberDiff line numberDiff line change
@@ -1,34 +1,14 @@
11
package com.pspdfkit.flutter.pspdfkit
22

3-
import com.pspdfkit.annotations.measurements.MeasurementPrecision
4-
import com.pspdfkit.annotations.measurements.Scale
53
import com.pspdfkit.document.PdfDocument
4+
import com.pspdfkit.flutter.pspdfkit.util.MeasurementHelper
65
import com.pspdfkit.ui.PdfUiFragment
76

87
class FlutterPdfUiFragment : PdfUiFragment() {
98

10-
private var scale: Scale? = null
11-
private var precision: MeasurementPrecision? = null
12-
139
override fun onDocumentLoaded(document: PdfDocument) {
1410
super.onDocumentLoaded(document)
1511
// Notify the Flutter PSPDFKit plugin that the document has been loaded.
1612
EventDispatcher.getInstance().notifyDocumentLoaded(document)
17-
// We can register interest in newly created annotations so we can easily pick up measurement information.
18-
if (scale != null) {
19-
document.measurementScale = scale
20-
}
21-
if (precision != null) {
22-
document.measurementPrecision = precision
23-
}
24-
}
25-
26-
fun setMeasurementScale(scale: Scale?) {
27-
this.scale = scale
2813
}
29-
30-
fun setMeasurementPrecision(precision: MeasurementPrecision?) {
31-
this.precision = precision
32-
}
33-
3414
}

android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragmentCallbacks.kt

+17-2
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,31 @@ package com.pspdfkit.flutter.pspdfkit
33
import android.content.Context
44
import androidx.fragment.app.Fragment
55
import androidx.fragment.app.FragmentManager
6+
import com.pspdfkit.annotations.measurements.MeasurementValueConfiguration
7+
import com.pspdfkit.document.PdfDocument
8+
import com.pspdfkit.flutter.pspdfkit.util.MeasurementHelper
9+
import com.pspdfkit.listeners.SimpleDocumentListener
10+
import com.pspdfkit.ui.PdfFragment
611

7-
class FlutterPdfUiFragmentCallbacks: FragmentManager.FragmentLifecycleCallbacks() {
8-
12+
class FlutterPdfUiFragmentCallbacks(val measurementConfigurations: List<Map<String, Any>>?): FragmentManager.FragmentLifecycleCallbacks() {
13+
final
914
override fun onFragmentAttached(
1015
fm: FragmentManager,
1116
f: Fragment,
1217
context: Context
1318
) {
1419
if (f.tag?.contains("PSPDFKit.Fragment") == true) {
1520
EventDispatcher.getInstance().notifyPdfFragmentAdded()
21+
val pdfFragment = f as PdfFragment
22+
23+
pdfFragment.addDocumentListener( object : SimpleDocumentListener() {
24+
override fun onDocumentLoaded(document: PdfDocument) {
25+
if (measurementConfigurations == null) return
26+
measurementConfigurations.forEach {
27+
MeasurementHelper.addMeasurementConfiguration(pdfFragment, it)
28+
}
29+
}
30+
})
1631
}
1732
}
1833
}

0 commit comments

Comments
 (0)