福昕 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
可执行文件。可执行文件的名称取决于工程编译的配置。
运行所有示例
- 打开解决方案: 在
\examples\simple_demo
文件夹下,根据您的 Visual Studio 版本,选择相应的解决方案文件(.sln)打开。 - 生成解决方案: 在 Visual Studio 中,选择
生成 > 生成解决方案
菜单,编译所有示例。 - 运行示例: 编译成功后,在 双击生成的
.exe
可执行文件即可运行相应的示例。
运行某个特定示例
- 生成示例工程: 在 Visual Studio 的解决方案资源管理器中,右键单击目标示例工程,选择
生成
。或者,直接双击示例工程文件夹下的.vcxproj
文件,打开并生成该工程。 - 运行示例: 编译成功后,双击生成的
.exe
可执行文件即可运行该示例。
NOTE
- 若需查看详细的示例执行过程,请通过命令行运行。
- 打开
cmd.exe
,使用cd
命令导航至\examples\simple_demo\bin
目录,然后执行特定的.exe
文件。
快速创建
快速创建 C# .NET Framework 示例工程
创建控制台应用程序:
- 打开 Visual Studio,创建一个名为
test_dotnet
的 C# 控制台应用程序。
- 打开 Visual Studio,创建一个名为
复制 SDK 库文件:
- 将
foxitpdfsdk_10_1_win_dotnet
文件夹下的lib
文件夹复制到test_dotnet
工程目录下。
- 将
添加 fsdk_dotnet.dll 引用:
- 在 Solution Explorer 中,右键单击
test_dotnet
工程,选择 "Add" -> "Reference..."。 - 在 "Reference Manager" 对话框中,选择 "Browse" 选项卡。
- 根据您的工程编译配置,导航到
test_dotnet\lib\x64_vc10
、test_dotnet\lib\x86_vc10
或test_dotnet\lib\anycpu_vc15
文件夹。 - 选择
fsdk_dotnet.dll
动态库,然后单击 "Add"。
NOTE
请确保
fsdk_dotnet.dll
的架构与应用程序的平台目标(Win32/Win64/AnyCPU)相匹配。- 在 Solution Explorer 中,右键单击
添加 fsdk.dll 动态库:
- Win32/Win64 平台目标:
- 右键单击
test_dotnet
项目,选择Add
->Existing Item...
。 - 根据您的构建配置,导航到
test_dotnet\lib\x64_vc15
或test_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.dll
的Copy to Output Directory
属性设置为Copy if newer
。 - 对于 AnyCPU 平台,在创建 SDK 对象之前,必须成功调用 Library.Initialize。
- Win32/Win64 平台目标:
添加 using 命名空间声明 (Program.cs):
在
Program.cs
文件的开头添加以下 using 声明:csharpusing foxit; using foxit.common; using foxit.common.fxcrt; using foxit.pdf;
初始化 Foxit PDF SDK 库:
- 在调用任何 API 之前,使用许可证密钥初始化 Foxit PDF SDK 库。参考 初始化 SDK 库。
加载和解析 PDF 文档:
- 将
Sample.pdf
文件复制到test_dotnet\test_dotnet
文件夹下。 - 在
Program.cs
中添加代码,加载Sample.pdf
并解析其首页。
[loadpdf.cs]
csharpPDFDoc 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);
- 将
渲染和保存 PDF 页面:
- 添加代码,将 PDF 页面渲染成位图,并将其保存为 JPG 图片。
[SaveAsImage.cs]
csint 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");
:::
编译工程:
- 单击
Build
->Build Solution
编译工程。 - 可执行文件
test_dotnet.exe
将在test_dotnet\test_dotnet\bin\Debug
或test_dotnet\test_dotnet\bin\Release
文件夹下生成,具体取决于编译配置。
NOTE
- 对于 Win32/Win64 平台目标,请确保
fsdk.dll
和fsdk_dotnet.dll
已复制到test_dotnet.exe
所在的同一文件夹下。
- 对于 AnyCPU 平台目标,请确保
fsdk_dotnet.dll
已复制到test_dotnet.exe
所在的同一文件夹下,并且x64
和x86
文件夹中分别包含了对应的fsdk.dll
。
- 单击
运行工程:
- 双击
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();
}
}
}