<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alexandra Grazhevskaja</title>
    <description>The latest articles on DEV Community by Alexandra Grazhevskaja (@grazhevskaja).</description>
    <link>https://dev.to/grazhevskaja</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F198585%2F15acd4de-91cd-454a-87e4-545750af17e1.jpg</url>
      <title>DEV Community: Alexandra Grazhevskaja</title>
      <link>https://dev.to/grazhevskaja</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/grazhevskaja"/>
    <language>en</language>
    <item>
      <title>10 Telegram channels with remote job📢</title>
      <dc:creator>Alexandra Grazhevskaja</dc:creator>
      <pubDate>Tue, 03 Dec 2019 14:24:59 +0000</pubDate>
      <link>https://dev.to/grazhevskaja/10-telegram-channels-with-remote-job-43o9</link>
      <guid>https://dev.to/grazhevskaja/10-telegram-channels-with-remote-job-43o9</guid>
      <description>&lt;p&gt;I would like to share my &lt;strong&gt;top 10 Telegram channels with remote job&lt;/strong&gt;, which I do like and find useful.&lt;/p&gt;

&lt;p&gt;First two are my &lt;strong&gt;favourite ones&lt;/strong&gt;: only the most interesting jobs, nice interface, no spamm, always up-to-date. They are oriented on IT only, so there is no useless information.&lt;/p&gt;

&lt;p&gt;(1). &lt;a href="https://t.me/remotelist"&gt;Remotelist&lt;/a&gt; (1K+) - jobs from &lt;a href="http://remotelist.ru/"&gt;http://remotelist.ru/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;(2). &lt;a href="https://t.me/remoteit"&gt;RemoteIT&lt;/a&gt; (17K+) - manually sorted out jobs from various websites.&lt;/p&gt;

&lt;p&gt;These contain freelance and non-IT jobs as well:&lt;/p&gt;

&lt;p&gt;(3). &lt;a href="https://t.me/digitalbroccoli"&gt;Remote &amp;amp; Freelance&lt;/a&gt; (22K+) - jobs from &lt;a href="http://digitalbroccoli.com/"&gt;http://digitalbroccoli.com/&lt;/a&gt;, a bit spammy, but a lot of different opportunities.&lt;/p&gt;

&lt;p&gt;(4). &lt;a href="https://t.me/itfreelancers"&gt;IT Freelance&lt;/a&gt; (1K+) - short and concrete job description, but not always up-to-date.&lt;/p&gt;

&lt;p&gt;(5). &lt;a href="https://t.me/theyseeku"&gt;Finder.VC&lt;/a&gt; (200K+) - not only IT jobs, but nice interface.&lt;/p&gt;

&lt;p&gt;These two are great aggregators for GameDevs or CryptoDevs:&lt;/p&gt;

&lt;p&gt;(6). &lt;a href="https://t.me/devjobs"&gt;GameDev&lt;/a&gt; (6.4K+) - a really nice channel for GameDevs, nice job description, few spamm.&lt;/p&gt;

&lt;p&gt;(7). &lt;a href="https://t.me/cryptojobswork"&gt;CryptoJobWork&lt;/a&gt; (103K+) - channel for crypto jobs, no spamm, but this is a new channel so we need to give them some time.&lt;/p&gt;

&lt;p&gt;People, who are interested in remote jobs, may take a look on relocation opportunities as well:&lt;/p&gt;

&lt;p&gt;(8). &lt;a href="https://t.me/Relocats"&gt;IT Relocation&lt;/a&gt; (7.8K+) - nice UI, no spamm and carefully sorted out best relocation options.&lt;/p&gt;

&lt;p&gt;(9). &lt;a href="https://t.me/jobs_abroad"&gt;JobsAbroad&lt;/a&gt; (9K+) - this one has less options, but can be also useful.&lt;/p&gt;

&lt;p&gt;And the last one is not about jobs, but about you searching for your dream job. Channel, where you can publish your CV in a nice format:&lt;/p&gt;

&lt;p&gt;(10). &lt;a href="https://t.me/Cvflow"&gt;IT CV&lt;/a&gt; (1K+) - I cannot say how much useful it is, but I saw some really interesting CVs there.&lt;/p&gt;




&lt;p&gt;Lets expand this listing together! What are your favourite Telegram Job Channels?👇👇👇&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
      <category>discuss</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Dev.To Time Limit setting</title>
      <dc:creator>Alexandra Grazhevskaja</dc:creator>
      <pubDate>Mon, 02 Dec 2019 12:34:35 +0000</pubDate>
      <link>https://dev.to/grazhevskaja/dev-to-time-limit-setting-4nj3</link>
      <guid>https://dev.to/grazhevskaja/dev-to-time-limit-setting-4nj3</guid>
      <description>&lt;p&gt;Dev.To is becoming so fascinating, that soon we will need Time Limit setting, like Instagram or others have:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FKAnhmoS.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FKAnhmoS.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dont you think so?😄&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Emoji in presentation?</title>
      <dc:creator>Alexandra Grazhevskaja</dc:creator>
      <pubDate>Mon, 02 Dec 2019 08:52:34 +0000</pubDate>
      <link>https://dev.to/aspose_slides/emoji-in-presentation-4bc</link>
      <guid>https://dev.to/aspose_slides/emoji-in-presentation-4bc</guid>
      <description>&lt;p&gt;Many people love emoji. Many people on Dev.To love emoji. Emoji start to be a part of everything.&lt;/p&gt;

