Foxit PDF SDK(UWP版)
Foxit PDF SDK(UWP版) 专注于帮助开发者轻松地将PDF技术集成到应用程序中。通过Foxit PDF SDK(UWP版),开发人员可以享受原生开发体验,使用完整的源代码控件和内置PDF阅读器来开发UWP应用程序。即使开发人员对PDF知识了解有限,也可以通过几行代码快速开发专业的、定制的阅读器。我们的软件开发工具包拥有您应用程序所需的文本处理功能。
使用Foxit PDF SDK(UWP版)开发PDF软件
开发人员可以使用Foxit PDF SDK(UWP版)轻松开发可以查看、创建和编辑PDF文档的UWP应用程序。我们的UI扩展组件提供了一个完全可定制的用户界面,内置文本标记、绘图、填写表单、全文搜索等工具。使用我们的核心API,开发人员可以快速、熟练地使用我们的PDF库。开发人员可以利用福昕强大的PDF SDK技术为您的客户提供一个出色的产品。我们的PDF SDK是根据UWP流畅的设计指南创建的,它是UWP移动应用的理想辅助开发工具。

功能
查看PDF
我们的核心API针对桌面和移动平台进行了优化,可以提供高保真度PDF文档渲染体验。
数字签名
无需打印文件,用户可以在其电子设备上签署文件,加速业务处理,并给用户带来舒适的体验。
PDF表单
支持使用电子设备填写数字表单,使之更高效、快捷。



权限管理
Foxit PDF SDK可以通过加密/解密服务或集成自定义数字权限管理(DRM)或信息权限管理(IRM)系统生成受保护的PDF文件。福昕的PDF SDK集成了微软权限管理服务(RMS)。
PDF注释
Foxit PDF SDK提供丰富的注释和标记功能,支持创建、编辑、导入和导出注释等。
全文搜索
采用SQLite数据库,支持对多种语言类型的PDF文档进行全文检索,提供快速、便捷的搜索体验。
FOXIT PDF SDK 7.5简介
Foxit PDF SDK在2020年最后一次发布中添加了许多新功能和改进。其中,桌面端SDK,版式识别的支持扩展到了Linux 版和 Mac版(此前Windows版已支持),自由文本注释支持富文本格式,HTML转PDF功能可直接从内存中加载Cookie,以及其他功能改进。
在移动端,通过Xamarin插件您只需两行代码即可添加多语言支持(Android版),签名功能提供了是否自动保存的选项,并且,我们还新增了用于搜索、形状、水印以及图像转PDF等功能的示例代码,帮助您的应用程序快速上市。
在Web版PDF库中,我们添加了与注释和表单相关的功能(如用于控制类型和外观的PDFControl类和Widget类),并支持对screen类型注释的设置和表单域的自动计算。最后,我们还为表单数据的导入和导出添加了CSV和TXT文件格式的支持。

