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 8.5简介
Foxit PDF SDK 8.0是PDF领域中一个具有变革性的版本,无论是Web端基于JavaScript的Web Viewer还是桌面端SDK 和移动端SDK,都带来了许多新增功能和升级改进。我们还为PDF SDK(Web版)提供了全新的Viewer Demo。
在 Web端,我们新增了一个全新的Viewer Demo,向您展示如何充分利用我们基于JavaScript的 PDF 库。
我们还增强了协作功能,让您可以在 PDF查看器的多个实例之间同步注释和页面操作。您可以在自己的应用程序中轻松部署我们的SDK和管理所有用户的实时访问。另外,Web端SDK还提供了全新的辅助功能,如高对比度的支持和“文本到语音”转换工具。
我们的桌面端SDK提供了对 ARM Linux平台的支持、对HTMLtoPDF功能的重大升级、将表单数据导出到 CSV 功能等等。
在移动端,我们推出了新的UI,风格与桌面端UI以及福昕的其他产品的更加统一,签名功能中新增了一个用于检测是否已应用签名的事件,以及UI 上提供了注释小结功能。立即下载试用吧!

高级技术
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!"); }); }