&lt;p&gt;So, I just want to say that &lt;strong&gt;&lt;a href="https://products.aspose.com/slides?utm_source=https://dev.to/grazhevskaja/emoji-in-presentation-with-aspose-slides-3h1k-temp-slug-1587170/&amp;amp;utm_medium=email"&gt;Aspose.Slides&lt;/a&gt;&lt;/strong&gt; supports working with &lt;strong&gt;emoji in presentations&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgflip.com%2F3h3azc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgflip.com%2F3h3azc.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And, even if you need to convert your presentation with emoji whether to image, PDF, SWF or other format - &lt;a href="https://docs.aspose.com/display/slidesnet/Saving%2C+Printing+and+Managing#Saving,PrintingandManaging-Supportforrenderingemojicharacters?utm_source=https://dev.to/grazhevskaja/emoji-in-presentation-with-aspose-slides-3h1k-temp-slug-1587170/&amp;amp;utm_medium=email"&gt;Aspose.Slides will render emoji&lt;/a&gt; with no problem. You dont need to do anything additional for that, just save presentation in the needed format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;Presentation&lt;/span&gt; &lt;span class="n"&gt;pres&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Presentation&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;pres&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Emoji.pptx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SaveFormat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Pdf&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or, you may define emoji &lt;a href="https://docs.aspose.com/display/slidesnet/create+fallback+font?utm_source=https://dev.to/grazhevskaja/emoji-in-presentation-with-aspose-slides-3h1k-temp-slug-1587170/&amp;amp;utm_medium=email"&gt;substitution rules&lt;/a&gt; this way, to be sure how they will substitute each other:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Define fallback fonts&lt;/span&gt;
&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;fontNames&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s"&gt;"Segoe UI Emoji, Segoe UI Symbol"&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Create fallback font rule&lt;/span&gt;
&lt;span class="n"&gt;IFontFallBackRule&lt;/span&gt; &lt;span class="n"&gt;thirdRule&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;FontFallBackRule&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0x1F300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0x1F64F&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fontNames&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The API is available for other languages too: Java, C++, Android, etc.&lt;/p&gt;




&lt;p&gt;Have you ever used emoji in presentations?&lt;br&gt;
Have you ever created your own emoji?👇👇👇&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>beginners</category>
      <category>programming</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Create presentation viewer for your Android📱 [use case]</title>
      <dc:creator>Alexandra Grazhevskaja</dc:creator>
      <pubDate>Fri, 29 Nov 2019 13:34:01 +0000</pubDate>
      <link>https://dev.to/aspose_slides/create-presentation-viewer-for-your-android-use-case-3c7a</link>
      <guid>https://dev.to/aspose_slides/create-presentation-viewer-for-your-android-use-case-3c7a</guid>
      <description>&lt;p&gt;I will show how to create your own mobile presentation viewer with &lt;strong&gt;&lt;a href="https://products.aspose.com/slides/android-java?utm_source=https://dev.to/grazhevskaja/create-presentation-viewer-for-android-3ngj-temp-slug-6238644&amp;amp;utm_medium=email"&gt;Aspose.Slides API for Android&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is the &lt;strong&gt;first article in a series&lt;/strong&gt;, where I will pass you through some trivial and non-trivial scenarious, like: edit and convert presentation from mobile; upload presentation as a web application or add it to &lt;a href="https://dashboard.aspose.cloud/?utm_source=https://dev.to/grazhevskaja/create-presentation-viewer-for-android-3ngj-temp-slug-6238644&amp;amp;utm_medium=email"&gt;Aspose Cloud Storage&lt;/a&gt;; share presentation in various formats; generate unique presenation key; and many others. &lt;/p&gt;

&lt;p&gt;Please stay tuned and share which other cases you are interested to see.👇&lt;/p&gt;

&lt;h2&gt;
  
  
  Presentation viewer for Android:
&lt;/h2&gt;

&lt;p&gt;So, let us start with the first step - basic presentation viewer!👩‍💻&lt;/p&gt;

&lt;p&gt;I will pass you through the key points, while you can find the whole project on &lt;strong&gt;&lt;a href="https://github.com/agrazhevskaja/aspose-slides-use-cases/tree/master/slides-android-demo-app-develop?utm_source=https://dev.to/grazhevskaja/create-presentation-viewer-for-android-3ngj-temp-slug-6238644&amp;amp;utm_medium=email"&gt;GitHub&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open &lt;a href="https://developer.android.com/guide" rel="noopener noreferrer"&gt;Android Studio&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://downloads.aspose.com/slides/androidjava?utm_source=https://dev.to/grazhevskaja/create-presentation-viewer-for-android-3ngj-temp-slug-6238644&amp;amp;utm_medium=email"&gt;Install&lt;/a&gt;&lt;/strong&gt; latest Aspose.Slides API for Android.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Define &lt;strong&gt;&lt;a href="https://github.com/agrazhevskaja/aspose-slides-use-cases/blob/master/slides-android-demo-app-develop/src/main/java/com/aspose/slides/demoapp/MainActivity.java?utm_source=https://dev.to/aspose_slides/create-presentation-viewer-for-your-android-use-case-3c7a&amp;amp;utm_medium=email"&gt;Main Layout&lt;/a&gt;&lt;/strong&gt; with &lt;strong&gt;btnOpenPresentation&lt;/strong&gt; button, or just take it from link.&lt;br&gt;
My lookes simply this way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FXLKuA4B.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FXLKuA4B.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create &lt;strong&gt;&lt;a href="https://github.com/agrazhevskaja/aspose-slides-use-cases/blob/master/slides-android-demo-app-develop/src/main/res/layout/activity_main.xml?utm_source=https://dev.to/aspose_slides/create-presentation-viewer-for-your-android-use-case-3c7a&amp;amp;utm_medium=email"&gt;Main Activity&lt;/a&gt;&lt;/strong&gt; and add this code to &lt;strong&gt;onCreate&lt;/strong&gt; method, which will launch Presentation Activity by btnOpenPresentation click:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MainActivity&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;AppCompatActivity&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nd"&gt;@Override&lt;/span&gt;
    &lt;span class="kd"&gt;protected&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;onCreate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Bundle&lt;/span&gt; &lt;span class="n"&gt;savedInstanceState&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
       &lt;span class="c1"&gt;// ...&lt;/span&gt;

       &lt;span class="c1"&gt;// Start Presentation activity on Open button click&lt;/span&gt;
       &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="nc"&gt;Button&lt;/span&gt; &lt;span class="n"&gt;btnOpenPresentation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;findViewById&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="no"&gt;R&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;btnOpenPresentation&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
          &lt;span class="n"&gt;btnOpenPresentation&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setOnClickListener&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;View&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;OnClickListener&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
          &lt;span class="nd"&gt;@Override&lt;/span&gt;
          &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;View&lt;/span&gt; &lt;span class="n"&gt;view&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
             &lt;span class="n"&gt;execPresentationActivity&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
       &lt;span class="o"&gt;}});&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// Start Presentation activity&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;execPresentationActivity&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
       &lt;span class="nc"&gt;Intent&lt;/span&gt; &lt;span class="n"&gt;openPresentationIntent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Intent&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;MainActivity&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;this&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; 
       &lt;span class="nc"&gt;PresentationActivity&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
       &lt;span class="n"&gt;startActivity&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;openPresentationIntent&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create &lt;strong&gt;&lt;a href="https://github.com/agrazhevskaja/aspose-slides-use-cases/blob/master/slides-android-demo-app-develop/src/main/res/layout/activity_presentation.xml" rel="noopener noreferrer"&gt;Presentation Layout&lt;/a&gt;&lt;/strong&gt; with slides’ carousele and a control to show the current slide, or just take it from link.&lt;br&gt;
My looks simply this way, but there is a lot of space to show creativity here👩‍🎨.&lt;br&gt;
Actually, this is a final application we should get:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FhpGWN8f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FhpGWN8f.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create &lt;strong&gt;&lt;a href="https://github.com/agrazhevskaja/aspose-slides-use-cases/blob/master/slides-android-demo-app-develop/src/main/java/com/aspose/slides/demoapp/PresentationActivity.java?utm_source=https://dev.to/grazhevskaja/create-presentation-viewer-for-android-3ngj-temp-slug-6238644&amp;amp;utm_medium=email"&gt;Presentation Activity&lt;/a&gt;&lt;/strong&gt;.&lt;br&gt;
Now, let us stop more detailed.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Define &lt;strong&gt;execFilePicker()&lt;/strong&gt; method and call it from &lt;strong&gt;onCreate()&lt;/strong&gt; in Presentation Activity. This method will open the file system, that we could choose the presentation file this way:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FDGDeQ5k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FDGDeQ5k.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All this is done just in 3 lines:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;PresentationActivity&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;AppCompatActivity&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nd"&gt;@Override&lt;/span&gt;
    &lt;span class="kd"&gt;protected&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;onCreate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Bundle&lt;/span&gt; &lt;span class="n"&gt;savedInstanceState&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;execFilePicker&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// Open File system to choose presentation file&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;execFilePicker&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;Intent&lt;/span&gt; &lt;span class="n"&gt;mRequestFileIntent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Intent&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Intent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ACTION_GET_CONTENT&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;mRequestFileIntent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setType&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="n"&gt;startActivityForResult&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mRequestFileIntent&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="no"&gt;READ_REQUEST_CODE&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Note that we’ve passed READ_REQUEST_CODE to startActivityForResult method. We will use it to check activity result in &lt;strong&gt;onActivityResult&lt;/strong&gt; method and know if we can load the presentation chosen:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;PresentationActivity&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;AppCompatActivity&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nd"&gt;@Override&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;onActivityResult&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;requestCode&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;resultCode&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Intent&lt;/span&gt; &lt;span class="n"&gt;resultData&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;requestCode&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="no"&gt;READ_REQUEST_CODE&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;resultCode&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="no"&gt;RESULT_OK&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;resultData&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="nc"&gt;Uri&lt;/span&gt; &lt;span class="n"&gt;uri&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resultData&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getData&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

            &lt;span class="c1"&gt;// Load chosen presentation&lt;/span&gt;
            &lt;span class="n"&gt;execLoadPresentation&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In previous method we’ve called &lt;strong&gt;execLoadPresentation&lt;/strong&gt; method to load chosen presentation.&lt;br&gt;
