【优秀框架记录】android解析PDF、XPS文件的第三方类库muPdf

android pdf框架 pdf已经使用很普遍了,android上的好用的pdf工具也有不少,个人更经常是用于阅读,很少标记,所以有一个适合的阅读器对我来说非常重要了.自己写一个阅读器是不是太闲了,市面上有静读天下,ebookdroid都是非常优秀的阅读器,只不过对于来说,需求没匹配上,因为我读了几百上千本书,还有很多没有读的,需要一个好的文件浏览器,ebookdroid本来是很好的,但滚动上有问题,横竖切换有bug一直没有更新了.静读天下是基于pdfmaster,有些pdf的中文显示不了. 阅读详情

android解析PDF、XPS文件的第三方类库muPdf

转自:http://xfans.us/archives/61

Mupdf是一个开源的、轻量级的PDF、XPS解析器。支持windows、linux、ios、android等平台。

由于编译比较麻烦,可以使用编译好的项目。

效果图

http://xfans.qiniudn.com/wp-content/uploads/2014/05/2014052301.png

整合项目

1)下载编译完的项目。

2)拷贝src目录下的所有代码。

3)拷贝res目录下的所有代码。

4)拷贝libs目录下面的.so文件。

5)在Mainfest文件中添加Activity。

使用

Uri uri = Uri.parse(filename);
Intent intent = new Intent(NoticeDetailsActivity.this,MuPDFActivity.class);
intent.setAction(Intent.ACTION_VIEW);
intent.setData(uri);
startActivity(intent);

filename为PDF文件路径

Links

下载地址:网盘

官方网站:http://www.mupdf.com/


c语言 解析pdf 开源库,使用第三方开源库mupdf,实现pdf转png step1: 下载SumatraPDF工程:https://github.com/Bitterbell/Pdf-ReadermuPdf 库是一个开源的 pdf 读取器,但是在 github 上下载的源码编译得到 muPdf.dll 比较困难。所以我们下载 SumatraPDF 这个工程,它只能用 vs2017 打开。【注1】Pdf-Reader-master.zip 这个解压后就是 Sumatra... 阅读详情

相关推荐

andorid实现pdf批注、笔记demo

Andorid实现pdf批注、笔记demo 1、兴建andorid项目 2、导入pdf包 implementation ‘com.lonelypluto:pdf-viewer:1.0.5’ 1、创建页面和java类 1.1创建OutlineAdapter package com.example.myapplication.adapter; import android.content.Con...

qq_38543475的博客 4850

编译第三方开源库mupdf,实现pdf转png

step1: 下载SumatraPDF工程: https://github.com/Bitterbell/Pdf-Reader muPdf 库是一个开源的 pdf 读取器,但是在 github 上下载的源码编译得到 muPdf.dll 比较困难。所以我们下载 SumatraPDF 这个工程,它只能用 vs2017 打开。 【注1】Pdf-Reader-master.zip 这个解压后就是 Sum...

weixin_42142612的博客 6692

PdfViewerDemo:pdf阅读器,基于MuPDF开发,可横竖切换浏览、多种批注功能、电子签章

PdfViewerDemo pdf阅读器,基于MuPDF开发,可横竖切换浏览、多种批注功能、电子签章 PdfViewerDemo is developed within the project. Screenshots Features 显示pdf 支持横竖滑动 动态改变标注颜色和画笔颜色 支持插入图片 How do I use? pdf-viewer is available through JCenter. To be able to use this library in your project, add the following dependency to your build.gradle file: dependencies{ implementation 'com.lonelypluto:pdf-viewer:1.0.7' } Simple use cases wi

MuPDF 开源PDF库编译过程记录

最近工作中需要开发一个PDF阅读的功能,开始选择了Android-pdfview开源组件,但是有些PDF文件打开会crash,这个开源组件没有提供jni代码,只能在java层进行捕获,还是无法解决打不开某些pdf文件的问题;只能另寻他家;在网上转了一圈,貌似可行的开源库有pdfbox,iText和MuPDF;最终选择MuPDF做尝试;从github找到了一个demo,运行了一下,前面打不开的pdf

super_spy的专栏 8294

java读取xps文件

java读取xps文件

mupdf-source:这里提供mupdf开源库的源代码,并已为android平台编译好;

mupdf来源 这里提供mupdf开源库的源代码,并已为android平台编译好; #MuPdf官方地址: ://mupdf.com/ #文件说明mupdf-1.8-source.tar.gz为官方1.8版本原版源代码; mupdf-1.9a-source.tar.gz为官方1.9a版本原版源代码; mupdf-1.8-source-compiled.7z为官方1.8版本且已为android平台编译过的源代码,解压可得到mupdf-1.8-sourcedirectory; mupdf-1.9a-source-compiled.7z为官方1.9a版本且已为android平台编译过的源代码,解压可得到mupdf-1.9a-source目录; 目前上传了两个版本的mupdf开放库,mupdf-1.8和mupdf-1.9a;并已安装官方指导为android平台编译过; 1.9a版本编译后的s

mupdf源码分析(一)简介

1.概述 MuPDF是一个轻量级的pdf,xp和电子书阅读器。 MuPDF是一个跨平台的软件,可以在windows,linux和国产化平台下运行。 MuPDF由依赖的各种软件库,命令行工具和查看器组成。 2.优势 小巧,快速,完整: 软件功能简单,满足各种文档格式,如PDF,XPS,OpenXPS,CBZ,EPUB等。 软件页面渲染速度快。 不需要依赖其他的软件和平台,单独可以完成文档的阅读功能。 3.libmuf库 此模块是Mupdf实现...

fxbjye的博客 6794

MuPDF动态链接库

MuPDF的动态链接库,由于官方提供的工程设置,编译后生产的是exe和静态库,而开源库sumatrapdf为我们提供了动态链接库,sumatrapdf编译后可以在obj-dbg中找到,这里提供大家下载,免得大家需要编译一次。

【免费下载】 探索MuPDF:一款高效、轻量级的PDF阅读器与解析库

是由 Artifex Software 开发的一个开源PDF阅读器和解析库,它专注于提供快速、小巧且功能强大的PDF处理能力。这款项目以其高度可定制性和跨平台性赢得了开发者们的喜爱,现在就让我们一起深入了解它的技术特性,应用场景,以及为何你应该考虑在你的项目中使用它。 ## 技术分析 MuPDF 的核心是一个轻量级的 PDF 解析引擎,它实现了 PDF 规范的大部分功能,包括文本、图像、图形及...

gitblog_00013的博客 3548

MuPDF-1.6库(含源码)

支持Android 6.0 及以上版本,解决TEXTREL文件,含有源码以及mupdf库,可以直接使用,使用参考http://blog.youkuaiyun.com/qq_33571718/article/details/78811130

分享通达信破解交易接口的使用!

那其实通达信破解交易接口的使用方法比较复杂,这里以MA均线指标为例子,只要理解了这些操作步骤,就可以很容易地使用其他指标包括自己编写的指标来进行交易。委托结果(包含委托编号), 需要分配 1024*1024 字节的空间。委托结果数组, 每项结果需要分配 1024*1024 字节的空间。0: 买入, 1: 卖出, 2: 融资买入, 3: 融券卖出,4: (市价委托)上海五档即成剩撤, 深圳五档即成剩撤。4: 买券还券, 5: 卖券还款, 6: 现券还券。0: 上海限价委托, 深圳限价委托。

1841085904的博客 2360

xps 转 pdf android版,xps文件转换pdf

XPS阅读器是一款专门为XPS格式的文件而打造的阅读器,能够帮助用户在这款软件中对XPS文件一键阅读,并且能够随时打开。对于不知道用什么打开xps文件的朋友可以下载这款专用阅读器,它还能对xps文件进行格式转换。软件功能1、使用xps viewer,你可以创建他人无法篡改而且打印效果始终与屏幕显示保持一致的电子文档与他人共享。典型的例子包括合同、备忘录、简历、新闻稿和报表。2、XML 页面规范 (...

weixin_35997133的博客 446

CAN总线错误帧全解析:从数据包到硬件层的故障树分析

本文深入解析CAN总线错误帧的故障树分析方法,从数据包到硬件层全面剖析错误机制。通过物理层信号测试、数据链路层错误解码和应用层协议排查,提供系统化的诊断框架。结合CANoe配置和示波器波形分析,帮助工程师快速定位总线故障,提升系统可靠性。

weixin_26742753的博客 491

项目推荐:mupdf

项目推荐:mupdf 1. 项目基础介绍和主要编程语言 mupdf 是一个开源的 PDF 阅读和编辑库,由 zl03jsj 扩展开发。该项目支持多种平台,包括 Windows、iOS、macOS 和 Linux,并且支持多种编程语言,如 C++ 和 Java。mupdf 的核心库是用 C 语言编写的,提供了高性能的 PDF 解析和渲染功能。 2. 项目的核心功能 mupdf 项目的主要功能包括: ...

gitblog_00465的博客 642

STM32与小米CyberGear微电机的CAN通信协议深度解析

本文深度解析STM32与小米CyberGear微电机的CAN通信协议,涵盖硬件连接、CAN总线配置、通信协议解析及多电机协同控制。重点介绍了基于STM32的电机控制实践,包括运动模式、速度与位置模式设置,以及数据反馈与故障诊断,为机器人及自动化设备开发提供实用指南。

www00的博客 361

CMOS传输门实战:如何用模拟开关优化你的电路设计(附常见问题排查)

本文深入探讨了CMOS传输门在电路设计中的实战应用与优化策略。文章从核心参数选型入手,详细分析了导通电阻、电荷注入等关键特性对电路性能的影响,并提供了多路复用器构建、精密电路应用等实战架构。同时,重点分享了PCB布局、电源去耦的工程细节,以及开关不导通、信号失真、高频性能不足等常见问题的系统性排查指南,旨在帮助硬件工程师充分发挥CMOS模拟开关的效能,提升电路设计的可靠性与精度。

js777的博客 451

Android MUPDF阅读器放大模糊优化

问题原因------pdf格式的电子书分三种,定义为A,B,C,A是扫描版,B是非扫描版正常版(格式不是很复杂),C非扫描版不正常版(格式很复杂的那种),mupdf是加载pdf格式速度最快的框架,据了接当前一家大的pdf阅读器运用此框架开发的.存在的问题:mupdf在加载A,B类pdf时速度很快,在加载C类的时候遇到瓶颈,本文解决的是在加载后PDF文本放大过程有一段很长时间的模糊问题.

qq_19827707的专栏 2124

Ubuntu 24.04下Loki+Alloy+Grafana日志分析系统的快速部署与实践

本文详细介绍了在Ubuntu 24.04系统上快速部署Loki+Alloy+Grafana轻量级日志分析系统的完整流程。通过二进制安装Loki、配置Alloy采集器以及设置Grafana可视化界面,构建了一套资源消耗低、易于管理的日志解决方案,并实战演示了如何采集和分析网络设备日志,特别适合资源有限的中小团队或边缘计算场景。

tensor9flow的博客 235

Office转换需要用到的SDK(建议)

1. PDFBox:一个基于Java的开源库,可以读取、创建和操作PDF文件。2. iText:一个用于Java和.NET的开源库,可以创建、编辑和操作PDF文件。3. MuPDF:一个轻量级的开源PDF阅读器和渲染器,可用于创建和编辑PDF文件。4. LibreOffice:一个免费的办公套件,其中包含一个PDF编辑器,可以用于创建和编辑PDF文档。5. Apache OpenOffice:另一个免费的办公套件,其中包含一个PDF编辑器,可以用于创建和编辑PDF文档。

xsg2357的博客 1436

YOLO26训练教程,训练自己的数据集教学,从源码下载,配置虚拟环境,准备数据集、训练、验证、推理测试 。实现0到1的完整教学过程。快速入门必看

本文详细介绍了YOLO26目标检测模型的配置与使用流程:1)下载YOLOv11源码并创建Python3.10虚拟环境;2)安装PyTorch2.5.1及相关依赖库;3)准备数据集并修改配置文件;4)编写训练脚本设置参数(640x640分辨率、500轮次);5)验证模型效果;6)使用训练好的模型进行推理测试;7)生成可视化热力图。整个过程涵盖了从环境搭建到模型应用的全流程,并提供了清华镜像源加速下载。

Ai缝合怪、助力小伙伴高效发论文 5285

中小企业办公网络配置综合实验华为设备(NAT+策略路由+OSPF+VLAN)

组网需求: 1、PC1、2、3、4均可以访问internet的lo0:8.8.8.8 2、PC1、PC4通过电信ISP访问internet;PC2、PC3通过联通ISP访问internet; 需求分析: 1、internet路由器模拟公网,8.8.8.8模拟公网IP;电信ISP、联通ISP路由器模拟电信和联通运营商;出口路由为企业出口路由器;这四个路由器直连链路之间运行ospf,配置动态路由,实现互通; 2、出口路由与三层交换直连链路运行ospf,动态同步路由信息; 3、出口路由器内网端口配..

A soul tortured by desire 7125

VirtualBox安装ubuntu1604及相关系统配置

好久没玩Ubuntu了,最近做项目需要用到ubuntu系统,本篇介绍VirtualBox虚拟机里安装Ubuntu1604及其系统的相关配置,记录一下。

chenyijun的专栏 3099

C-Lodop打印服务系统存在任意文件读取

C-Lodop打印服务系统存在任意文件读取

weixin_43567873的博客 2875

android pdf包

http://code.google.com/p/apv/

xiaoxiaobian3310903的专栏 863

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android解析PDF、XPS文件的第三方类库muPdf

转载自:http://www.lai18.com/content/2474987.html 转载纯属自己记笔记,没什么别的意思。致敬原作者 android解析PDF、XPS文件的第三方类库muPdf 转自:http://xfans.us/archives/61 Mupdf是一个开源的、轻量级的PDF、XPS解析器。支持windows、linux、ios、android等平台

qice675563721的专栏 2321

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java 读取xps_一个基于java的XPS(XML纸张规范)文档模型,解析器,和观众

Descriptionjava-axp is a 100% java XPS file reader. The goal of the project is to create a java library for parsing, reading and rendering XPS documents in java.StatusThe project currently consists of...

weixin_28909745的博客 714

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 【优秀框架记录】云知声语音sdk
下一篇: 【优秀框架记录】 json解析:GSON
Cemmmmer
博客等级 码龄14年 3粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值