Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm trying to print a 40-slide powerpoint presentation to PDF in notes pages format, and the resulting .pdf file size is 10x bigger than the .pptx file. Acrobat's space audit says it's 99.7% image data. Apparently PowerPoint builds each notes page by putting a raster image of the slide on top and the speaker notes as text on bottom: the notes can be selected as text in Reader, but text on the slide cannot.

The problem goes away if I print the slides directly (text remains selectable), but then the speaker notes are lost.

Saving as PDF has an option to embed the speaker notes as annotations, but they're buried in a tiny little sticky note in the corner, and long notes get truncated.

Saving as web-optimized PDF gets the file size down to something reasonable, but the slides look terrible (low-quality jpeg with obvious artifacts).

It's possible to manually paste each slide into a Word document as EMF, and type in the text below it. The resulting file size is totally reasonable, but it's really unwieldy for long presentations, especially since I edit the slides each time I give them out.

Is there some better way to print speaker notes with the slides, while keeping the slides as vector art?

share|improve this question
I cannot get a PDF as an image at all when I save as PDF with Notes Pages. Whatever options I tick, the notes are always text. Can you screenshot the settings you are using? Are you using unusual fonts that are not embedded? That may lead to them being bitmapped (as per the last option of the dialog box) – teylyn Mar 20 '13 at 8:45
A "notes page" shows the slide on top with notes below it. The notes are not a problem, but the slide is rendered as a raster image, even if the slide itself contains only text and vector art. I edited the original question to make this more clear. – Ryan Mar 20 '13 at 12:52
up vote 0 down vote accepted

Unfortunately, this is how it is designed to work.

The only realistic alternative I can think of is to use Office Automation using VBA scripts to automate your publishing workflow.

You might also be able to automate the workflow using AutoHotKey.

share|improve this answer
I already had AutoItv3 installed, maybe I'll give that a try. These UI automation scripts have been pretty fragile in my past experience, though. They work 90% of the time, but things get weird fast if they get out of sync and you don't have enough checks in place to make it bail out early. – Ryan Mar 22 '13 at 1:53
You are, of course, correct and I fully agree. Office automation would be better but not appropriate unless you have the skills - and the time! – Julian Knight Mar 22 '13 at 8:58
Do you know if VBA scripts can coordinate between PowerPoint and Word? Office automation would be a non-starter without that, and my Google-foo wasn't enough to figure out the answer. – Ryan Mar 22 '13 at 13:12
Yes VBA can do this. I've not done much automation of PP myself but I've done a lot in the past between Word & Excel. You simply choose the most logical app to master the script, you then create an object reference to the other app. – Julian Knight Mar 22 '13 at 13:56
OK, that worked. I pasted the result up top since it's a tad long for a comment... – Ryan Mar 22 '13 at 20:48

(As posted by Ryan)

Thanks to a suggestion from @julian-knight, I was able to come up with the following VBA script, which pastes each slide/notes pair into a new page of a new Word document:

Sub CreateNotesPages()
Dim docx As Word.Document
Dim slide As slide
Dim txt As String
Dim r As Word.Range
Set docx = New Word.Document

For Each slide In ActivePresentation.slides
    Set r = docx.Range(docx.Content.End - 1, docx.Content.End)
    r.PasteSpecial Link:=False, _
        DataType:=wdPasteEnhancedMetafile, _
        Placement:=wdInLine, DisplayAsIcon:=False
    txt = slide.NotesPage.Shapes.Placeholders(2) _
    docx.Content.InsertAfter (vbCrLf & txt)
    Set r = docx.Range(docx.Content.End - 1, docx.Content.End)
    r.InsertBreak Type:=wdPageBreak
Next slide

End Sub
share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .