From 426ed67b32c625a9274d71b02a879b82a5a7ee39 Mon Sep 17 00:00:00 2001
From: 
 "https://www.google.com/accounts/o8/id?id=AItOawlSFgIlytGZgMLh_Cw4IA011V8pLKk5dVg"
 <Brian@web>
Date: Thu, 28 Nov 2013 17:19:13 -0400
Subject: [PATCH] Start of thread

---
 doc/forum/converting_binary_files.mdwn | 29 ++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
 create mode 100644 doc/forum/converting_binary_files.mdwn

diff --git a/doc/forum/converting_binary_files.mdwn b/doc/forum/converting_binary_files.mdwn
new file mode 100644
index 000000000..6b3187f38
--- /dev/null
+++ b/doc/forum/converting_binary_files.mdwn
@@ -0,0 +1,29 @@
+I would like to use ikiwiki to build a static site which needs some transformations to be made on binary assets. A simple example is to translate a .odp presentation to .pdf using (e.g.) unoconv. If I add a new .odp attachment, or push one into the repo, I want the corresponding .pdf to appear in the generated site. What's the right place to hook in to do this?
+
+I've made an experimental prototype which hooks into needsbuild, builds the pages then and there, and at the same time removes them from the list of pages to be built.
+
+~~~
+sub needsbuild {
+    my $files=shift;
+    my $nfiles=[];
+    foreach my $f (@$files) {
+        if ($f =~ /\.odp$/) {
+            my $g = $f;
+            $g =~ s/\.odp$/\.pdf/;
+            debug("building $f to $g");
+            will_render($f, $g);
+            if (system("unoconv","-f","pdf","-o",IkiWiki::dirname("$config{destdir}/$g"),srcfile($f)) != 0) {
+                error("unoconv: failed to translate $f to $g");
+            }
+        }
+        else {
+            push @$nfiles, $f;
+        }
+    };
+    return $nfiles;
+}
+~~~
+
+It appears to work, but is this the right way to do it, bearing in mind ikiwiki's dependency tracking and the like? And is the usage of will_render() correct?
+
+[[BrianCandler]]
-- 
2.39.5