javacpp调用pdfium的c++动态库

news2024/11/17 12:49:55

1、.h头文件

2、生成java代码的conf    

PdfiumDocumentConfigure.java
package org.swdc.pdfium.conf;

import org.bytedeco.javacpp.annotation.Platform;
import org.bytedeco.javacpp.annotation.Properties;
import org.bytedeco.javacpp.tools.InfoMap;
import org.bytedeco.javacpp.tools.InfoMapper;

@Properties(value = {
        @Platform(
                value = "windows-x86_64",
                include = "fpdf_doc.h",
                link = "pdfium"
        ),
        @Platform(
                value = "macosx-x86_64",
                include = "fpdf_doc.h",
                link = "pdfium"
        )
},
        inherit = PdfiumViewConfigure.class,
        target = "org.swdc.pdfium.core.PdfiumDocument",
        global = "org.swdc.pdfium.core.PdfiumDocument"
)
public class PdfiumDocumentConfigure implements InfoMapper {
    @Override
    public void map(InfoMap infoMap) {

    }
}
PdfiumEditConfigure.java
package org.swdc.pdfium.conf;

import org.bytedeco.javacpp.annotation.Platform;
import org.bytedeco.javacpp.annotation.Properties;
import org.bytedeco.javacpp.tools.Info;
import org.bytedeco.javacpp.tools.InfoMap;
import org.bytedeco.javacpp.tools.InfoMapper;

@Properties(value = {
        @Platform(
                value = "windows-x86_64",
                include = {
                        "fpdf_edit.h",
                        "fpdf_save.h",
                        "ext_fpdf_save.h",
                        "ext_fpdf_edit.h"
                },
                link = "pdfium"
        ),
        @Platform(
                value = "macosx-x86_64",
                include = {
                        "fpdf_edit.h",
                        "fpdf_save.h",
                        "ext_fpdf_save.h",
                        "ext_fpdf_edit.h"
                },
                link = "pdfium"
        )
},
        inherit = PdfiumViewConfigure.class,
        target = "org.swdc.pdfium.core.edit",
        global = "org.swdc.pdfium.core.PdfiumEdit"
)
public class PdfiumEditConfigure implements InfoMapper {
    @Override
    public void map(InfoMap infoMap) {

        infoMap.put(new Info("FPDF_FILEWRITE_").cppTypes("FPDF_FILEWRITE").translate());
        // do not add ext private methods.
        infoMap.put(new Info(
                "priv_fpdf_write_data",
                "priv_fpdf_readJpegBytes",
                "FWriter_",
                "PDFWriter"
        ).skip());

    }
}

PdfiumTextConfigure.java
package org.swdc.pdfium.conf;

import org.bytedeco.javacpp.annotation.Platform;
import org.bytedeco.javacpp.annotation.Properties;
import org.bytedeco.javacpp.tools.InfoMap;
import org.bytedeco.javacpp.tools.InfoMapper;

@Properties(value = {
        @Platform(
                value = "windows-x86_64",
                include = "fpdf_text.h",
                link = "pdfium"
        ),
        @Platform(
                value = "macosx-x86_64",
                include = "fpdf_text.h",
                link = "pdfium"
        )
},
        inherit = PdfiumViewConfigure.class,
        target = "org.swdc.pdfium.core.PdfiumText",
        global = "org.swdc.pdfium.core.PdfiumText"
)
public class PdfiumTextConfigure implements InfoMapper {
        @Override
        public void map(InfoMap infoMap) {

        }
}

 

PdfiumViewConfigure.java
package org.swdc.pdfium.conf;

import org.bytedeco.javacpp.annotation.Platform;
import org.bytedeco.javacpp.annotation.Properties;
import org.bytedeco.javacpp.tools.Info;
import org.bytedeco.javacpp.tools.InfoMap;
import org.bytedeco.javacpp.tools.InfoMapper;

