使用VB net通过自动化word打印pdf而不显示对话框

发布于 2025-01-14 15:10:21 字数 1771 浏览 7 评论 0原文

我终于遇到了一个问题,我在这里或网络上的其他任何地方都没有找到答案:

我的程序从仪器中获取一些测量值(我无法直接控制它,所以我必须等到测量完成)由用户并解析报告),计算一些导出值并将这些值放回到由仪器控制软件自动生成的pdf报告中。

一切都有效,直到我到达开始打印输出的行。它总是打开文字打印对话框,而不是默默地覆盖我的文件。我实际上不明白调用 PrintOut 时我做错了什么。

这是示例代码:

Imports Microsoft.Office.Interop
Module Example
Private Sub PrintReport()
    Dim intAnswer As Integer
    Dim strReportFileName As String = ""
    Dim appWord As New Word.Application
    Dim wdDoc As Word.Document
    dim strPPF as string = "0.5" 'For testing, normally a parameter
    dim strFolder as string = "C:\UVVis-Data" 'For testing, normally a parameter

'Find and open the PDF file of the report:
    strReportFileName = (From fi As IO.FileInfo In (New IO.DirectoryInfo(strFolder.GetFiles("*.pdf")) Order By fi.LastWriteTime Descending Select fi)(0).FullName 'It will be always the newest file in that folder
    appWord.Visible = False 'hide word from the user
    wdDoc = appWord.Documents.Open(strReportFileName) 'open the PDF report
'Replace the placeholders which were defined in the report template earlier:
    With appWord.Selection.Find
        .Text = "#PPF#"
        .Replacement.ClearFormatting()
        .Replacement.Text = strPPF
        .Execute(Replace:=Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll)
    End With

'Print out the modified report:
    'wdDoc.PrintOut(False, False,, strReportFileName,,,,,,, True) 'this was my first approach
    wdDoc.PrintOut(Background:=False, Append:=False, OutputFileName:=strReportFileName, PrintToFile:=True) 'this also doesn't work as intended

'Close the file and restore word to it's normal state:
    wdDoc.Close(Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges)
    appWord.Visible = True 
    appWord.Quit()
End Sub
end Module

I've finally encountered a problem, where I didn't already find the answer here or anywhere else on the web:

My program grabs some measurement values from an instrument (I cannot directly control it so I have to wait until the measurement was done by the user and parse the report), calculates some derived values and shall put these values back into the pdf report, which was automatically generated by the instrument control software.

It all works until I come to the line where the printout is started. It always opens the word print dialog instead of silently overwriting my file. I actually don't understand what I am doing wrong when calling PrintOut.

Here is the example code:

Imports Microsoft.Office.Interop
Module Example
Private Sub PrintReport()
    Dim intAnswer As Integer
    Dim strReportFileName As String = ""
    Dim appWord As New Word.Application
    Dim wdDoc As Word.Document
    dim strPPF as string = "0.5" 'For testing, normally a parameter
    dim strFolder as string = "C:\UVVis-Data" 'For testing, normally a parameter

'Find and open the PDF file of the report:
    strReportFileName = (From fi As IO.FileInfo In (New IO.DirectoryInfo(strFolder.GetFiles("*.pdf")) Order By fi.LastWriteTime Descending Select fi)(0).FullName 'It will be always the newest file in that folder
    appWord.Visible = False 'hide word from the user
    wdDoc = appWord.Documents.Open(strReportFileName) 'open the PDF report
'Replace the placeholders which were defined in the report template earlier:
    With appWord.Selection.Find
        .Text = "#PPF#"
        .Replacement.ClearFormatting()
        .Replacement.Text = strPPF
        .Execute(Replace:=Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll)
    End With

'Print out the modified report:
    'wdDoc.PrintOut(False, False,, strReportFileName,,,,,,, True) 'this was my first approach
    wdDoc.PrintOut(Background:=False, Append:=False, OutputFileName:=strReportFileName, PrintToFile:=True) 'this also doesn't work as intended

'Close the file and restore word to it's normal state:
    wdDoc.Close(Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges)
    appWord.Visible = True 
    appWord.Quit()
End Sub
end Module

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

红衣飘飘貌似仙 2025-01-21 15:10:22

感谢您的意见。
我发现我的代码存在第二个问题:在 Word 中打开原始文档后,我无法覆盖原始文档。

我解决了这个问题,首先将pdf移动到临时文件夹,在word中打开该临时文件并在word关闭后将其删除。

Thank you for the input.
I found a second problem with my code: I cannot overwrite the original document once it is open in word.

I solved this by first moving the pdf to a temporary folder, opening that temporary file in word and deleting it after word is closed.

长梦不多时 2025-01-21 15:10:21

使用 Document.ExportAsFixedFormat 方法可以保存PDF 或 XPS 格式的文档。

Public Sub ExportAsFixedFormat_Example()  
 wdDoc.ExportAsFixedFormat pbFixedFormatTypePDF, "pathandfilename.pdf"  
End Sub

Use the Document.ExportAsFixedFormat method which saves a document as PDF or XPS format.

Public Sub ExportAsFixedFormat_Example()  
 wdDoc.ExportAsFixedFormat pbFixedFormatTypePDF, "pathandfilename.pdf"  
End Sub
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文