You can use item representations in order to achieve that. You can compile a single item into multiple output items (representations). Here’s an example:
compile '/stuff/' do
filter :markdown
end
compile '/stuff/', :rep => :pdf do
filter :markdown
filter :pdf
end
The only thing remaining is to provide routing rules that write the two item representations to their right location (also using :rep => ...
).