英文:
Export specific PowerPoint slides to a single high-quality PDF
问题
我有一个演示文稿,我想要将特定幻灯片打印成单个PDF文件。手动使用“Microsoft打印为PDF”可以得到完美的结果。
但是,演示文稿大约包含72张幻灯片(36对),我想要定期打印它们。演示文稿包含每个样本的2张图纸,我想要创建一个包含这两张图纸的每个样本类型的文档。手动操作这样做非常重复、繁琐,而且容易出错。
当我尝试使用VBA代码进行打印时,使用以下代码:
ActivePresentation.ExportAsFixedFormat
结果质量明显较差,非常模糊。
手动打印2张图纸会生成大约1200 KB的PDF文件,而相同2张图纸的VBA导出只有300 KB。
我正在使用类似以下代码的代码:
Sub ExportSlideDuoToIndividualPDF()
Dim sPath As String, xPath As String, myletters As String
Dim steps As Integer, j As Integer, i As Integer
' 演示文稿包含每个样本类型的2张图纸
' 每个样本类型要打印成一个PDF文档,包含这两张图纸
' 样本类型用单个数字表示
myletters = "ABC" '在代码测试期间只有3个
sPath = "C:\Output\Drawings for sample @.pdf"
steps = Len(myletters)
j = 1 '用于元组的计数器
For i = 1 To steps
xPath = Replace(sPath, "@", Mid(myletters, i, 1))
ActivePresentation.Slides.Range(Array(j, j + 1)).Select
ActivePresentation.ExportAsFixedFormat Path:=xPath, FixedFormatType:=ppFixedFormatTypePDF, RangeType:=ppPrintSelection
j = j + 2 '跳到下一个元组
Next i
End Sub
英文:
I have a presentation of which I want to print specific slides to a single pdf file. Manually printing using "Microsoft print to PDF" gives perfect result.
The presentation however consists of about 72 sheets (36 pairs) I want to print regularly. Presentation contains set of 2 sheets of drawings per sample I want to create a document per sample type containing both sheets. Doing this manually is super repetitive, tedious and I am bound to make mistakes.
When I try to print using VBA code using
ActivePresentation.ExportAsFixedFormat
the result is significantly of poorer quality, very blurry.
Manually printing 2 sheets gives a pdf file of about 1200 kb and the vba of the same 2 sheets Export is just 300 kb.
I'm using code that goes somewhat like this:
Sub ExportSlideDuoToIndividualPDF()
Dim sPath As String, xPath As String, myletters As String
Dim steps As Integer, j As Integer, i As Integer
' Presentation contains set of 2 sheets of drawings per sample type
' A pdf document per sample type to be printed containing the sheets
' Sample types are depicted with single digit
myletters = "ABC" 'Just 3 during code testing
sPath = "C:\Output\Drawings for sample @.pdf"
steps = Len(myletters)
j = 1 'Of set counter for tupple
For i = 1 To steps
xPath = Replace(sPath, "@", Mid(myletters, i, 1))
ActivePresentation.Slides.Range(Array(j, j + 1)).Select
ActivePresentation.ExportAsFixedFormat Path:=xPath, FixedFormatType:=ppFixedFormatTypePDF, RangeType:=ppPrintSelection
j = j + 2 ' jump to next tupple
Next i
End Sub
答案1
得分: 1
请阅读以下文档:
https://learn.microsoft.com/en-us/office/vba/api/powerpoint.presentation.exportasfixedformat#example
并根据需要将屏幕(低质量)更改为打印(您的需求)进行调整:
Public Sub ExportAsFixedFormat_Example()
ActivePresentation.ExportAsFixedFormat "C:\Output\Drawings for sample @.pdf", ppFixedFormatTypePDF, ppFixedFormatIntentPrint, , , ppPrintOutputBuildSlides, , ppPrintSlideRange, , , , , ,
End Sub
因此,使用您的循环方法将意图设置为打印:
ActivePresentation.ExportAsFixedFormat Path:=xPath, FixedFormatType:=ppFixedFormatTypePDF, ..., Intent:=ppFixedFormatIntentPrint
英文:
Read the doc
https://learn.microsoft.com/en-us/office/vba/api/powerpoint.presentation.exportasfixedformat#example
and adjust so here changed screen (low quality) to print (your desire)
Public Sub ExportAsFixedFormat_Example()
ActivePresentation.ExportAsFixedFormat "C:\Output\Drawings for sample @.pdf", ppFixedFormatTypePDF, ppFixedFormatIntentPrint, , , ppPrintOutputBuildSlides, , ppPrintSlideRange, , , , , ,
End Sub
Thus using your in loop ? method set intent to Print
ActivePresentation.ExportAsFixedFormat Path:=xPath, FixedFormatType:=ppFixedFormatTypePDF, ..., Intent:=ppFixedFormatIntentPrint
答案2
得分: 0
默认的Intent:=ppFixedFormatIntentSreen证明是个问题。添加Intent:=ppFixedFormatIntentPrint解决了这个问题!
英文:
the default Intent:=ppFixedFormatIntentSreen proves to be the problem. Adding Intent:=ppFixedFormatIntentPrint solved the problem!
答案3
得分: -1
你试过我能找到的这些方法吗?
附注:只要我得到你的回应,我可能仍然能够在这里添加我的答案。这只是一个指南,不会结束在这里。如果你能按照我的指南去做,就不需要我的帮助了,那为什么我要重复它们呢?如果你确实能够独立完成,那当然是最好的,我也不需要越权。你同意吗?
英文:
Did you try these methods I could figure out?
> ps. As long as I get your response, I may still be able to add my answer here. It's just a guideline, it doesn't end here. If you can follow my guidelines and do it, doesn't need my help anymore, so why should I repeat them? If you can actually make it on your own, of course, the best, and I do not need to exceed the authority of it. Would you agree?
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论