Foxit PDF SDK(Linux版)

Foxit PDF SDK(Linux版)是为Linux企业或云应用程序设计的PDF解决方案,提供强大的渲染、数字签名、表单填写、文本处理等功能。Foxit PDF SDK(Linux版)提供了实用的PDF演示代码,帮助开发人员通过我们的核心API实现强大的功能。Foxit PDF SDK(Linux版)功能丰富,对于任何想要在嵌入式Linux操作系统和云应用程序中创建一个完全可定制的PDF阅读器或后台应用的Linux开发人员来说都是非常理想的解决方案。

使用Foxit PDF SDK(Linux版)开发PDF软件

将Foxit PDF SDK(Linux版)嵌入到Linux应用程序中十分简单。只需打开任意一款Linux集成开发环境,复制您所需要的库就可以用C++或Java进行开发。同时SDK提供的文档和示例项目会指导您使用PDF SDK(Linux版)进行项目创建及开发。我们的开发库适用于32位操作系统和64位操作系统。

PDF SDK for Linux Support

功能

查看PDF

我们的核心API针对桌面和移动平台进行了优化,可以提供高保真度PDF文档渲染体验。

数字签名

无需打印文件,用户可以在其电子设备上签署文件,加速业务处理,并给用户带来舒适的体验。

PDF表单

支持使用电子设备填写数字表单,使之更高效、快捷。

权限管理

Foxit PDF SDK可以通过加密/解密服务或集成自定义数字权限管理(DRM)或信息权限管理(IRM)系统生成受保护的PDF文件。福昕的PDF SDK集成了微软权限管理服务(RMS)。

PDF注释

Foxit PDF SDK提供丰富的注释和标记功能,支持创建、编辑、导入和导出注释等。

全文搜索

采用SQLite数据库,支持对多种语言类型的PDF文档进行全文检索,提供快速、便捷的搜索体验。
 

FOXIT PDF SDK 7.0和PDF SDK(WEB版)7.1

最新发布的Foxit PDF SDK 7.0是我们迄今为止最重大的版本。该版本提供了22种新的JavaScript方法和属性,可让您更好地管理注释;其PDF转换插件可让您通过福昕PDF SDK引擎将HTML文件转换为PDF文件;支持PAdES(在PDF中使用CAdES的官方标准)签名;以及新增对.NET Core 的支持。

PDF SDK(WEB版)7.1提供了针对移动设备(包括平板电脑)的完全响应式UI。您可以将福昕web viewer集成到您的应用程序中,从而为用户提供无缝的移动端查看体验。PDF SDK(WEB版)7.1还提供了其他让人心动的新功能,如将注释数据以XFDF格式进行导入/导出,对AngularJS的支持,等等!

FOXIT PDF SDK 6.4 

PDF SDK 6.4为用户带来了全新的功能,包括备受欢迎的OCR附加组件、PDF比较工具、PDF合规性附加组件等等。除了新增这些功能外,我们还增强改进了注释功能(单个注释的旋转、扁平化)和XFA表单的签名功能,针对Cordova插件提供新的API,并更新了示例代码和开发人员指南,同时修复了若干问题。

高级技术

XFA表单

XFA表单是基于XML的表单。能够安全获取、呈现、移动、处理、输出、更新和打印与静态和动态XFA表单相关的信息。使用XFA表单能简化您的数据共享、数据和获取。

权限管理

将应用程序和文件连接到微软的权限管理服务平台,保护PDF文档的安全。Foxit PDF SDK支持集成自定义IRM和DRM解决方案。
 
 

密文处理

出于合法或安全的考虑,通过编程实现搜索和审查文档的敏感信息,确保您的客户和员工的信息安全。通过福昕强大的技术加密文档,使得文档符合通用数据保护条例(GDPR)。

优点

完整的Linux支持

得益于其强大、灵活和高效的功能,福昕可以专门为已针对硬件产品进行优化的嵌入式Linux操作系统和可扩展云应用提供强大的解决方案。

占用内存小

PDF SDK(Linux版)即使处理复杂任务也只占用很小的运行内存。此外,我们的内存溢出管理功能确保您的应用程序能够从内存异常中恢复。

功能丰富

我们的产品功能在移动端、服务器端、桌面端保持一致,使得跨平台开发更加简单顺畅。我们会不断更新功能集,欢迎关注我们的产品页面。

福昕核心技术支持

Foxit PDF SDK的核心技术已经存在多年,并且受到许多知名公司的信任。福昕强大的引擎使文档在不同平台上都可以快速查看并且保持一致。

系统要求

  • Linux 32位和Linux 64位
  • 测试环境:Centos 6.4 32位和Centos 6.5 64位
  • PDF SDK(Linux版)包括32位和64位的版本库

