diff --git a/android/build.gradle b/android/build.gradle
index 8990414..86dae0f 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -2,14 +2,14 @@ group 'com.afur.flutter_html_to_pdf'
version '1.0-SNAPSHOT'
buildscript {
- ext.kotlin_version = '1.3.50'
+ ext.kotlin_version = '1.9.0'
repositories {
google()
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:4.1.0'
+ classpath 'com.android.tools.build:gradle:7.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
@@ -25,8 +25,8 @@ apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
android {
- compileSdkVersion 30
-
+ compileSdkVersion 34
+ namespace "com.afur.flutter_html_to_pdf"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index 3c9d085..cb24abd 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
diff --git a/android/src/main/kotlin/com/afur/flutter_html_to_pdf/HtmlToPdfConverter.kt b/android/src/main/kotlin/com/afur/flutter_html_to_pdf/HtmlToPdfConverter.kt
index 8d6144e..eb8d5b1 100644
--- a/android/src/main/kotlin/com/afur/flutter_html_to_pdf/HtmlToPdfConverter.kt
+++ b/android/src/main/kotlin/com/afur/flutter_html_to_pdf/HtmlToPdfConverter.kt
@@ -41,7 +41,7 @@ class HtmlToPdfConverter {
val attributes = PrintAttributes.Builder()
.setMediaSize(PrintAttributes.MediaSize.ISO_A4)
.setResolution(PrintAttributes.Resolution("pdf", "pdf", 600, 600))
- .setMinMargins(PrintAttributes.Margins.NO_MARGINS).build()
+ .setMinMargins(PrintAttributes.Margins(50, 50, 50, 50)).build()
val printer = PdfPrinter(attributes)
diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle
index b0ed919..1b3e949 100644
--- a/example/android/app/build.gradle
+++ b/example/android/app/build.gradle
@@ -26,7 +26,7 @@ apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
- compileSdkVersion 30
+ compileSdkVersion 33
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
@@ -44,7 +44,7 @@ android {
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.afur.flutter_html_to_pdf_example"
- minSdkVersion 16
+ minSdkVersion 21
targetSdkVersion 30
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
diff --git a/example/android/build.gradle b/example/android/build.gradle
index ed45c65..ca618df 100644
--- a/example/android/build.gradle
+++ b/example/android/build.gradle
@@ -1,12 +1,12 @@
buildscript {
- ext.kotlin_version = '1.3.50'
+ ext.kotlin_version = '1.7.20'
repositories {
google()
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:4.1.0'
+ classpath 'com.android.tools.build:gradle:7.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
@@ -24,6 +24,6 @@ subprojects {
project.evaluationDependsOn(':app')
}
-task clean(type: Delete) {
+tasks.register("clean", Delete) {
delete rootProject.buildDir
}
diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58a..cc5527d 100644
--- a/example/android/gradle/wrapper/gradle-wrapper.properties
+++ b/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist
index 9367d48..9625e10 100644
--- a/example/ios/Flutter/AppFrameworkInfo.plist
+++ b/example/ios/Flutter/AppFrameworkInfo.plist
@@ -21,6 +21,6 @@
CFBundleVersion
1.0
MinimumOSVersion
- 8.0
+ 11.0
diff --git a/example/ios/Podfile b/example/ios/Podfile
index 1e8c3c9..88359b2 100644
--- a/example/ios/Podfile
+++ b/example/ios/Podfile
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
-# platform :ios, '9.0'
+# platform :ios, '11.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj
index c8e59bd..ea369d5 100644
--- a/example/ios/Runner.xcodeproj/project.pbxproj
+++ b/example/ios/Runner.xcodeproj/project.pbxproj
@@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 46;
+ objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
@@ -164,7 +164,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0910;
+ LastUpgradeCheck = 1300;
ORGANIZATIONNAME = "The Chromium Authors";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
@@ -210,10 +210,12 @@
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
+ "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
@@ -229,15 +231,15 @@
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
- "${BUILT_PRODUCTS_DIR}/flutter_full_pdf_viewer/flutter_full_pdf_viewer.framework",
"${BUILT_PRODUCTS_DIR}/flutter_html_to_pdf/flutter_html_to_pdf.framework",
- "${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework",
+ "${BUILT_PRODUCTS_DIR}/flutter_pdfview/flutter_pdfview.framework",
+ "${BUILT_PRODUCTS_DIR}/path_provider_foundation/path_provider_foundation.framework",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_full_pdf_viewer.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_html_to_pdf.framework",
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_pdfview.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider_foundation.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
@@ -246,6 +248,7 @@
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
@@ -353,7 +356,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -374,7 +377,10 @@
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
@@ -432,7 +438,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -479,7 +485,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
@@ -501,7 +507,10 @@
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
@@ -529,7 +538,10 @@
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index 786d6aa..f156018 100644
--- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -1,6 +1,6 @@
UIViewControllerBasedStatusBarAppearance
+ CADisableMinimumFrameDurationOnPhone
+
+ UIApplicationSupportsIndirectInputEvents
+
diff --git a/example/lib/main.dart b/example/lib/main.dart
index 0dc3237..76eb9fe 100644
--- a/example/lib/main.dart
+++ b/example/lib/main.dart
@@ -2,8 +2,9 @@ import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
-import 'package:flutter_full_pdf_viewer/flutter_full_pdf_viewer.dart';
+// import 'package:flutter_full_pdf_viewer/flutter_full_pdf_viewer.dart';
import 'package:flutter_html_to_pdf/flutter_html_to_pdf.dart';
+import 'package:flutter_pdfview/flutter_pdfview.dart';
import 'package:path_provider/path_provider.dart';
void main() {
@@ -18,7 +19,9 @@ class MyApp extends StatefulWidget {
}
class _MyAppState extends State {
- String generatedPdfFilePath;
+ String? generatedPdfFilePath;
+
+ Completer? _pdfViewController = Completer();
@override
void initState() {
@@ -26,7 +29,7 @@ class _MyAppState extends State {
generateExampleDocument();
}
- Future generateExampleDocument() async {
+ Future generateExampleDocument() async {
final htmlContent = """
@@ -71,8 +74,10 @@ class _MyAppState extends State {
final targetPath = appDocDir.path;
final targetFileName = "example-pdf";
- final generatedPdfFile = await FlutterHtmlToPdf.convertFromHtmlContent(htmlContent, targetPath, targetFileName);
+ final generatedPdfFile = await FlutterHtmlToPdf.convertFromHtmlContent(
+ htmlContent, targetPath, targetFileName);
generatedPdfFilePath = generatedPdfFile.path;
+ return generatedPdfFilePath;
}
@override
@@ -86,7 +91,49 @@ class _MyAppState extends State {
onPressed: () {
Navigator.push(
context,
- MaterialPageRoute(builder: (context) => PDFViewerScaffold(appBar: AppBar(title: Text("Generated PDF Document")), path: generatedPdfFilePath)),
+ MaterialPageRoute(
+ builder: (context) => Scaffold(
+ appBar: AppBar(title: Text("Generated PDF Document")),
+ body: FutureBuilder(
+ future: generateExampleDocument(),
+ builder: (context, snapshot) {
+ if (snapshot.hasData) {
+ return PDFView(
+ filePath: snapshot.data!,
+ enableSwipe: true,
+ swipeHorizontal: true,
+ autoSpacing: false,
+ pageFling: false,
+ onRender: (_pages) {
+ // setState(() {
+ // pages = _pages;
+ // isReady = true;
+ // });
+ },
+ onError: (error) {
+ print(error.toString());
+ },
+ onPageError: (page, error) {
+ print('$page: ${error.toString()}');
+ },
+ onViewCreated:
+ (PDFViewController pdfViewController) {
+ _pdfViewController
+ ?.complete(pdfViewController);
+ },
+ onPageChanged: (int? page, int? total) {
+ print('page change: $page/$total');
+ },
+ );
+ } else if (snapshot.connectionState ==
+ ConnectionState.waiting) {
+ return Center(
+ child: CircularProgressIndicator(),
+ );
+ }
+ return Text('${snapshot.error}');
+ }),
+ )),
);
},
),
diff --git a/example/pubspec.yaml b/example/pubspec.yaml
index 8923a59..39ef471 100644
--- a/example/pubspec.yaml
+++ b/example/pubspec.yaml
@@ -3,17 +3,18 @@ description: Demonstrates how to use the flutter_html_to_pdf plugin.
publish_to: 'none'
environment:
- sdk: ">=2.0.0-dev.68.0 <3.0.0"
+ sdk: ">=3.0.0 <4.0.0"
dependencies:
flutter:
sdk: flutter
- path_provider: ^0.4.1
- flutter_full_pdf_viewer: ^1.0.2
+ path_provider: ^2.0.15
+ # flutter_full_pdf_viewer: ^1.0.2
+ flutter_pdfview: ^1.3.1
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
- cupertino_icons: ^0.1.2
+ cupertino_icons: ^1.0.5
dev_dependencies:
flutter_test:
diff --git a/example/test/widget_test.dart b/example/test/widget_test.dart
index d61f707..2fce191 100644
--- a/example/test/widget_test.dart
+++ b/example/test/widget_test.dart
@@ -13,7 +13,7 @@ import 'package:flutter_html_to_pdf_example/main.dart';
void main() {
testWidgets('Verify Platform version', (WidgetTester tester) async {
// Build our app and trigger a frame.
- await tester.pumpWidget(const MyApp());
+ await tester.pumpWidget( MyApp());
// Verify that platform version is retrieved.
expect(
diff --git a/ios/Classes/PDFCreator.swift b/ios/Classes/PDFCreator.swift
index 41b8e12..3f079bd 100644
--- a/ios/Classes/PDFCreator.swift
+++ b/ios/Classes/PDFCreator.swift
@@ -14,8 +14,10 @@ class PDFCreator {
// assign paperRect and printableRect values
let page = CGRect(x: 0, y: 0, width: 595.2, height: 841.8) // A4, 72 dpi
+ let printable = CGRect(x: 20, y: 50, width: 575.2, height: 720.0)
+
renderer.setValue(page, forKey: "paperRect")
- renderer.setValue(page, forKey: "printableRect")
+ renderer.setValue(printable, forKey: "printableRect")
// create pdf context and draw each page
let pdfData = NSMutableData()
diff --git a/lib/file_utils.dart b/lib/file_utils.dart
index 84ef7d1..fb3342e 100644
--- a/lib/file_utils.dart
+++ b/lib/file_utils.dart
@@ -6,8 +6,8 @@ class FileUtils {
}
static File copyAndDeleteOriginalFile(String generatedFilePath, String targetDirectory, String targetName) {
- final fileOriginal = new File(generatedFilePath);
- final fileCopy = new File('$targetDirectory/$targetName.pdf');
+ final fileOriginal = File(generatedFilePath);
+ final fileCopy = File('$targetDirectory/$targetName.pdf');
fileCopy.writeAsBytesSync(File.fromUri(fileOriginal.uri).readAsBytesSync());
fileOriginal.delete();
return fileCopy;
diff --git a/lib/flutter_html_to_pdf.dart b/lib/flutter_html_to_pdf.dart
index 148ee2e..4a6d25f 100644
--- a/lib/flutter_html_to_pdf.dart
+++ b/lib/flutter_html_to_pdf.dart
@@ -2,11 +2,11 @@ import 'dart:async';
import 'dart:io';
import 'package:flutter/services.dart';
-import 'package:flutter_html_to_pdf/file_utils.dart';
+import 'file_utils.dart';
/// HTML to PDF Converter
class FlutterHtmlToPdf {
- static const MethodChannel _channel = const MethodChannel('flutter_html_to_pdf');
+ static const MethodChannel _channel = MethodChannel('flutter_html_to_pdf');
/// Creates PDF Document from HTML content
/// Can throw a [PlatformException] or (unlikely) a [MissingPluginException] converting html to pdf
diff --git a/pubspec.yaml b/pubspec.yaml
index db314ef..1a7c795 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -4,7 +4,7 @@ version: 0.7.0
homepage: https://github.com/Afur/flutter_html_to_pdf
environment:
- sdk: '>=2.12.0 <3.0.0'
+ sdk: '>=3.0.0 <4.0.0'
flutter: ">=1.12.0"
dependencies: