【问题标题】:PdfSharp - Getting startedPdfSharp - 入门
【发布时间】:2012-09-12 15:07:14
【问题描述】:

我有一个 C# 控制台应用程序,并想在其中添加一些 PdfSharp 的功能。

我已经从Sourceforge 下载了两个 zip 文件……程序集和源代码。

似乎有几种方法可以添加功能

  • 对解压缩程序集文件夹中.dll 文件的引用。
  • 实际上将项目添加到我的解决方案中。

我正在尝试使用后一种方法。

这就是我需要做的一切吗?

  1. 我将解压缩的源代码文件中的文件夹“PdfSharp”复制并粘贴到我的解决方案文件夹中。
  2. 在 VS 我转到解决方案资源管理器右键单击解决方案并选择 Add>Existing Project...
  3. 然后我选择了以下...

我假设项目PdfSharp-ag.csprojPdfSharp-Hybrid.csproj; PdfSharp-WPF.csproj 用于其他应用程序?我的意思是我的简单控制台应用程序就是我需要的项目PdfSharp.csproj

按照上述步骤操作后,我的解决方案如下所示:

...当在原始项目参考部分中参考 PdfSharp 进行扩展时:


然后我使用以下代码测试了控制台应用程序一切正常:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing; //<< additional reference required

using PdfSharp;
using PdfSharp.Pdf;
using PdfSharp.Drawing;

namespace PDFsharpSolutionQF
{
  class Program
  {
    static void Main(string[] args)
    {


      PdfDocument pdf = new PdfDocument();
      pdf.Info.Title = "My First PDF";
      PdfPage pdfPage = pdf.AddPage();
      XGraphics graph = XGraphics.FromPdfPage(pdfPage);
      XFont font = new XFont("Verdana",20,XFontStyle.Bold);
      graph.DrawString("This is my first PDF document",font,XBrushes.Black,new XRect(0,0,pdfPage.Width.Point,pdfPage.Height.Point),XStringFormats.Center);
      string pdfFilename = "firstpage.pdf";
      pdf.Save(pdfFilename);
      //Process.Start(pdfFilename);

    }
  }
}

【问题讨论】:

    标签: c# visual-studio-2010 pdfsharp


    【解决方案1】:

    您可以使用 PdfSharp.csproj 或 PdfSharp-WPF.csproj - 前者使用 GDI+ 进行图形操作,后者使用 WPF 函数。 -Hybrid 是内部的,-ag 是用于 SilverLight 的(功能还不完整)。

    【讨论】:

    • (我是一个相对的 c# 新手)我正在开发的项目是一个控制台应用程序 - 所以我假设没有真正需要使用 WPF 版本? GDI+ 听起来有点吓人……就像我说的它只是一个 C# 控制台应用程序?
    • PDFsharp 必须使用操作系统函数来测量字符串、加载图像等。 GDI+ 是最初的实现,WPF 是后来出现的。两者都应该与控制台应用程序一起使用(我想我会使用“正常”的 GDI+ 构建来开始)。
    • 我已添加它并尝试了您网站上的一些示例 - 到目前为止一切正常。具体来说,明天我将使用它在发送电子邮件之前将密码添加到现有的 pdf 中......看起来你已经准备好了。作为一个新手,拥有一些高质量的源代码真的很好。谢谢。
    【解决方案2】:

    您能否详细说明为什么要尝试将程序源添加到您自己的应用程序中?如果您只是想利用库的功能,那么最好在项目中引用 DLL,然后使用它提供的 API。

    我能想到靠近源代码的唯一原因是 a) 如果您需要对其进行调试或 b) 如果您打算以某种方式修改功能。您是尝试这样做,还是只是以通常的方式使用 API?

    【讨论】:

    • 通过引用项目,您可以使用 F12(或您为其分配的任何键)跳转到已注释的源代码。如果您参考 DLL,这将起作用,但是您会看到来自 DLL 的信息(没有 cmets,没有源代码)。
    • 是的,我意识到这一点,但这通常不是开发人员需要做的事情(至少 IMO)。举个例子,我在项目中经常使用NHibernate,很少有看源码的欲望!
    • @HenryWilson - 如果您阅读他们的网站,这是推荐的方法之一;我只需要知道我是否正确地遵循了他们的说明
    • @Henry Wilson:有多种使用 PDFsharp 的方法。还有一个 NuGet 包可以为您获取 DLL,您可以从 SourceForge 或 CodePlex(压缩)下载 DLL 或获取完整的源代码。使用源代码时,Intellisense 工作正常。
    【解决方案3】:

    在项目中包含源代码的一个好处是无需分发 DLL。我个人使用DLL。但是我可以看到只分发 EXE 的好处。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 2013-05-06
      相关资源
      最近更新 更多