@Properties(value = {
        @Platform(
                value = "windows-x86_64",
                include = "fpdfview.h",
                link = "pdfium",
                preload = "pdfium"
        ),
        @Platform(
                value = "macosx-x86_64",
                include = "fpdfview.h",
                link = "pdfium",
                preload = "pdfium"
        )
},
        target = "org.swdc.pdfium.core.view",
        global = "org.swdc.pdfium.core.PdfiumView"
)
public class PdfiumViewConfigure implements InfoMapper {
        @Override
        public void map(InfoMap infoMap) {

                translateType(infoMap,"fpdf_annotation_t__","FPDF_ANNOTATION");
                translateType(infoMap,"fpdf_attachment_t__","FPDF_ATTACHMENT");
                translateType(infoMap,"fpdf_avail_t__","FPDF_AVAIL");
                translateType(infoMap,"fpdf_bitmap_t__","FPDF_BITMAP");
                translateType(infoMap,"fpdf_bookmark_t__","FPDF_BOOKMARK&#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2200795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络知识点之—EVPN

EVPN(Ethernet Virtual Private Network)是下一代全业务承载的VPN解决方案。EVPN统一了各种VPN业务的控制面,利用BGP扩展协议来传递二层或三层的可达性信息,实现了转发面和控制面的分离。 EVPN解决传统L2VPN的无法实现负载分担、…

springboot+vue前后端分离-使用腾讯云服务器部署网站

项目打包 参考链接 CSDN springboot打包 idea默认新建的shell窗口在项目根目录位置,可以看到项目根目录下有mvnw HELP.md log mvnw mvnw.cmd pom.xml src target./mvnw clean package -Dmaven.test…

Kali Linux中安装配置影音资源下载神器Amule

一、Debian系列Linux安装amule命令: sudo apt update sudo apt-get install amule amule-utils 二、配置Amule的要点: 1、首次运行Amule,提示是否下载服务器列表,点击是。 2、搜索选项的类型选择全球,类型的默认选项…

数据恢复与数据取证:Visual NAND Reconstructor 闪存数据恢复工具

天津鸿萌科贸发展有限公司是专业闪存数据恢复工具 VNR (Visual NAND Reconstructor) 的授权代理商。 VNR(Visual NAND Reconstructor)可视化 NAND 重建工具套件由硬件和软件构成。其中硬件部分包含 NAND 读卡器和一组用于不同 NAND 芯片封装的适配器。读…

LeetCode 48 Rotate Image 解题思路和python代码

题目: You are given an n x n 2D matrix representing an image, rotate the image by 90 degrees (clockwise). You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and …

序列化流和反序列化流

序列化流 ObjectOutputStream 序列化流/对象操作输出流 包装基本流,属于字节流的一种,负责输出数据。可以把Java中的对象写到本地文件中去。 构造方法: public ObjectOutputStream(OutputStream out)把基本流包装成高…

【Java 并发编程】解决多线程中数据错乱问题

前言 承接上回,我们已经理解了线程的一些相关操作,本篇内容将会讲到如何去解决线程竞争导致的数据错乱。 前期回顾:线程操作 目录 前言 线程竞争的场景 竞态条件的详解 synchronized 关键字 ReentrantLock 类 线程竞争的场景 概念&#xff1a…

异步场景: promise、async函数与await命令介绍

如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下方名片,关注公众号,公众号更新更快,同时也有更多学习资料和技术讨论群。 在鸿蒙的开发中,我们时常会遇到promise异步场景,有同学反馈说…

Adobe Acrobat Pro和Adobe Acrobat DC有什么区别?

主要区别 Adobe Acrobat Pro: 以单次购买的方式提供,用户需要一次性付费购买,之后即可永久使用该版本。不会频繁更新,通常只在发行新版本时进行更新。 Adobe Acrobat DC: 以订阅方式提供,用户需要每年支付…

《2024 国庆旅游数据洞察:活力与新趋势》

《2024 国庆旅游数据洞察:活力与新趋势》 一、国庆旅游市场整体态势 今年国庆假期,旅游市场的火爆程度令人瞩目。从出行人次来看,嘀嗒出行的国庆顺风出行预测显示,顺风出发高峰日预计为 9 月 29 日,环比 9 月出行峰值…

在Ubuntu 22.04上安装Ollama的两种方式

curl 安装 参考Linux上安装Ollama的官方文档:https://ollama.com/download/linux 在终端执行以下命令即可: curl -fsSL https://ollama.com/install.sh | shdocker 安装 官方 Ollama Docker 镜像可以直接在Docker Hub上进行拉取。 Docker Hub上的ol…

Java 方法的重载

1.重载:在一个类中,方法的函数名相同,但形参不同。 结果: 2.方法重载的规则: (1)方法名必须相同。(例如:重名的人有很多) (2&#x…

数据库(MySQL):使用命令从零开始在Navicat创建一个数据库及其数据表(二).设置主键自增等特点

前言 在上一节中,主要介绍了 Navicat Premium 17 的使用以及创建一个基础的表格。当时只设置了给数据表补充字段,没有设置给数据表删除字段。现在补充一下。 ALTER TABLE student ADD test int(4); 给名为 student 的数据表添加 test 列&#xf…

正则表达式-“三剑客”(grep、sed、awk)

1.3正则表达式 正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串,将匹配的子串替换或者从某个串中取出符号某个条件的子串等,在linux中代表自定义的模式模版,linux工具可以用正则表达式过滤文本。Linux…

vavr Java的函数式编程神器-Part1

微信公众号:阿俊的学习记录空间 小红书:ArnoZhang wordpress:arnozhang1994 博客园:arnozhang CSDN:ArnoZhang1994 1. 介绍 Vavr(前称 Javaslang)是一个为 Java 8 提供的函数式库,…

红外探测算法!!!

一、红外探测的基本原理 红外探测基于红外辐射与物体的热状态之间的关系。物体温度越高,辐射能量越大。红外探测器通过接收物体发出的红外辐射,将其转换为电信号,进而实现对目标的探测和识别。 二、红外探测算法的主要类型 背景差分法&…

[自然语言处理]RNN

1 传统RNN模型与LSTM import torch import torch.nn as nntorch.manual_seed(8)def dm01():参数1:输入向量的维数参数2:隐藏层神经元的个数参数3:隐藏层的层数:return:rnn nn.RNN(5, 6, 1)参数1:句子长度sequence_length参数2&am…

九芯电子NVH/NVF语音芯片OTA升级操作方法

OTA(Over-The-Air)升级是指通过无线网络远程对设备进行软件升级的过程。对于九芯电子NVH/NVF语音芯片,OTA升级可以通过WiFi模组实现,支持MQTT、HTTP等协议,方便快捷‌。 具体操作步骤如下: 1.进入九芯“智…

计算机毕业设计 基于Django的学生选课系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

处理Java内存溢出问题(java.lang.OutOfMemoryError):增加JVM堆内存与调优

处理Java内存溢出问题(java.lang.OutOfMemoryError):增加JVM堆内存与调优 在进行压力测试时,遇到java.lang.OutOfMemoryError: Java heap space错误或者nginx报错no live upstreams while connecting to upstream通常意味着应用的…