【问题标题】:Creating Global document in PDFSharp在 PDFSharp 中创建全局文档
【发布时间】:2016-08-04 13:09:18
【问题描述】:

不确定这是否特定于 PDFSharp,但我已经以 VB.Net 项目的主要形式创建了一个 PDF 文档,如下所示,我想将其设为全局,以便其他模块中的 Subs 可以访问它并创建新页面并写入这些页面。非常感谢您的帮助。我尝试将“doc”声明为公开,但没有奏效。

这是我的代码:

[主窗体]

Public Class Form1

    Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim doc As PdfDocument = New PdfDocument
        doc.Info.Title = "Created with PDFsharp"

        Output.Addpage()

        Dim filename As String = "NewFile.pdf"
        doc.Save(filename)

        Process.Start(filename)

    End Sub
End Class

输出模块

Public Sub Addpage()

    page = doc.AddPage
        
    Using gfx As XGraphics = XGraphics.FromPdfPage(page)

        gfx.DrawRectangle(TablePen, dispLeftMarg - 4, dispTopMarg - 8, dispallowedL + 8, dispallowedH + 12)

    End Using
End Sub

【问题讨论】:

    标签: vb.net pdfsharp


    【解决方案1】:

    我不知道如何在 VB.NET 中公开doc

    在这种情况下,无论如何我都不会这样做。

    在调用Public Sub Addpage() 时将doc 作为参数传递更简洁。

    Public Sub Addpage(ByVal doc As PdfDocument) 应该可以解决问题。

    【讨论】:

    • 感谢您的回复。这就是我现在正在做的事情,但希望不需要在每次调用每个添加页面并在其上写入的 Sub 时都添加该参数。
    • 将字段doc添加到click事件处理程序之外的类中并使其公开。或创建一个属性(具有公共 getter 的私有字段)。这是一个很大的技巧,因为该属性将始终存在,但它仅在单击事件执行时才具有有意义的值。在点击事件开始时调用doc = new PdfDocument,在结束时调用doc = nothing。我会将doc 作为参数传递给更清晰的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多