Skip to content

福昕 PDF SDK .NET Framework 库

本节主要介绍如何使用福昕 PDF SDK .NET Framework SDK 库运行示例及创建一个基础的工程。该工程演示如何将 PDF 文档的首页渲染成 bitmap,并将其另存为 JPG 图片。

先决条件

开发环境

  • Windows .NET Framework 版本: ≥ 4.0
  • 福昕 PDF SDK .NET 库

系统支持

我们提供了 Windows 平台的详细系统支持信息,包括操作系统版本、编译器要求等。请选择您的操作系统平台,查看详细信息。

Windows 平台

命令行运行示例

请参阅 示例,其中包含了示例工程简介,特定示例的依赖信息,以及如何通过命令行运行示例。

Visual Studio 运行示例

通过 Visual Studio 编译后,会在 \examples\simple_demo\ 下生成 bin 文件夹, 并在该文件夹下将生成 .exe 可执行文件。可执行文件的名称取决于工程编译的配置。

运行所有示例

  1. 打开解决方案: 在 \examples\simple_demo 文件夹下,根据您的 Visual Studio 版本,选择相应的解决方案文件(.sln)打开。
  2. 生成解决方案: 在 Visual Studio 中,选择 生成 > 生成解决方案 菜单,编译所有示例。
  3. 运行示例: 编译成功后,在 双击生成的 .exe 可执行文件即可运行相应的示例。

运行某个特定示例

  1. 生成示例工程: 在 Visual Studio 的解决方案资源管理器中,右键单击目标示例工程,选择生成。或者,直接双击示例工程文件夹下的 .vcxproj 文件,打开并生成该工程。
  2. 运行示例: 编译成功后,双击生成的 .exe 可执行文件即可运行该示例。

NOTE

  • 若需查看详细的示例执行过程,请通过命令行运行。
  • 打开 cmd.exe,使用 cd 命令导航至 \examples\simple_demo\bin 目录,然后执行特定的 .exe 文件。

快速创建

快速创建 C# .NET Framework 示例工程

  1. 创建控制台应用程序:

    • 打开 Visual Studio,创建一个名为 test_dotnet 的 C# 控制台应用程序。
  2. 复制 SDK 库文件:

    • foxitpdfsdk_10_1_win_dotnet 文件夹下的 lib 文件夹复制到 test_dotnet 工程目录下。
  3. 添加 fsdk_dotnet.dll 引用:

    • 在 Solution Explorer 中,右键单击 test_dotnet 工程,选择 "Add" -> "Reference..."。
    • 在 "Reference Manager" 对话框中,选择 "Browse" 选项卡。
    • 根据您的工程编译配置,导航到 test_dotnet\lib\x64_vc10test_dotnet\lib\x86_vc10test_dotnet\lib\anycpu_vc15 文件夹。
    • 选择 fsdk_dotnet.dll 动态库,然后单击 "Add"。

    NOTE

    请确保 fsdk_dotnet.dll 的架构与应用程序的平台目标(Win32/Win64/AnyCPU)相匹配。

  4. 添加 fsdk.dll 动态库:

    • Win32/Win64 平台目标:
      • 右键单击 test_dotnet 项目,选择 Add -> Existing Item...
      • 根据您的构建配置,导航到 test_dotnet\lib\x64_vc15test_dotnet\lib\x86_vc15 文件夹。
      • 选择 fsdk.dll 动态库,然后单击 Add
    • AnyCPU 平台目标:
      • 右键单击 test_dotnet 项目,选择 Add -> "New Folder...",创建名为 x64 的文件夹。
      • 右键单击 x64 文件夹,选择 Add -> Existing Item...,导航到 test_dotnet\lib\x64_vc15\,选择 fsdk.dll,然后单击 Add
      • 重复上述步骤,创建名为 x86 的文件夹,并添加 test_dotnet\lib\x86_vc15\ 中的 fsdk.dll

    NOTE

    • 请确保将 fsdk.dllCopy to Output Directory 属性设置为 Copy if newer
    • 对于 AnyCPU 平台,在创建 SDK 对象之前,必须成功调用 Library.Initialize
  5. 添加 using 命名空间声明 (Program.cs):

    • Program.cs 文件的开头添加以下 using 声明:

      csharp
      using foxit;
      using foxit.common;
      using foxit.common.fxcrt;
      using foxit.pdf;
  6. 初始化 Foxit PDF SDK 库:

    • 在调用任何 API 之前,使用许可证密钥初始化 Foxit PDF SDK 库。参考 初始化 SDK 库
  7. 加载和解析 PDF 文档:

    • Sample.pdf 文件复制到 test_dotnet\test_dotnet 文件夹下。
    • Program.cs 中添加代码,加载 Sample.pdf 并解析其首页。
    [loadpdf.cs]
    csharp
    PDFDoc doc = new PDFDoc("..\..\Sample.pdf");
    error_code = doc.LoadW("");
    if (error_code != ErrorCode.e_ErrSuccess)
    {
        return;
    }
                    
    // Get the first page of the document.
    PDFPage page = doc.GetPage(0);
      
    // Parse page.
    page.StartParse((int)foxit.pdf.PDFPage.ParseFlags.e_ParsePageNormal, null, false);
  8. 渲染和保存 PDF 页面:

    • 添加代码,将 PDF 页面渲染成位图,并将其保存为 JPG 图片。
    [SaveAsImage.cs]
    cs
    int width = (int)(page.GetWidth());
    int height = (int)(page.GetHeight());
    Matrix2D matrix = page.GetDisplayMatrix(0, 0, width, height, page.GetRotation());
    // Prepare a bitmap for rendering.
    foxit.common.Bitmap bitmap = new foxit.common.Bitmap(width, height, foxit.common.Bitmap.DIBFormat.e_DIBArgb, System.IntPtr.Zero, 0);
    bitmap.FillRect(0xFFFFFFFF, null);
    // Render page
    Renderer render = new Renderer(bitmap, false);
    render.StartRender(page, matrix, null);
    // Add the bitmap to image and save the image.
    foxit.common.Image image = new foxit.common.Image();
    image.AddFrame(bitmap);
    image.SaveAs("testpage.jpg");

    :::

  9. 编译工程:

    • 单击 Build -> Build Solution 编译工程。
    • 可执行文件 test_dotnet.exe 将在 test_dotnet\test_dotnet\bin\Debugtest_dotnet\test_dotnet\bin\Release 文件夹下生成,具体取决于编译配置。

    NOTE

    • 对于 Win32/Win64 平台目标,请确保 fsdk.dllfsdk_dotnet.dll 已复制到 test_dotnet.exe 所在的同一文件夹下。
    • 对于 AnyCPU 平台目标,请确保 fsdk_dotnet.dll 已复制到 test_dotnet.exe 所在的同一文件夹下,并且 x64x86 文件夹中分别包含了对应的 fsdk.dll
  10. 运行工程:

    • 双击 test_dotnet.exe 运行工程。
    • 如果成功运行,将在当前文件夹下生成 testpage.jpg 文件。

完整代码示例:

[Program.cs]
cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using foxit;
using foxit.common;
using foxit.common.fxcrt;
using foxit.pdf;

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

            // The value of "sn" can be got from "gsdk_sn.txt" (the string after "SN=").
            // The value of "key" can be got from "gsdk_key.txt" (the string after "Sign=").
            string sn = " ";
            string key = " ";
            ErrorCode error_code = Library.Initialize(sn, key);
            if (error_code != ErrorCode.e_ErrSuccess)
            {
                return;
            }

            using (PDFDoc doc = new PDFDoc("../../Sample.pdf"))
            {
                error_code = doc.LoadW("");
                if (error_code != ErrorCode.e_ErrSuccess)
                {
                    Library.Release();
                    return;
                }

                using (PDFPage page = doc.GetPage(0))
                {
                    // Parse page.
                    page.StartParse((int)foxit.pdf.PDFPage.ParseFlags.e_ParsePageNormal, null, false);

                    int width = (int)(page.GetWidth());
                    int height = (int)(page.GetHeight());
                    Matrix2D matrix = page.GetDisplayMatrix(0, 0, width, height, page.GetRotation());

                    // Prepare a bitmap for rendering.
                    foxit.common.Bitmap bitmap = new foxit.common.Bitmap(width, height, foxit.common.Bitmap.DIBFormat.e_DIBArgb, System.IntPtr.Zero, 0);
                    bitmap.FillRect(0xFFFFFFFF, null);

                    // Render page
                    Renderer render = new Renderer(bitmap, false);
                    render.StartRender(page, matrix, null);

                    // Add the bitmap to image and save the image.
                    foxit.common.Image image = new foxit.common.Image();
                    image.AddFrame(bitmap);
                    image.SaveAs("testpage.jpg");
                }
            }
            Library.Release();
        }
    }
}