{"id":68823,"date":"2025-06-28T03:01:00","date_gmt":"2025-06-27T17:01:00","guid":{"rendered":"https:\/\/www.rjmprogramming.com.au\/ITblog\/?p=68823"},"modified":"2025-06-28T07:24:22","modified_gmt":"2025-06-27T21:24:22","slug":"animated-gif-versus-pdf-presentation-considerations-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/animated-gif-versus-pdf-presentation-considerations-tutorial\/","title":{"rendered":"Animated GIF versus PDF Presentation Considerations Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/agif_versus_pdf.png\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Animated GIF versus PDF Presentation Considerations Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/agif_versus_pdf.png\" title=\"Animated GIF versus PDF Presentation Considerations Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">Animated GIF versus PDF Presentation Considerations Tutorial<\/p><\/div>\n<p>The RJM Programming web server is a Linux one, which means, in terms of it&#8217;s hard disk, file resource allocation limits happen regarding both &#8230;<\/p>\n<ul>\n<li>disk storage in bytes (affected by how large your files are\/get)<\/li>\n<li>number of files in total regarding the system&#8217;s inode count limit (affected by how many files there are\/get to)<\/li>\n<\/ul>\n<p>When it comes to our blog posting tutorial image(s) around here, it often pans out that a concept cannot be fully explained or embellished by any <strong>one<\/strong> image.<\/p>\n<p>In &#8220;the old days&#8221; we used to <i>Javascript navigate<\/i> through a &#8220;faux&#8221; animation showing the presentation via this methodology.  That was okay for a while until we realized the impact on our Linux system inode count limit, so we modified that to a &#8220;unzip on request&#8221; model which rezipped after some time using PHP, which at that time fully supported it&#8217;s own &#8220;zip&#8221; functions.  In PHP 8 it no longer does (and for these, still existing, scenarios we&#8217;ve resorted to a less functional, but working, PHP calls Linux operating system &#8220;zip\/unzip&#8221; via <i>exec<\/i> approach).<\/p>\n<p>Before any PHP of an 8 version ilk (which we jumped to from a 5) we started down the road trying presentations in one of two other ways.  In order of how often we started &#8230;<\/p>\n<ol>\n<li>wrapping up many images into single &#8220;inhouse created&#8221; animated GIF &#8230; or &#8230; <\/li>\n<li>wrapping up many images into single PDF file using as our preferred method macOS Preview -&gt; make changes -&gt; File -&gt; Print&#8230; -&gt; manage any rotation or scaling issues -&gt; Save as PDF&#8230;<\/li>\n<\/ol>\n<p> &#8230; methodologies.   Below is what we see as the Pros and Cons of this choice &#8230;<\/p>\n<table>\n<tr>\n<th>Criteria<\/th>\n<th>Animated GIF<\/th>\n<th>PDF<\/th>\n<\/tr>\n<tr>\n<td>Output format<\/td>\n<td>Pro &#8211; img easier than iframe to make cross browser and cross platform friendly<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>Simplicity<\/td>\n<td><\/td>\n<td>Con &#8211; scrolling required<\/td>\n<\/tr>\n<tr>\n<td>Confusion<\/td>\n<td>Con &#8211; some users may be confused by delay too little or too much and when presentation starts\/stops<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>Analysis<\/td>\n<td><\/td>\n<td>Pro &#8211; user has control to fully take in the information at their pace<\/td>\n<\/tr>\n<tr>\n<td>Gathering slides<\/td>\n<td>Con &#8211; our inhouse animated GIF creator can order on the fly via user nouse but takes a lot longer to <i>gather<\/i> slides<\/td>\n<td>Pro &#8211; really easy off macOS Finder multiple highlighting -&gt; Open With&#8230; -&gt; Preview (and from there slides can be reordered <i>reasonably straightforwardly<\/i>)<\/td>\n<\/tr>\n<tr>\n<td>Annotations<\/td>\n<td><\/td>\n<td>Pro &#8211; Speech Bubbles can often be really useful<\/td>\n<\/tr>\n<\/table>\n<p> &#8230; and the making of <a target=\"_blank\" href='https:\/\/www.rjmprogramming.com.au\/ITblog\/css-web-application-external-javascript-programmatical-updates-tutorial\/' title='CSS Web Application External Javascript Programmatical Updates Tutorial' rel=\"noopener\">CSS Web Application External Javascript Programmatical Updates Tutorial<\/a> recently gave us pause for thought.  We felt Speech Bubbles were necessary, but did not want the bother of a PDF presentation, with it&#8217;s HTML iframe cross browser issues, and so, on this occasion we &#8230;<\/p>\n<ol>\n<li>gathered slides on macOS to Preview<\/li>\n<li>reordered pretty easily<\/li>\n<li>added lots of Speech Bubbles (at least one per slide) to better explain what we meant regarding the presentation on a slide by slide basis<\/li>\n<li>File -&gt; Print&#8230; -&gt; rotated to landscape view -&gt; Save as PDF&#8230; css_webapps_peer_more.pdf<\/li>\n<\/ol>\n<p> &#8230; and then we could have used our inhouse <a target=\"_blank\" title='PDF to Image' href='https:\/\/www.rjmprogramming.com.au\/PHP\/php_calls_pdfimages.php' rel=\"noopener\">PDF to Image(s)<\/a> approach, but at that web application&#8217;s heart, anyway, is the <a target=\"_blank\" title='ImageMagick software suite' href='https:\/\/www.imagemagick.org\/' rel=\"noopener\">ImageMagick<\/a> <i>magic<\/i> operating system call of the ilk of the command &#8230;<\/p>\n<p><code><br \/>\nconvert -delay 4000 css_webapps_peer_more.pdf css_webapps_peer_more.gif<br \/>\n<\/code><\/p>\n<p> &#8230; macOS one we plumped for to end up with <a target=\"_blank\" href='https:\/\/www.rjmprogramming.com.au\/ITblog\/css-web-application-external-javascript-programmatical-updates-tutorial\/' title='CSS Web Application External Javascript Programmatical Updates Tutorial' rel=\"noopener\">CSS Web Application External Javascript Programmatical Updates Tutorial<\/a>&#8216;s animated GIF presentation featuring Preview PDF created Speech Bubbles &#8230; win, win!<\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d68823' onclick='var dv=document.getElementById(\"d68823\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/pdf\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d68823' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>The RJM Programming web server is a Linux one, which means, in terms of it&#8217;s hard disk, file resource allocation limits happen regarding both &#8230; disk storage in bytes (affected by how large your files are\/get) number of files in &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/animated-gif-versus-pdf-presentation-considerations-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,12,14,29,37],"tags":[83,84,1832,5224,2346,1658,3101,1752,707,885,913,932,980,5223,1149,2398,1319,1411],"class_list":["post-68823","post","type-post","status-publish","format-standard","hentry","category-animation","category-elearning","category-event-driven-programming","category-operating-system","category-tutorials","tag-animated-gif","tag-animation-2","tag-annotation","tag-con","tag-diskspace","tag-imagemagick","tag-inhouse","tag-inode","tag-linux","tag-operating-system-2","tag-pdf","tag-php","tag-presentation","tag-pro","tag-slide","tag-speech-bubble","tag-tutorial","tag-web-server"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/68823"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=68823"}],"version-history":[{"count":6,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/68823\/revisions"}],"predecessor-version":[{"id":68833,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/68823\/revisions\/68833"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=68823"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=68823"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=68823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}