<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>StuffIt &#8211; Wade Tregaskis</title>
	<atom:link href="https://wadetregaskis.com/tags/stuffit/feed/" rel="self" type="application/rss+xml" />
	<link>https://wadetregaskis.com</link>
	<description></description>
	<lastBuildDate>Sun, 18 Jan 2026 18:50:36 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://wadetregaskis.com/wp-content/uploads/2016/03/Stitch-512x512-1-256x256.png</url>
	<title>StuffIt &#8211; Wade Tregaskis</title>
	<link>https://wadetregaskis.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">226351702</site>	<item>
		<title>Extracting embedded images from a PDF</title>
		<link>https://wadetregaskis.com/extracting-embedded-images-from-a-pdf/</link>
					<comments>https://wadetregaskis.com/extracting-embedded-images-from-a-pdf/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Sun, 18 Jan 2026 18:50:33 +0000</pubDate>
				<category><![CDATA[Howto]]></category>
		<category><![CDATA[Acrobat Reader]]></category>
		<category><![CDATA[Apple Preview]]></category>
		<category><![CDATA[AVIF]]></category>
		<category><![CDATA[File Juicer]]></category>
		<category><![CDATA[ImageMagick]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[pdfimages]]></category>
		<category><![CDATA[pdftoppm]]></category>
		<category><![CDATA[Poppler]]></category>
		<category><![CDATA[PPM]]></category>
		<category><![CDATA[Sad]]></category>
		<category><![CDATA[StuffIt]]></category>
		<category><![CDATA[The Unarchiver]]></category>
		<category><![CDATA[Zip]]></category>
		<guid isPermaLink="false">https://wadetregaskis.com/?p=8651</guid>

					<description><![CDATA[Surprisingly, the best way (that I&#8217;ve found) to do this is to use The Unarchiver, a free app from MacPaw (the folks behind SetApp and many other things). It seems to faithfully extract the images as-is, including ICC profiles (which might technically be separate from the image within the PDF, but nonetheless are crucial to&#8230; <a class="read-more-link" href="https://wadetregaskis.com/extracting-embedded-images-from-a-pdf/" data-wpel-link="internal">Read more</a>]]></description>
										<content:encoded><![CDATA[
<p>Surprisingly, the best way (that I&#8217;ve found) to do this is to use <a href="https://theunarchiver.com" data-wpel-link="external" target="_blank" rel="external noopener">The Unarchiver</a>, a free app from <a href="https://macpaw.com" data-wpel-link="external" target="_blank" rel="external noopener">MacPaw</a> (the folks behind <a href="https://setapp.com" data-wpel-link="external" target="_blank" rel="external noopener">SetApp</a> and many other things).  It seems to faithfully extract the images <em>as-is</em>, including ICC profiles (which might technically be separate from the image within the PDF, but nonetheless are crucial to the image being extracted correctly).</p>



<p>The primary reason to extract the images <em>exactly</em> as is, bit-for-bit-identical, is that they&#8217;re typically already lossy-compressed (usually JPEG).  Recompressing them will introduce further losses or increase the file size<sup data-fn="548bb9e0-6fb6-4e03-a88c-0726bfb453fa" class="fn"><a href="#548bb9e0-6fb6-4e03-a88c-0726bfb453fa" id="548bb9e0-6fb6-4e03-a88c-0726bfb453fa-link">1</a></sup>, or both.</p>



<p>Kudos to <a href="https://apple.stackexchange.com/users/97368/josef-habr" data-wpel-link="external" target="_blank" rel="external noopener">Josef Habr</a> for <a href="https://apple.stackexchange.com/a/477392/273188" data-wpel-link="external" target="_blank" rel="external noopener">suggesting The Unarchiver on StackExchange</a> &#8211; I would never have found it on my own, even though I already had it installed and use it occasionally (for more traditional archive file formats, like Zip or StuffIt).</p>



<p>Frustratingly, Josef&#8217;s post aside, none of the recommendations you read online mention The Unarchiver, pointing instead to other options which are harder to install, harder to use, and don&#8217;t extract the images correctly.  Worst of all, many people falsely claim that their suggested approach will extract the images losslessly.  Examples include:</p>



<ul class="wp-block-list">
<li>pdfimages from <a href="https://poppler.freedesktop.org" data-wpel-link="external" target="_blank" rel="external noopener">Poppler</a> &#8211; silently re-encodes images in some cases (contrary to what its documentation and users claim), such as if they have non-sRGB colour profiles, <em>and</em> fails to preserve the embedded ICC profile.  Worse, <a href="https://gitlab.freedesktop.org/poppler/poppler/-/issues/526" data-wpel-link="external" target="_blank" rel="external noopener">the developers have known about this for nearly a decade and refuse to fix it</a>.</li>



<li>pdftoppm (et al) &#8211; explicitly convert the embedded images into another format, which while usually a lossless format (e.g. PNG or PPM) by default, still requires you to then re-encode them for use online etc.  Plus, they typically don&#8217;t preserve ICC profiles.</li>



<li><a href="https://imagemagick.org" data-wpel-link="external" target="_blank" rel="external noopener">ImageMagick</a> &#8211; doesn&#8217;t extract the images, merely renders the whole PDF page(s) as images, requiring further post-processing <em>and</em> inevitably reducing the image quality (due to mismatched output resolution and pixel alignment vs the embedded images&#8217;).</li>



<li>Exporting pages as images from Preview or Acrobat Reader &#8211; obviously doesn&#8217;t preserve the extracted images as-is, requires re-encoding them with additional compression losses, etc.</li>



<li>Screenshots via Preview or Acrobat Reader &#8211; ugh, I can&#8217;t even.</li>



<li>Various websites &#8211; I mean, they <em>might</em> work, but why upload your personal data to some skeezy website when it&#8217;s easy and fast to just use The Unarchiver locally?</li>
</ul>



<p>I saw a recommendation for <a href="https://echoone.com/filejuicer/" data-wpel-link="external" target="_blank" rel="external noopener">File Juicer</a>, but unfortunately the free trial doesn&#8217;t work for me &#8211; it claims it&#8217;s already expired &#8211; so I was unable to check that it actually works.  Plus, it&#8217;s not free (USD$19 at time of writing) so that&#8217;s a strong disincentive compared to The Unarchiver.</p>


<ol class="wp-block-footnotes"><li id="548bb9e0-6fb6-4e03-a88c-0726bfb453fa">It <em>is</em> possible, with some newer formats like AVIF, to recompress a JPEG in a way that arguably <em>improves</em> the image quality while also reducing the file size.  AVIF encoders typically have some built-in smarts to recognise JPEG artefacts specifically, and try to remove them &#8211; a direct benefit visually since the artefacts are ugly and a benefit to [re]compression since the encoder then doesn&#8217;t need to waste time &amp; output bits trying to preserve the artefacts.<br><br>But, utilising this feature can require more care during compression to find the right trade-offs and ensure the result <em>is</em> in fact as good or better than the original &#8211; and in any case, AVIF recompression will work better from the original JPEG than a mangled version. <a href="#548bb9e0-6fb6-4e03-a88c-0726bfb453fa-link" aria-label="Jump to footnote reference 1">↩︎</a></li></ol>]]></content:encoded>
					
					<wfw:commentRss>https://wadetregaskis.com/extracting-embedded-images-from-a-pdf/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8651</post-id>	</item>
		<item>
		<title>Rotated Windows</title>
		<link>https://wadetregaskis.com/rotated-windows/</link>
					<comments>https://wadetregaskis.com/rotated-windows/#comments</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Sun, 26 Feb 2017 08:08:13 +0000</pubDate>
				<category><![CDATA[Ancient History]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Creative]]></category>
		<category><![CDATA[BOMGAR]]></category>
		<category><![CDATA[class-dump]]></category>
		<category><![CDATA[Claus Atzenbeck]]></category>
		<category><![CDATA[CoreGraphicsServices]]></category>
		<category><![CDATA[Growl]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[reverse engineering]]></category>
		<category><![CDATA[Rotated Windows]]></category>
		<category><![CDATA[sitx]]></category>
		<category><![CDATA[Slashdot]]></category>
		<category><![CDATA[StuffIt]]></category>
		<category><![CDATA[Tiger]]></category>
		<category><![CDATA[Undocumented]]></category>
		<guid isPermaLink="false">https://blog.wadetregaskis.com/?p=3863</guid>

					<description><![CDATA[I&#8217;d forgotten about this until I stumbled across a reference to it again recently. This was a little hack I worked on back in 2004, with Mac OS X Tiger (10.4). &#160;Yes, kids, macOS was called Mac OS X back in ye Olden Times. Wow, Slashdot looked even uglier than I remember, back then. &#160;Though&#8230; <a class="read-more-link" href="https://wadetregaskis.com/rotated-windows/" data-wpel-link="internal">Read more</a>]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;d forgotten about this until I stumbled across a reference to it again recently.</p>



<p>This was a little hack I worked on back in 2004, with Mac OS X Tiger (10.4). &nbsp;Yes, kids, macOS was called Mac OS X back in ye Olden Times.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://wadetregaskis.com/wp-content/uploads/2017/02/Rotated-Windows-example.webp" data-wpel-link="internal"><img fetchpriority="high" decoding="async" width="1024" height="768" src="https://wadetregaskis.com/wp-content/uploads/2017/02/Rotated-Windows-example.webp" alt="Rotated Windows example screenshot" class="wp-image-3886" srcset="https://wadetregaskis.com/wp-content/uploads/2017/02/Rotated-Windows-example-512x384@2x.webp 1024w, https://wadetregaskis.com/wp-content/uploads/2017/02/Rotated-Windows-example-256x192.webp 256w, https://wadetregaskis.com/wp-content/uploads/2017/02/Rotated-Windows-example-512x384.webp 512w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<p>Wow, Slashdot looked even uglier than I remember, back then. &nbsp;Though amusingly my daily reading list hasn&#8217;t changed substantially &#8211; it still features Slashdot and MacSurfer&#8217;s Headline News.</p>



<p>Also… 1024 x 768. &nbsp;That&#8217;s just over 5% of the resolution of my current display (27&#8243; Retina iMac). &nbsp;It&#8217;s nearly as big as my iPhone 6s&#8217;s screen.</p>



<p>Man, do I <em>not</em> miss those shitty old monitors.</p>



<p>I don&#8217;t recall what the exact impetus was for the project. &nbsp;I do recall that I was spurred on by Claus Atzenbeck, who was doing some kind of academic work into graphical user interfaces and, IIRC, wanted a way to explore window rotation and general manipulation in a real OS.</p>



<p><a href="https://web.archive.org/web/20170421081203/https://www.atzenbeck.de/" data-wpel-link="external" target="_blank" rel="external noopener">Claus&#8217;s personal website</a> still exists, all these years later, though alas <a href="https://web.archive.org/web/20100225222207/http://www.atzenbeck.de/research/wildWindows/" data-wpel-link="external" target="_blank" rel="external noopener">the link</a> to his relevant research is now broken.</p>



<p>What reminded me of this was finding an attribution to me in a header file that was associated with the project &#8211; CoreGraphicsServices.h. &nbsp;This was something I generated (presumably with the help of <a href="http://stevenygard.com/projects/class-dump/" data-wpel-link="external" target="_blank" rel="external noopener">class-dump</a> or similar) from the CoreGraphicsServices framework, and then partially reverse-engineered (in the sense of figuring out parameter types, function prerequisites, etc). &nbsp;It&#8217;s what was necessary to find &amp; use the private APIs for doing window geometry manipulation.</p>



<p>And the only reason my name is on it is because I splatted a 3-clause BSD license into the header file I made, which in hindsight seems highly dubious since the APIs themselves are owned by Apple (insofar as one can &#8216;own&#8217; APIs, I guess…).</p>



<p>A quick web search reveals a few more mentions:</p>



<ul class="wp-block-list">
<li>The aforementioned header is apparently <a href="https://github.com/growl/growl/blob/a8c142ffc90a326a77cbe05962e537b58a91d225/Core/Source/CoreGraphicsServices.h" data-wpel-link="external" target="_blank" rel="external noopener">used by Growl</a>.</li>



<li>&#8220;BOMGAR&#8221;, some kind of remote computer support software, <a href="https://web.archive.org/web/20150115034157/https://www.bomgar.com/open-source-statement" data-wpel-link="external" target="_blank" rel="external noopener">apparently uses the header too</a>.</li>



<li>As does <a href="https://www.marsthemes.com/crystalclear/documentation/index.html" data-wpel-link="external" target="_blank" rel="external noopener">something on marsthemes.com</a>, though at time of writing that website has been largely destroyed for some reason.</li>



<li>This one particularly amuses me &#8211; a <a href="https://www.cocoabuilder.com/archive/cocoa/112898-expose-api.html" data-wpel-link="external" target="_blank" rel="external noopener">brief thread on cocoa-dev@</a> about the header, in which John C. Randolph categorically takes no particular position on the hack. :)</li>
</ul>



<p>The source &amp; other paraphernalia were <a href="https://web.archive.org/web/20051119180659/https://homepage.cs.latrobe.edu.au/wjtregaskis/Rotated%20Windows.sitx" data-wpel-link="external" target="_blank" rel="external noopener">originally posted on my La Trobe University student web hosting account</a>, though of course that&#8217;s long gone. &nbsp;<a href="https://wadetregaskis.com/MobileMe/Public/Rotated%20Windows.sitx" data-wpel-link="internal">Here&#8217;s the original StuffIt archive</a>, if you&#8217;re interested. &nbsp;I don&#8217;t actually know if it&#8217;s the very latest version &#8211; I do still have the project in full &#8211; but it&#8217;s the latest version I ever published, AFAIR.</p>



<p>I leave it as an exercise to the reader on how to decompress StuffIt files in this day and age. :)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wadetregaskis.com/rotated-windows/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			<media:content url="https://wadetregaskis.com/wp-content/uploads/2017/02/Rotated-Windows-example.webp" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">3863</post-id>	</item>
	</channel>
</rss>