Then &lt;strong&gt;selectSlide&lt;/strong&gt; method can be called to select the slide of the presentation, which should be shown on Presentation Layout.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;PresentationActivity&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;AppCompatActivity&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

  &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;SlidesApp&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

  &lt;span class="c1"&gt;// Invoke LoadPresentationTask to load chosen presentation&lt;/span&gt;
  &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;execLoadPresentation&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Uri&lt;/span&gt; &lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="kd"&gt;throws&lt;/span&gt; &lt;span class="nc"&gt;IOException&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="nc"&gt;InputStream&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;getContentResolver&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;openInputStream&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
      &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;LoadPresentationTask&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;execute&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// Invoke SelectSlideTask to select a slide to be shown&lt;/span&gt;
  &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;selectSlide&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;pos&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;SelectSlideTask&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;execute&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pos&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Now lets create &lt;strong&gt;LoadPresentationTask&lt;/strong&gt; and &lt;strong&gt;SelectSlideTask&lt;/strong&gt; classes used in two previous methods.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LoadPresentationTask&lt;/strong&gt; will do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;doInBackground&lt;/strong&gt; - set the presenation, choosed by user, as the current one.
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;LoadPresentationTask&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;AsyncTask&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;InputStream&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Void&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Presentation&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Set chosen presentation as current one&lt;/span&gt;
    &lt;span class="nd"&gt;@Override&lt;/span&gt;
    &lt;span class="kd"&gt;protected&lt;/span&gt; &lt;span class="nc"&gt;Presentation&lt;/span&gt; &lt;span class="nf"&gt;doInBackground&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;InputStream&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;InputStream&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;];&lt;/span&gt;
        &lt;span class="nc"&gt;Presentation&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Presentation&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Presentation&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="c1"&gt;// Call setPresentation by SlidesApp to set chosen presentation as current one&lt;/span&gt;
        &lt;span class="n"&gt;presentationActivity&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setPresentation&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;presentationActivity&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;currSlideViewSize&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;presentationActivity&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;slidesListViewSize&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;&lt;strong&gt;SelectSlideTask&lt;/strong&gt; will do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;doInBackground&lt;/strong&gt; - select the slide of presentation to be shown on Presentation Layout.
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SelectSlideTask&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;AsyncTask&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Void&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Bitmap&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 
&lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Select the slide, that should be shown&lt;/span&gt;
    &lt;span class="nd"&gt;@Override&lt;/span&gt;
    &lt;span class="kd"&gt;protected&lt;/span&gt; &lt;span class="nc"&gt;Bitmap&lt;/span&gt; &lt;span class="nf"&gt;doInBackground&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="n"&gt;ints&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;pos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ints&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;];&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;presentationActivity&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;selectSlide&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pos&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;These tasks refer to presentationActivity.app.&lt;strong&gt;setPresentation()&lt;/strong&gt; and presentationActivity.app.&lt;strong&gt;selectSlide()&lt;/strong&gt;, where presentationActivity.app - is the instance of &lt;strong&gt;SlidesApp&lt;/strong&gt; class, which manages all logic about Presentation and Slide objects.&lt;/p&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;In the end, we came to the main part of the story.👩‍🏫&lt;br&gt;
&lt;strong&gt;❗️THE MAGIC STARTS HERE!❗️&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/agrazhevskaja/aspose-slides-use-cases/blob/master/slides-android-demo-app-develop/src/main/java/com/aspose/slides/demoapp/SlidesApp.java?utm_source=https://dev.to/grazhevskaja/create-presentation-viewer-for-android-3ngj-temp-slug-6238644&amp;amp;utm_medium=email"&gt;SlidesApp&lt;/a&gt;&lt;/strong&gt; class incapsulates all the logic to work with &lt;strong&gt;&lt;a href="https://products.aspose.com/slides/android-java?utm_source=https://dev.to/grazhevskaja/create-presentation-viewer-for-android-3ngj-temp-slug-6238644&amp;amp;utm_medium=email"&gt;Aspose.Slides API for Android&lt;/a&gt;&lt;/strong&gt;.&lt;br&gt;
This class will allow us to locally save presentation, get all slides, set current slide, convert it into the thumbnail, calculate thumbnail’s size, etc.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Import &lt;strong&gt;&lt;a href="https://apireference.aspose.com/cpp/slides/class/aspose.slides.i_presentation/?utm_source=https://dev.to/grazhevskaja/create-presentation-viewer-for-android-3ngj-temp-slug-6238644&amp;amp;utm_medium=email"&gt;IPresentation&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href="https://apireference.aspose.com/cpp/slides/class/aspose.slides.i_slide/?utm_source=https://dev.to/grazhevskaja/create-presentation-viewer-for-android-3ngj-temp-slug-6238644&amp;amp;utm_medium=email"&gt;ISlide&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;a href="https://apireference.aspose.com/cpp/slides/class/aspose.slides.i_slide_collection/?utm_source=https://dev.to/grazhevskaja/create-presentation-viewer-for-android-3ngj-temp-slug-6238644&amp;amp;utm_medium=email"&gt;ISlideCollection&lt;/a&gt;&lt;/strong&gt; types:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.aspose.slides.IPresentation&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.aspose.slides.ISlide&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;com.aspose.slides.ISlideCollection&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Add &lt;strong&gt;SlidesApp&lt;/strong&gt; class with the instances of current presentation and current slide:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SlidesApp&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Application&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;IPresentation&lt;/span&gt; &lt;span class="n"&gt;presentation&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;Bitmap&lt;/span&gt; &lt;span class="n"&gt;currSlide&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="c1"&gt;//...&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Now lets implement &lt;strong&gt;selectSlide&lt;/strong&gt; method, that will call getSlides to retrieve all presentation slides, then get the slide needed by its id. And, get the thumbnail of the slide with &lt;strong&gt;getThumbnail&lt;/strong&gt; method.&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SlidesApp&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Application&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;Bitmap&lt;/span&gt; &lt;span class="nf"&gt;selectSlide&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;idx&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;//...&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;currSlide&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;presentation&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getSlides&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;get_Item&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;idx&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;getThumbnail&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;slideThumbnailSize&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;currSlide&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;The thumbnail is saved into currSlide property and returned back into SelectSlideTask, which will draw it on Presentation Layout:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;PresentationActivity&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;AppCompatActivity&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;ImageView&lt;/span&gt; &lt;span class="n"&gt;currSlide&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="c1"&gt;//...&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SelectSlideTask&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;AsyncTask&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Integer&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Void&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Bitmap&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 
&lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="nc"&gt;PresentationActivity&lt;/span&gt; &lt;span class="n"&gt;presentationActivity&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nd"&gt;@Override&lt;/span&gt;
    &lt;span class="kd"&gt;protected&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;onPostExecute&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Bitmap&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Set thumbnail to currSlide image view, that it could be drawn on Presentation Layout&lt;/span&gt;
        &lt;span class="n"&gt;presentationActivity&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;currSlide&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setImageBitmap&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;/ol&gt;

&lt;/li&gt;

&lt;/ol&gt;






