Printing Notes page to PDF

C

Cosmo

I have a client who needs to submit PDFs of their presentations in Notes view
for legal routing. They have recently upgraded to the latest version (they
were previously using v2000) and I am now finding that when printing Notes
view, the slide itself becomes a single graphic on the notes page in the PDF,
both on Mac and Windows. The client needs to be able to select and highlight
the text and add notes on the slide before they submit the PDFs, and since
the slide is a graphic, the text is unselectable (and often unreadable at the
resolution the PDF is made)

I haven't found any settiings that can be changed to fix this, is there a
fix (other than saving the files back to 2003 and printing the PDFs there),
or am I stuck with this.
 
C

Cosmo

Thanks very much for that link. That looks like exactly what I am
experiencing. I will check that tomorrow (got stuck late tonight on another
job, so I won't have time tonight)

I hope this will be the solution I need, it looks promising from first read.
The only problem I will possibly have is that most of the other workers at my
company work on Macs (even though I've tried to get them to use the PCs for
the PPT work; I work on both) and the VBA solution in that link won't work on
the Mac. This might even be the way to get them to switch to PC for these
jobs.

Thanks again.
 
C

Cosmo

I got a chance to try that out, and it worked beautifully!!

I had to make an edit to the code, since the slide image on my notes page
isn't named the same, so instead, I had it find the shape that doesn't have a
text frame (in my case that will always be the slide image)

Sub BetterPDFNotes()
Dim osl As Slide
Dim oNewImage As Shape
Dim oOldImage As Shape
Dim oShape As Shape

For Each osl In ActivePresentation.Slides
Call osl.Export(ActivePresentation.Path & "\" & CStr(osl.SlideIndex)
& ".EMF", "EMF")
For Each oShape In osl.NotesPage.Shapes
If Not oShape.HasTextFrame Then
Set oOldImage = oShape
End If
Next oShape
Set oNewImage = osl.NotesPage.Shapes.AddPicture( _
ActivePresentation.Path & "\" & CStr(osl.SlideIndex) _
& ".EMF", False, True, 0, 0, 200, 200)
With oNewImage
.Left = oOldImage.Left
.Top = oOldImage.Top
.Height = oOldImage.Height
.Width = oOldImage.Width
.Tags.Add "TempImage", "YES"
End With
' and after it's all working to perfection
' oOldImage.Delete
' or just leave the original hidden there behind the EMF
Next
End Sub


When I get a chance, I will make a few more changes to delete the exported
EMF file, and I'd either like to save a reference to all created shapes so
that I can delete them with another routine after the PDF is made, or better,
add the code to create the PDF into the procedure, so it can be one complete
self-contained function.

Thanks a lot for the help.
 
C

Cosmo

Thanks for all the help, Steve. Very much appreciated.

Yes, I was aware that VBA was going to be available again in the next
version, hopefully, I'll have converted all of my coworkers over before then.
(Had a problem today, a document had been printed on a mac that wasn't set up
properly, and our proofreader had noted a lot of type problems that had to be
'fixed'. Another reason to push to get our management to require PC editing
of our PPT files)

I had gotten the function created to look for the temp shapes via tags and
delete them, I'll add the 'kill' command too. I was going to use
FileSystemObject for this; is there an advantage to using the 'kill' command
instead?

If there's a possibility of PPT causing an error with not releasing the
objects right away, I think I'll also add the name of the original file when
saving the temp files, as I may often be processing several files in rapid
succession, to prevent any problems in case PPT will cause a problem saving a
file with the same name.

I definitely want to look into creating the PDF file through code, as that
will mean I won't have to use a separate function to delete the images when
finished. Currently I just print to PDF using the PDF printer driver (I have
full Acrobat Professional installed on my PC, as should any PC that we will
be using this on in the company in the future).

Thanks again for the help.
 
C

Cosmo

It seems simpler to use commands that are native to VB/VBA than to
create/destroy new objects to do the work. Fewer lines of code, probably faster
and less memory intensive.

In theory at least. In practice? I doubt either of us would ever notice the
difference.

It's partly a matter of trust. MS broke at least one of these other objects
(FileSearch) in a previous version of Office; that broke one or two of my
add-ins, so FileSearch had to go. And stay gone. I'm reluctant to use others
like it when there are other ways to solve the problem.

But that's just me. ;-)

Fully understandable. I was burned once by something that was removed in
2007, and I had to scramble to debug a problem that occurred when my client
unexpectedly switched (this was about a month ago, and they had been using
v2000 up until then), although it was partly my fault; I should have set a
variable instead of accessing a property directly in an 'If' statement and
used a better error handle. But it was some of the first code that I had
written when learning VBA, so I didn't know any better then.
IIRC it's more liable to happen with PPT files and the like. I'd write it the
easy way and just make a note to look for errors on that line IF there are
problems.

It's mostly done already, I'd rather err on the cautious side now anyway.
That should be fairly simple then. In 2003 you can record a macro while you
print a file using the settings you want and it'll give you pretty much the code
you need to automate printing.

You may want to experiment with your Distiller settings; you'll probably want it
to prompt you for a file name rather than generating one automatically. ISTR
that the PDFs land in unlikely places sometimes when you let it roll its own.

Thanks for the tip. I'll try that sometime next week.

I did run into one problem today, though - after running the code, I
happened to notice that on one of the slides, the image that was placed was
not correct - for some reason, some of the text had shifted size considerably
(small footnotes and trademark copy at the bottom of the title slide) and was
running off the slide image that was placed. So for now I had to go back to
my old standby of saving back to 2003 and printing there (which, btw, is
considerably faster, at least on my machine). I'll have to investigate this
further next week.

Maybe by the time Microsoft puts VBA back for Mac users in the next version,
they'll also set the Notes page back to printing the way it did before as
well. I'm guessing I shouldn't hold my breath, though.

Thanks again so much for your input.
 
T

tom.adriaensens

Guys,

I've been investigating the same problem for the last month, and was
really excited when I stumbled on your fix.
However, in my case, I also noticed that on many of my slides some of
the contents shifts and even changes font size during the .emf import
or export.

so for now it's not an option.

I'll be keeping an eye on this thread to see if you guys come up with
something else.

1 change I made to the vba code, was to identify the "slide image" on
a notes page master by only considering placeholders, and then the
slide image has PlaceholderFormat.Type 1, for slide images:

If oShape.Type = msoPlaceholder Then
If oShape.PlaceholderFormat.Type = 1 Then
Set oOldImage = oShape
Set oNewImage = osl.NotesPage.Shapes.AddPicture....

I asked our company's helpdesk to escalate this very annoying change
in Print Notes Page behaviour to Microsoft, but no news yet.

For our company it's a real big issue, because we use this Notes Page
view to produce coursebooks from the same source file as our
presentation. Course books to distributed as PDF be printed externally
in huge numbers...
Because of the 'bitmapping' of the slide object on each page, a PPT
that used generate a 14 MB high-res PDF, now generates a 87 MB PDF and
takes over 2 hours to complete. Not very convenient...

I'll be watching this space if anyone comes up with a fix ;-)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top