高级技术
XFA表单
XFA表单是基于XML的表单。能够安全获取、呈现、移动、处理、输出、更新和打印与静态和动态XFA表单相关的信息。使用XFA表单能简化您的数据共享、数据和获取。
权限管理
将应用程序和文件连接到微软的权限管理服务平台,保护PDF文档的安全。Foxit PDF SDK支持集成自定义IRM和DRM解决方案。
密文处理
出于合法或安全的考虑,通过编程实现搜索和审查文档的敏感信息,确保您的客户和员工的信息安全。通过福昕强大的技术加密文档,使得文档符合通用数据保护条例(GDPR)。
试用福昕技术
福昕阅读器(UWP版)是使用PDF SDK(UWP版)开发而成,可以从微软商店免费下载。欢迎立即试用。
优点
原生用户界面
PDF SDK(UWP版)专为开发人员构建。我们提供了内置PDF阅读器,使您开发工作量减半,并允许您自定义此阅读器。
易于集成
我们开发UWP PDF库时将平台作为首要考虑因素。我们遵循UWP的命名规定和流畅设计原则,使我们的程序符合UWP应用程序标准。
功能丰富
我们的产品功能在移动端和桌面端保持一致,使得跨平台开发更加简单顺畅。我们会不断更新功能集,欢迎关注我们的产品页面。
福昕核心技术支持
Foxit PDF SDK的核心技术已经存在多年,并且受到许多知名公司的信任。福昕强大的引擎使文档在不同平台上都可以快速查看并且保持一致。
系统要求
- Windows 10
- Visual Studio 2015或更高版本
Foxit PDF SDK(UWP版)样例
//Edit the bookmarks title, color, style... then save them to a new pdf. void FunctionDemo::MainPage::outline_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) { StorageFolder^ documentFolder = Windows::Storage::KnownFolders::DocumentsLibrary; create_task(documentFolder->GetFileAsync("Outline.pdf")).then([=](StorageFile^ file) { try { m_doc = ref new FSPDFDoc(file,0); if (!m_doc) { return; } FSErrorCode code = m_doc->Load(""); if (code != FSErrorCode::e_errSuccess) { return; } FSBookmark^ root = m_doc->GetFirstBookmark(); this->setProperties(root); } catch (Platform::Exception^ e) { OutputDebugString(e->Message->Data()); } }).then([=]() { return documentFolder->CreateFileAsync("Output_Outline.pdf", CreationCollisionOption::ReplaceExisting); }).then([=](StorageFile^ file) { try { m_doc->SaveAs(file, 0); this->showMesseageDialog("", "The output file is saved to:" + file->Path); } catch (Platform::Exception^ e) { } }); } void FunctionDemo::MainPage::setProperties(FSBookmark^ bookmark) { FSBookmark^ bm = nullptr; for (bm = bookmark->GetFirstChild(); bm != nullptr; bm = bm->GetNextSibling()) { String^ title = bm->GetTitle(); bm->SetTitle(title + "_renamed"); bm->SetColor(0x0000ffff); bm->SetStyle((int)FSBookmarkStyle::e_bookmarkStyleBold); FSBookmark^ child = bm->GetFirstChild(); if (child) { this->setProperties(bm); } } } void FunctionDemo::MainPage::showMesseageDialog(Platform::String^ title, Platform::String^ content) { auto messageDialog = ref new Windows::UI::Popups::MessageDialog(content, title); messageDialog->Commands->Append(ref new Windows::UI::Popups::UICommand("OK", nullptr, PropertyValue::CreateInt32(0))); messageDialog->DefaultCommandIndex = 0; messageDialog->ShowAsync(); }
//Render the pdf page, then save it to a bitmap file. void FunctionDemo::MainPage::render_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) { StorageFolder^ documentFolder = Windows::Storage::KnownFolders::DocumentsLibrary; std::shared_ptr<fsbitmap^> spBitmap = std::make_shared<fsbitmap^>(nullptr); create_task(documentFolder->GetFileAsync("FoxitBigPreview.pdf")).then([=](StorageFile^ file) { try { m_doc = ref new FSPDFDoc(file, 0); if (!m_doc) { return; } FSErrorCode code = m_doc->Load(""); if (code != FSErrorCode::e_errSuccess) { return; } FSPDFPage^ page = m_doc->GetPage(0); if (!page->IsParsed()) { page->StartParse(0, nullptr, false); } //create bitmap int pageWidth = (int)page->GetWidth(); int pageHeight = (int)page->GetHeight(); *spBitmap = ref new FSBitmap(pageWidth, pageHeight, FSDIBFormat::e_dibRgb32, nullptr, 0); if (!(*spBitmap)) { return; } (*spBitmap)->FillRect(0xffffffff, nullptr); //init renderer FSRenderer^ render = ref new FSRenderer((*spBitmap), false); if (!render) { return; } //set different kinds of properties render->SetRenderContentFlags((int)FSRenderContentFlag::e_renderPage); render->SetTransformAnnotIcon(true); render->SetColorMode(FSRenderColorMode::e_colorModeNormal); render->SetForceHalftone(true); FSMatrix^ matrix = page->GetDisplayMatrix(0, 0, pageWidth, pageHeight, FSRotation::e_rotation0); render->StartRender(page, matrix, nullptr); } catch (Platform::Exception^ e) { OutputDebugString(e->Message->Data()); } }).then([=]() { return documentFolder->CreateFileAsync("Output_Render.bmp", CreationCollisionOption::ReplaceExisting); }).then([=](StorageFile^ file) { FSImage^ img = ref new FSImage(); img->AddFrame((*spBitmap)); if(img->SaveAs(file, "bmp")) this->showMesseageDialog("", "The output file is saved to:" + file->Path); else this->showMesseageDialog("", "error!"); }); }