&lt;p&gt;I have shown you how to developer a basic presentation viewer, while there are a lot of features you can easily add to this application with &lt;strong&gt;&lt;a href="https://products.aspose.com/slides/android-java?utm_source=https://dev.to/grazhevskaja/create-presentation-viewer-for-android-3ngj-temp-slug-6238644&amp;amp;utm_medium=email"&gt;Aspose.Slides API for Android&lt;/a&gt;&lt;/strong&gt; to edit, convert or manage presentation or a certain slide. Check it out &lt;a href="https://docs.aspose.com/display/slidesjava/developer+guide?utm_source=https://dev.to/grazhevskaja/create-presentation-viewer-for-android-3ngj-temp-slug-6238644&amp;amp;utm_medium=email"&gt;here&lt;/a&gt;.👈&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>beginners</category>
      <category>programming</category>
      <category>android</category>
    </item>
    <item>
      <title>500 followers!😱🤩 About myself</title>
      <dc:creator>Alexandra Grazhevskaja</dc:creator>
      <pubDate>Fri, 08 Nov 2019 16:53:07 +0000</pubDate>
      <link>https://dev.to/grazhevskaja/500-followers-about-myself-f43</link>
      <guid>https://dev.to/grazhevskaja/500-followers-about-myself-f43</guid>
      <description>&lt;p&gt;Few days ago I celebrated my first 500 followers on Dev.To.🎉&lt;br&gt;
Actually, &lt;strong&gt;YOU 👋 are first 500 followers in my life&lt;/strong&gt;, and I am glad that it happend on Dev.To. It is a friendly and intelligent environment of nice, professional and passionate people!&lt;/p&gt;

&lt;p&gt;I skipped to write the introduction post at the very begining, so I would like to do that now.&lt;/p&gt;

&lt;h2&gt;Who I am?&lt;/h2&gt;

&lt;p&gt;I am an IT girl.👩‍💻 Yes, so short.💁‍♀️&lt;/p&gt;

&lt;p&gt;Actually, I have a mixed education and experience: linguistic, engineering and scientific. But, what have always been a significant part of my life - is languages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I studied &lt;strong&gt;human languages&lt;/strong&gt; in the lingustic gymnasium. I was even supposed to become a professional linguist.&lt;/li&gt;
&lt;li&gt;Then I learned &lt;strong&gt;programming languages&lt;/strong&gt; at IT university and developer’s job. I even worked to create my own programming language while being a postgraduate.&lt;/li&gt;
&lt;li&gt;Now, I am learning &lt;strong&gt;marketing language&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These three skills help me to be who I am. Programming have taught me to structure information in my mind, lingustics - to structure it on paper and marketing tells how to introduce information after all.👆&lt;/p&gt;

&lt;h2&gt;Why I am here?&lt;/h2&gt;

&lt;p&gt;I am here for both &lt;strong&gt;fun and job&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I want to enjoy communication with like minded people, learn and share. This is my first blogging experience and I hope to improve myself in that. I had some written experience before: scientific articles, technical articles, esses, etc. But, writting on Dev.To is a new format for me - it requires more collaboration and understanding the audience.&lt;/p&gt;

&lt;p&gt;I want to tell you about &lt;strong&gt;&lt;a href="https://www.aspose.com/?utm_source=https://dev.to/grazhevskaja/500-followers-about-myself-57cd-temp-slug-5856600&amp;amp;utm_medium=email"&gt;Aspose&lt;/a&gt;&lt;/strong&gt; products, because &lt;a href="https://dev.to/aspose_slides/aspose-apis-save-you-from-ms-office-automation-hell-59dh"&gt;they are great&lt;/a&gt;.🙌⭐️&lt;br&gt;
I am Developer Evangelist in Aspose - yes, the role, that nobody knows what is it.😁&lt;br&gt;
For me, being Developer Evangelist means - showing you that Aspose products are great, as well as doing everything to make them better for you.&lt;br&gt;
I have already published few posts about &lt;strong&gt;&lt;a href="https://products.aspose.com/slides?utm_source=https://dev.to/grazhevskaja/500-followers-about-myself-57cd-temp-slug-5856600&amp;amp;utm_medium=email"&gt;Aspose.Slides&lt;/a&gt;&lt;/strong&gt;, and it seems you liked them:&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/grazhevskaja" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jBWUn2ey--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--eAEhox-a--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/198585/15acd4de-91cd-454a-87e4-545750af17e1.jpg" alt="grazhevskaja image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/aspose_slides/boost-your-presentations-with-gifs-2d73" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Boost your presentations with GIFs&lt;/h2&gt;
      &lt;h3&gt;Alexandra Grazhevskaja ・ Sep 30 '19 ・ 3 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#discuss&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#api&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;div class="ltag__link"&gt;
  &lt;a href="/grazhevskaja" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jBWUn2ey--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--eAEhox-a--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/198585/15acd4de-91cd-454a-87e4-545750af17e1.jpg" alt="grazhevskaja image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/aspose_slides/automate-presentation-speaker-notes-3dnc" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Automate presentation speaker notes&lt;/h2&gt;
      &lt;h3&gt;Alexandra Grazhevskaja ・ Oct 25 '19 ・ 2 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#discuss&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#api&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;div class="ltag__link"&gt;
  &lt;a href="/grazhevskaja" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jBWUn2ey--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--eAEhox-a--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/198585/15acd4de-91cd-454a-87e4-545750af17e1.jpg" alt="grazhevskaja image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/aspose_slides/fallback-font-and-font-substitution-for-presentations-173o" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Fallback font and font substitution for presentations&lt;/h2&gt;
      &lt;h3&gt;Alexandra Grazhevskaja ・ Nov  4 '19 ・ 3 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#api&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#csharp&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;What do you want to know about &lt;a href="https://products.aspose.com/slides?utm_source=https://dev.to/grazhevskaja/500-followers-about-myself-57cd-temp-slug-5856600&amp;amp;utm_medium=email"&gt;Aspose.Slides&lt;/a&gt; and presentations?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;What do you want to know about me?👇👇👇&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>showdev</category>
      <category>career</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Fallback font and font substitution for presentations</title>
      <dc:creator>Alexandra Grazhevskaja</dc:creator>
      <pubDate>Mon, 04 Nov 2019 16:56:39 +0000</pubDate>
      <link>https://dev.to/aspose_slides/fallback-font-and-font-substitution-for-presentations-173o</link>
      <guid>https://dev.to/aspose_slides/fallback-font-and-font-substitution-for-presentations-173o</guid>
      <description>&lt;p&gt;First, I want to explain you why this topic is important:&lt;br&gt;
