From 2ff12981d37f7c1bc88f9d337c403035cbf51530 Mon Sep 17 00:00:00 2001
From: Mohamed <mohamed.metwalli@sap.com>
Date: Thu, 6 May 2021 20:16:23 +0200
Subject: [PATCH] Device agnostic PDF size (EXPOSUREAPP-6696) (#3095)

* Resize PDF

* Update QrCodePosterViewModel.kt

* lint

* Scale canvas down for better quality

* Update QrCodePosterViewModel.kt
---
 .../organizer/poster/QrCodePosterFragment.kt  |  2 +-
 .../organizer/poster/QrCodePosterViewModel.kt | 19 +++++++++++++++----
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/organizer/poster/QrCodePosterFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/organizer/poster/QrCodePosterFragment.kt
index a38a3c447..0d7b28cd6 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/organizer/poster/QrCodePosterFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/organizer/poster/QrCodePosterFragment.kt
@@ -151,7 +151,7 @@ class QrCodePosterFragment : Fragment(R.layout.qr_code_poster_fragment), AutoInj
                 getString(R.string.app_name),
                 PrintingAdapter(file),
                 PrintAttributes.Builder()
-                    .setMediaSize(PrintAttributes.MediaSize.ISO_A3)
+                    .setMediaSize(PrintAttributes.MediaSize.ISO_A4)
                     .build()
             )
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/organizer/poster/QrCodePosterViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/organizer/poster/QrCodePosterViewModel.kt
index 4e7facefc..4f903050f 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/organizer/poster/QrCodePosterViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/organizer/poster/QrCodePosterViewModel.kt
@@ -53,10 +53,12 @@ class QrCodePosterViewModel @AssistedInject constructor(
             val file = File(directory, "cwa-qr-code.pdf")
 
             val weakView = weakViewRef.get() ?: return@launch // View is not existing anymore
-            val pageInfo = PdfDocument.PageInfo.Builder(weakView.width, weakView.height, 1).create()
-
+            val pageInfo = PdfDocument.PageInfo.Builder(A4_WIDTH, A4_HEIGHT, 1).create()
             PdfDocument().apply {
                 startPage(pageInfo).apply {
+                    val sx = A4_WIDTH.toFloat() / weakView.width
+                    val sy = A4_HEIGHT.toFloat() / weakView.height
+                    canvas.scale(sx, sy)
                     weakView.draw(canvas)
                     finishPage(this)
                 }
@@ -70,7 +72,7 @@ class QrCodePosterViewModel @AssistedInject constructor(
             sharingIntent.postValue(fileSharing.getFileIntentProvider(file, traceLocation().description))
         } catch (e: Exception) {
             Timber.d(e, "Creating pdf failed")
-            e.report(ExceptionCategory.INTERNAL)
+            e.report(ExceptionCategory.UI)
         }
     }
 
@@ -96,7 +98,7 @@ class QrCodePosterViewModel @AssistedInject constructor(
         } catch (e: Exception) {
             Timber.d(e, "Generating poster failed")
             posterLiveData.postValue(Poster())
-            e.report(ExceptionCategory.INTERNAL)
+            e.report(ExceptionCategory.UI)
         }
     }
 
@@ -108,6 +110,15 @@ class QrCodePosterViewModel @AssistedInject constructor(
             traceLocationId: Long
         ): QrCodePosterViewModel
     }
+
+    companion object {
+        /**
+         * A4 size in PostScript
+         * @see <a href="https://www.cl.cam.ac.uk/~mgk25/iso-paper-ps.txt">Iso-paper-ps</a>
+         */
+        private const val A4_WIDTH = 595 // PostScript
+        private const val A4_HEIGHT = 842 // PostScript
+    }
 }
 
 data class Poster(
-- 
GitLab