在Linux中加载PDF文件或添加图像

    public static void main(String[] args) throws PDFException, IOException {
        createResultFolder(output_path);
        int error_code = Library.initialize(sn, key);
        if (error_code != e_ErrSuccess) {
            System.out.println(String.format("Library Initialize Error: %d\n", error_code));
            return;
        }

        String input_file = input_path + "AboutFoxit.pdf";
        String output_file1 = output_path + "bookmark_add.pdf";
        String output_file2 = output_path + "bookmark_change.pdf";
        String bookmark_info_file = output_path + "bookmark_info.txt";

        try {
            PDFDoc doc = new PDFDoc(input_file);
            error_code = doc.load(null);
            if (error_code != e_ErrSuccess) {
                System.out.println(String.format("The Doc [%s] Error: %d\n", input_file, error_code));
                return;
            }

            // Show original bookmark information.
            showBookmarksInfo(doc, bookmark_info_file);

            //Get bookmark root node or Create new bookmark root node.
            Bookmark root = doc.getRootBookmark();
            if (root.isEmpty()) {
                root = doc.createRootBookmark();
            }
            for (int i = 0; i < doc.getPageCount(); i += 2) {
                Destination dest = Destination.createFitPage(doc, i);

                String ws_title = String.format("A bookmark to a page (index: %d)", i);
                Bookmark child = root.insert(ws_title,
                        e_PosLastChild);
                child.setDestination(dest);
                child.setColor(i * 0xF68C21);
            }
            doc.saveAs(output_file1, e_SaveFlagNoOriginal);

            // Get first bookmark and change properties.
            Bookmark first_bookmark = root.getFirstChild();
            first_bookmark.setStyle(e_StyleItalic);
            first_bookmark.setColor(0xFF0000);
            first_bookmark.setTitle("Change bookmark title, style, and color");

            // Remove next sibling bookmark
            if (!first_bookmark.getNextSibling().isEmpty()) {
                doc.removeBookmark(first_bookmark.getNextSibling());
            }

            bookmark_info_file = output_path + "bookmark_info1.txt";
            showBookmarksInfo(doc, bookmark_info_file);

            doc.saveAs(output_file2, e_SaveFlagNoOriginal);
            System.out.println("Bookmark demo.");


        } catch (Exception e) {
            e.printStackTrace();

        }
        Library.release();
        return;
    } 
public class pdf2image {


    private static String key = "";
    private static String sn = "";
    private static String output_path = "../output_files/pdf2image/";
    private static String input_path = "../input_files/";
    private static String input_file = input_path + "AboutFoxit.pdf";
    private static String[] support_image_extends = {".bmp", ".jpg", ".jpeg", ".png", ".jpx", ".jp2"};
	private static String[] support_multi_image = {".tif", ".tiff"};

    public static void main(String[] args) throws PDFException {

        createResultFolder(output_path);

        int error_code = Library.initialize(sn, key);
        if (error_code != e_ErrSuccess) {
            System.out.println("Library Initialize Error: " + error_code);
            return;
        }
        PDFDoc doc = new PDFDoc(input_file);
        error_code = doc.load(null);
        if (error_code != e_ErrSuccess) {
            System.out.println("The Doc " + input_file + " Error: " + error_code);
            return;
        }

        Image image = new Image();
        int nPageCount = doc.getPageCount();
        for (int i = 0; i < nPageCount; i++) {
            PDFPage page = doc.getPage(i);
            // Parse page.
            page.startParse(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.

            Bitmap bitmap = new Bitmap(width, height, e_DIBArgb, null, 0);
            bitmap.fillRect(0xFFFFFFFF, null);

            // Render page
            Renderer render = new Renderer(bitmap, false);
            render.startRender(page, matrix, null);
            image.addFrame(bitmap);
            for (int j = 0; j < support_image_extends.length; j++) {
                String extend = support_image_extends[j];
                Save2Image(bitmap, i, extend);
            }
        }
        for (int j = 0; j < support_multi_image.length; j++) {
            String extend = support_multi_image[j];
            Save2Image(image, extend);
        }

        Library.release();
    }

    private static void createResultFolder(String output_path) {
        File myPath = new File(output_path);
        if (!myPath.exists()) {
            myPath.mkdir();
        }
    }

    private static void Save2Image(Bitmap bitmap, int nPageIndex, String sExt) throws PDFException {
        Image image = new Image();
        image.addFrame(bitmap);
        String s = "AboutFoxit_" + nPageIndex;
        s = output_path + s + sExt;
        image.saveAs(s);

		System.out.println("Save page " + nPageIndex + " into a picture of " + sExt + " format.");
    }

	private static void Save2Image(Image image, String sExt) throws PDFException {
        String s = "AboutFoxit";
        s = output_path + s + sExt;
        image.saveAs(s);

		System.out.println("Save pdf file into a picture of " + sExt + " format.");
    }
}