Imagine, you have developed an application for automated presentations generation.  You used, &lt;strong&gt;&lt;a href="https://products.aspose.com/slides?utm_source=https://dev.to/aspose_slides/fallback-font-and-font-substitution-for-presentations-173o&amp;amp;utm_medium=email"&gt;Aspose.Slides API&lt;/a&gt;&lt;/strong&gt;, for the &lt;a href="https://dev.to/aspose/aspose-apis-save-you-from-ms-office-automation-hell-59dh"&gt;known reasons&lt;/a&gt;, with all it wealth of opportunities. Your application is cool: it uses nice UI templates, AI/ML-based generation from text, finds the right images from internet, showes complicated 3D graphics and statistics data, sends rockets into space...🚀&lt;br&gt;
You run the application and generate hundreds of presentation. But, suddenly you see a small annoying problem with presentations text... - BLACK BOXES instead of characters in text.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;"What’s that? Why? Is that aliens trying to talk to me?"&lt;/strong&gt;&lt;/em&gt; - you think.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/kKBY5n9D5LTuE/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img width="500" src="https://i.giphy.com/media/kKBY5n9D5LTuE/giphy.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Fallback font and Font substitution&lt;/h2&gt;

&lt;p&gt;The answer is: &lt;em&gt;"No. Your computer is just saying he doesnt know the font of your text."&lt;/em&gt;&lt;br&gt;
But there are two backup plans: &lt;strong&gt;fallback font&lt;/strong&gt; and &lt;strong&gt;font substitution&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;Fallback font&lt;/h4&gt;

&lt;p&gt;When your system meets a Unicode character, it checks if it's in the specified font. In case it’s not - it starts to look through all the fonts to find the suitable one, based on the character glyph. The last font - &lt;strong&gt;fallback font&lt;/strong&gt; - has glyphs for all the characters, and it will be checked if the character needed was not found in all other fonts.&lt;br&gt;
Glyphs - are just visual representations of any Unicode character. They are something more meaningful than a black box for missing characters. Systems that don’t have a fallback font usually display black or white rectangles, question marks, the Unicode Replacement Character (U+FFFD), or nothing at all, in place of unfound characters.&lt;/p&gt;

&lt;h4&gt;Fonts substitution&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Font substitution&lt;/strong&gt; is the process of using one font instead of another one, when the initial font either can not be found or does not contain glyphs for the required characters. Font is choosen by similarity, based on: font family, system's font configuration, etc.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;How can I use fallback fonts and font substitution to save the situation?&lt;/strong&gt;&lt;/em&gt; - you ask.&lt;/p&gt;

&lt;h2&gt;How to use it&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://products.aspose.com/slides?utm_source=https://dev.to/aspose_slides/fallback-font-and-font-substitution-for-presentations-173o&amp;amp;utm_medium=email"&gt;Aspose.Slides API&lt;/a&gt;&lt;/strong&gt; has a FontsManager, which allows to flexibily manage fonts in presentation: set, embed, replace, substitute them. In order to control the fallback font replacement, you may define the rules for that, setting font used with the characters Unicode range:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;IFontFallBackRule&lt;/span&gt; &lt;span class="n"&gt;firstRule&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;FontFallBackRule&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;startUnicodeIndex&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;endUnicodeIndex&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Vijaya"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;IFontFallBackRule&lt;/span&gt; &lt;span class="n"&gt;secondRule&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;FontFallBackRule&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0x3040&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0x309F&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"MS Mincho, MS Gothic"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Add them to rules collection and set this collection to FontsManager’s:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;IFontFallBackRulesCollection&lt;/span&gt; &lt;span class="n"&gt;rules&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;FontFallBackRulesCollection&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;rules&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;firstRule&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;rules&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;secondRule&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;presentation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FontsManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FontFallBackRulesCollection&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;rules&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Now let’s try to render thumbnail with new rules and save to PNG:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;presentation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Slides&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;GetThumbnail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1f&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;Save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dataDir&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="s"&gt;"Slide_0.png"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ImageFormat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Png&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Let us see the result achieved. The first one - is the image without  using the fallback font, the second - uses it.&lt;/p&gt;

&lt;p&gt;Without fallback font:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F8y_oHBS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/EpO75vC.png" class="article-body-image-wrapper"&gt;&lt;img width="500" src="https://res.cloudinary.com/practicaldev/image/fetch/s--F8y_oHBS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/EpO75vC.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With fallback font:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GB1UudLk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/L859j3I.png" class="article-body-image-wrapper"&gt;&lt;img width="500" src="https://res.cloudinary.com/practicaldev/image/fetch/s--GB1UudLk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/L859j3I.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Font substitution is the same easy to use, and you can find more &lt;strong&gt;&lt;a href="https://docs.aspose.com/display/slidesnet/managing+fonts?utm_source=https://dev.to/aspose_slides/fallback-font-and-font-substitution-for-presentations-173o&amp;amp;utm_medium=email"&gt;here&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="https://docs.aspose.com/display/slidesnet/manipulating+text?utm_source=https://dev.to/aspose_slides/fallback-font-and-font-substitution-for-presentations-173o&amp;amp;utm_medium=email"&gt;here&lt;/a&gt;&lt;/strong&gt;.👈&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;How many of you know which language is on the images? Please, comment.&lt;/strong&gt;😁👇👇👇 &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>api</category>
      <category>programming</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Developers Halloween</title>
      <dc:creator>Alexandra Grazhevskaja</dc:creator>
      <pubDate>Thu, 31 Oct 2019 15:13:10 +0000</pubDate>
      <link>https://dev.to/grazhevskaja/developers-halloween-5bci</link>
      <guid>https://dev.to/grazhevskaja/developers-halloween-5bci</guid>
      <description>&lt;p&gt;Halloween is weird.&lt;br&gt;
But, if I would be someone/something on Halloween - I would be &lt;strong&gt;YOUR FALLEN DOWN PRODUCTION&lt;/strong&gt;!!!😝&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Whom would you be on Developers Halloween?&lt;/strong&gt;👇👇👇&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>fun</category>
    </item>
    <item>
      <title>What is fallback font?</title>
      <dc:creator>Alexandra Grazhevskaja</dc:creator>
      <pubDate>Thu, 31 Oct 2019 12:59:39 +0000</pubDate>
      <link>https://dev.to/aspose_slides/what-is-fallback-font-1b74</link>
      <guid>https://dev.to/aspose_slides/what-is-fallback-font-1b74</guid>
      <description>&lt;p&gt;I am exploring what fallback font is, working under an article about &lt;strong&gt;&lt;a href="https://products.aspose.com/slides?utm_source=https://dev.to/aspose_slides/what-is-fallback-font-1b74&amp;amp;utm_medium=email"&gt;Aspose.Slides&lt;/a&gt;&lt;/strong&gt; product. I am curious to know how would someone explain what is fallback font, &lt;strong&gt;like I am five&lt;/strong&gt;!😀🤔&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Please, explain me in comments!&lt;/strong&gt;👇&lt;/p&gt;

</description>
      <category>explainlikeimfive</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Have you ever lost all of your data?😰</title>
      <dc:creator>Alexandra Grazhevskaja</dc:creator>
      <pubDate>Thu, 31 Oct 2019 12:20:17 +0000</pubDate>
      <link>https://dev.to/grazhevskaja/have-you-ever-lost-all-of-your-data-3lkk</link>
      <guid>https://dev.to/grazhevskaja/have-you-ever-lost-all-of-your-data-3lkk</guid>
      <description>&lt;p&gt;It happened to me in a distant past - my PC was stolen.&lt;br&gt;
And the worst thing - I had all my life data there and had no backup.&lt;br&gt;
All of my data, starting from my cat`s childhood photos and ending important documents, were lost forever.&lt;br&gt;
That was a lesson for all the life - backup your personal data as well!!😅&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tell your story in comments!&lt;/strong&gt;👇👇👇&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Convert anything to anything</title>
      <dc:creator>Alexandra Grazhevskaja</dc:creator>
      <pubDate>Thu, 31 Oct 2019 10:02:51 +0000</pubDate>
      <link>https://dev.to/aspose_slides/convert-anything-to-anything-9d3</link>
      <guid>https://dev.to/aspose_slides/convert-anything-to-anything-9d3</guid>
      <description>&lt;p&gt;When someone is asking: "Which tool I can use to convert something to something", there is always someone else answering: "Aspose Aspose Aspose"! 😁👍👏&lt;/p&gt;


&lt;div class="ltag__stackexchange--container"&gt;
  &lt;div class="ltag__stackexchange--title-container"&gt;
    
      &lt;div class="ltag__stackexchange--title"&gt;
        &lt;h1&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pTF_nE4a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/stackoverflow-logo-b42691ae545e4810b105ee957979a853a696085e67e43ee14c5699cf3e890fb4.svg" alt=""&gt;
            &lt;a href="https://stackoverflow.com/questions/13458083/converting-excel-powerpoint-pdf-and-word-to-images-in-net-using-aspose/13469410#13469410" rel="noopener noreferrer"&gt;
              &lt;span class="title-flare"&gt;answer&lt;/span&gt; re:  Converting Excel, PowerPoint, PDF, and Word to Images in .NET using Aspose
            &lt;/a&gt;
        &lt;/h1&gt;
        &lt;div class="ltag__stackexchange--post-metadata"&gt;
          &lt;span&gt;Nov 20 '12&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;a class="ltag__stackexchange--score-container" href="https://stackoverflow.com/questions/13458083/converting-excel-powerpoint-pdf-and-word-to-images-in-net-using-aspose/13469410#13469410" rel="noopener noreferrer"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5MiFESHx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/stackexchange-arrow-up-eff2e2849e67d156181d258e38802c0b57fa011f74164a7f97675ca3b6ab756b.svg" alt=""&gt;
        &lt;div class="ltag__stackexchange--score-number"&gt;
          3
        &lt;/div&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Rk_a5QFN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/stackexchange-arrow-down-4349fac0dd932d284fab7e4dd9846f19a3710558efde0d2dfd05897f3eeb9aba.svg" alt=""&gt;
      &lt;/a&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--body"&gt;
    
&lt;p&gt;You will need Aspose.Slides, Aspose.Words, Aspose.Cells and Aspose.Pdf or you can use &lt;a href="http://saaspose.com/docs/dashboard.action" rel="nofollow"&gt;Web Api&lt;/a&gt; &lt;/p&gt;

    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--btn--container"&gt;
    
      &lt;a href="https://stackoverflow.com/questions/13458083/converting-excel-powerpoint-pdf-and-word-to-images-in-net-using-aspose/13469410#13469410" rel="noopener noreferrer"&gt;Open Full Answer&lt;/a&gt;
    
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Really, there are so many possibilities with &lt;strong&gt;&lt;a href="https://www.aspose.com/?utm_source=https://dev.to/aspose_slides/convert-anything-to-anything-9d3&amp;amp;utm_medium=email"&gt;Aspose products&lt;/a&gt;&lt;/strong&gt;, that soon you will be able to convert anything to anything!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Write in comments ANY file format and I will tell you if Aspose products work with it!&lt;/strong&gt;👇💪&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Get url clicks with Dev.TO API</title>
      <dc:creator>Alexandra Grazhevskaja</dc:creator>
      <pubDate>Tue, 29 Oct 2019 13:44:35 +0000</pubDate>
      <link>https://dev.to/grazhevskaja/get-url-clicks-with-dev-to-api-14ah</link>
      <guid>https://dev.to/grazhevskaja/get-url-clicks-with-dev-to-api-14ah</guid>
      <description>&lt;p&gt;Hi all!&lt;br&gt;
I am exploring &lt;a href="https://docs.dev.to/api/"&gt;Dev.To API&lt;/a&gt;, and would like to get the amount of clicks on the url inside my article.&lt;br&gt;
Is there any way to do that?🙄&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Automate presentation speaker notes</title>
      <dc:creator>Alexandra Grazhevskaja</dc:creator>
      <pubDate>Fri, 25 Oct 2019 20:25:30 +0000</pubDate>
      <link>https://dev.to/aspose_slides/automate-presentation-speaker-notes-3dnc</link>
      <guid>https://dev.to/aspose_slides/automate-presentation-speaker-notes-3dnc</guid>
      <description>&lt;p&gt;What are &lt;strong&gt;speaker notes&lt;/strong&gt; actually?💁‍♀️&lt;br&gt;
I like the explanations that they are a &lt;strong&gt;mind map of the presentation&lt;/strong&gt;.👆&lt;/p&gt;

&lt;h3&gt;Speaker notes’ workflow&lt;/h3&gt;

&lt;p&gt;Usually my workflow to prepare speaker notes is the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I prepare a separate document with my speech.&lt;/li&gt;
&lt;li&gt;Then I need to sort out the theses from this text as speaker notes.&lt;/li&gt;
&lt;li&gt;I prefer to have them printed in case something goes wrong. And, trust me, when you need to present - something goes wrong more often than you expect. Powerpoint starts to buggy, computer breaks up, meteorites fall...😅&lt;/li&gt;
&lt;li&gt;Then I need to add speaker notes into each slide.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It takes time...🤦‍♀️&lt;/p&gt;

&lt;p&gt;Or I can do vice versa:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Add speaker notes&lt;/strong&gt; one by one into each slide.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Export speaker notes&lt;/strong&gt; into a document and print.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I may also need to give speaker notes to team members, who also work under this presentation. Or share speaker notes with the audience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;i&gt;How do you prepare speaker notes?&lt;i&gt;&lt;/i&gt; Please share in comments.&lt;/i&gt;&lt;/strong&gt;👇&lt;/p&gt;

&lt;h3&gt;Automate speaker notes&lt;/h3&gt;

&lt;p&gt;Being developers, we like to automate everything. So and I was looking for a way to &lt;strong&gt;automatically manage speaker notes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://products.aspose.com/slides?utm_source=https://dev.to/aspose_slides/automate-presentation-speaker-notes-3dnc&amp;amp;utm_medium=email"&gt;Aspose.Slides API&lt;/a&gt;&lt;/strong&gt; was a good solution for me, as it also allows many other options as: &lt;strong&gt;copy slide notes&lt;/strong&gt; from another presentations; &lt;strong&gt;convert slide notes into HTML&lt;/strong&gt; in case I want to pubish it on the web; and others.&lt;/p&gt;

&lt;p&gt;I will better show you how I &lt;strong&gt;add slide notes&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Create presentation&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Presentation&lt;/span&gt; &lt;span class="n"&gt;presentation&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Presentation&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Create slide notes&lt;/span&gt;
    &lt;span class="n"&gt;INotesSlide&lt;/span&gt; &lt;span class="n"&gt;notesSlide&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;presentation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Slides&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;NotesSlideManager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddNotesSlide&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="n"&gt;notesSlide&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NotesTextFrame&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"This is my very helpful slide note!"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;presentation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ViewProperties&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NormalViewProperties&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;HorizontalBarState&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SplitterBarStateType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Restored&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="n"&gt;presentation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"pres.pptx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SaveFormat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Pptx&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Then I may want to &lt;strong&gt;access slide notes for extracting&lt;/strong&gt; them anywhere, or I would &lt;strong&gt;convert slide notes into HTML to publish them&lt;/strong&gt; on web:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight csharp"&gt;&lt;code&gt;    &lt;span class="c1"&gt;// Access slide notes for extracting&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;slide&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;presentation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Slides&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="n"&gt;NotesSlideEx&lt;/span&gt; &lt;span class="n"&gt;notes&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;slide&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NotesSlide&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Convert into HTML&lt;/span&gt;
    &lt;span class="n"&gt;HtmlOptions&lt;/span&gt; &lt;span class="n"&gt;opt&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;HtmlOptions&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="n"&gt;INotesCommentsLayoutingOptions&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NotesCommentsLayouting&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NotesPosition&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;NotesPositions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BottomFull&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;presentation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"output.html"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SaveFormat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Html&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Easy!👌&lt;/p&gt;

&lt;p&gt;It’s also possible to use Aspose.Slides from Java, C++ or other languages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;i&gt;How do you automate working with speaker notes? What would you like to automate here?&lt;i&gt;&lt;/i&gt; Please share in comments.&lt;/i&gt;&lt;/strong&gt;👇&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>beginners</category>
      <category>api</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
