简介:

Debenu Quick PDF Library(PDF编程开发工具)提供一套全方位的 PDF API 函数,帮助您快速简便地处理 PDF 文件。从文档属性的基本操作到创建您自己的 PDF 查看器和 PDF 编辑器,这款软件满足您的所有需求。Quick PDF Library是一款供 PDF 开发人员使用的 SDK,功能强大、无需版税,其中包括超过500个函数,可用于 Delphi、C、C#、C++、ASP、VB6、VB.NET、VBScript、PHP、PowerBASIC 等,使用 ActiveX、DLL、LIB 或 Delphi 版本的库

官方帮助文档:https://www.debenu.com/docs/pdf_library_reference/FunctionGroups.php

可以参考(提取文本和图像并插入新PDF):http://quickpdf.org/forum/extract-text-and-images-and-insert-into-new-pdf_topic1308.html

安装:  

首先到官网下载该库,官网地址为:http://www.debenu.com/。本文所使用的版本为11.11,下载后得到一个exe文件:foxit_quick_pdf_library_en.exe。双击exe文件即可安装控件库,安装过程中会要求输入安装目录,选择合适的目录完成安装。

文件GettingStarted.pdf介绍了在使用该控件库之前需要做的一些准备工作。首先以管理员身份运行命令提示符并切换到安装目录下,然后输入以下命令完成控件的注册。(我这里安装了两个版本所以有1131的版本)

接着把DebenuPDFLibraryDLL1111.dll、DebenuPDFLibraryDLL1111.pas 添加到Delphi项目中

实例程序

程序记得uses DebenuPDFLibraryDLL1111

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SynPdf, StdCtrls, DebenuPDFLibraryDLL1111; type
TForm1 = class(TForm)
btn1: TButton;
edt1: TEdit;
edt2: TEdit;
lbl1: TLabel;
procedure btn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} // 读取pdf文本内容以及图片
function ReadPdf(const fileName, saveImagePath: string; var text: string;
var imageFiles: string): string;
var
rPdf: TDebenuPDFLibraryDLL1111;
imageCount, i, j, num, keyStatus, FH, PR: Integer;
begin
Result := '';
num := ;
if Trim(fileName) = '' then
begin
Result := 'Path cannot be empty';
Exit;
end;
if (Trim(saveImagePath) <> '') and (not DirectoryExists(saveImagePath)) then
begin
ForceDirectories(saveImagePath); // 创建目录
end; rPdf := TDebenuPDFLibraryDLL1111.Create('DebenuPDFLibraryDLL1111.dll'); // 库
keyStatus := rPdf.UnlockKey('**********'); // 密钥 秘钥可以购买或者找我要
if keyStatus <> then
begin
Result := 'The library cannot be loaded or unlocked fails';
Exit;
end;
try
rPdf.LoadFromFile(Trim(fileName), '');
// 以直接访问模式打开文件并存储文件句柄
FH := rPdf.DAOpenFile(fileName, '');
for i := to rPdf.DAGetPageCount(FH) do
begin
rPdf.SelectPage(i); // 选区页
text := text + rPdf.GetPageText(); // 获取文本 8:更准确的文本提取算法
if Trim(saveImagePath) <> '' then
begin
imageCount := rPdf.GetPageImageList(); // 获取图片
for j := to rPdf.GetImageListCount(imageCount) do // 遍历当前页中的所有图片
begin
rPdf.SaveImageListItemDataToFile(imageCount, j, ,
saveImagePath + '\' + IntToStr(num) + '.png');
imageFiles := imageFiles + saveImagePath + '\' + IntToStr(num)
+ '.png ; ';
inc(num);
end;
end;
end;
finally
rPdf.Free;
end;
end; // 写pdf
function WritePdf(const fileName, text: string): string;
var
wPdf: TDebenuPDFLibraryDLL1111;
num, wStatus: Integer;
begin
Result := '';
if Trim(fileName) = '' then
begin
Result := 'Path cannot be empty';
Exit;
end;
try
wPdf := TDebenuPDFLibraryDLL1111.Create('DebenuPDFLibraryDLL1111.dll'); // 库
try
wStatus := wPdf.UnlockKey('*************'); // 密钥
if wStatus = then
begin
num := wPdf.AddTrueTypeSubsettedFont('FangSong', text, );
wPdf.SelectFont(num);
wPdf.DrawWrappedText(, , , text);
wPdf.SaveToFile(fileName);
end
else
begin
Result := 'The library cannot be loaded or unlocked fails';
end;
finally
wPdf.Free;
end;
except
on e: Exception do
Result := e.Message;
end;
end; procedure TForm1.btn1Click(Sender: TObject);
var
text, imageFiles: string;
begin
text := '';
imageFiles := '';
// showmessage(WritePdf(edt1.Text,edt2.Text));
ShowMessage(ReadPdf(edt1.text, edt2.text, text, imageFiles));
lbl1.Caption := text;
ShowMessage(text);
ShowMessage(imageFiles);
end; procedure TForm1.FormCreate(Sender: TObject);
begin
//readAndWritePDf();
end; end.

运行:

提取的:

原本pdf:

delphi使用Foxit Quick PDF Library读写pdf文本和图片的更多相关文章

  1. C#给PDF文档添加文本和图片页眉

    页眉常用于显示文档的附加信息,我们可以在页眉中插入文本或者图形,例如,页码.日期.公司徽标.文档标题.文件名或作者名等等.那么我们如何以编程的方式添加页眉呢?今天,这篇文章向大家分享如何使用了免费组件 ...

  2. C#添加PDF页眉——添加文本、图片到页眉

    页眉常用于显示文档的附加信息,我们可以在页眉中插入文本或者图形,例如,页码.日期.公司徽标.文档标题.文件名或作者名等等.那么我们如何以编程的方式添加页眉呢?今天,这篇文章向大家分享如何使用了免费组件 ...

  3. quick pdf library控件

    quick pdf library库只能在windows环境下运行 1.下载quick pdf library 2.注册控件 进入cmd  regsvr32 "C:\Program File ...

  4. Swift Standard Library Reference.pdf

    Swift Standard Library Reference.pdf 下载地址 http://download.csdn.net/detail/swifttrain/7446331 自己的Mark ...

  5. pure-Python PDF library

    # -*- coding: utf-8 -*- # # vim: sw=4:expandtab:foldmethod=marker # # Copyright (c) 2006, Mathieu Fe ...

  6. 阅读-Calibre Library转PDF、EPUB配置

    提示:如果想恢复默认设置,点击"恢复默认值"即可 -----EPUB (MOBI同理)----- 目标:解决转换过程中图片清晰度丢失问题(分辨率太低) 右击-转换书籍-逐个转换 输 ...

  7. C#写PDF文件类库PDF File Writer介绍

    .NET平台开源项目速览(16)C#写PDF文件类库PDF File Writer介绍   阅读目录 1.PDF File Writer基本介绍 2.一个简单的使用案例 3.资源 1年前,我在文章:这 ...

  8. DjVu、PDF中的隐藏文本

    作者:马健邮箱:stronghorse_mj@hotmail.com发布:2012.06.11 目录一.背景二.DjVu中的隐藏文本三.PDF中的隐藏文本 一.背景 目前对于扫描电子文档,网上比较流行 ...

  9. 校对双层PDF中的隐藏文本

    作者:马健邮箱:stronghorse_mj@hotmail.com发布:2012.06.11 目录一.背景二.能够校对的PDF需要满足的条件三.校对工具的选择四.校对过程五.延伸讨论 事先声明:本文 ...

随机推荐

  1. python原类、类的创建过程与方法

    今天为大家介绍一下python中与class 相关的知识-- 获取对象的类名 python是一门面向对象的语言,对于一切接对象的python来说,咱们有必要深入的学习与了解一些知识 首先大家都知道,要 ...

  2. “copy” 与 “=“赋值

    前拷贝  与  赋值 >>> a = {1:'one',2:'two',3:'three'}>>> b = a.copy()>>> c = a&g ...

  3. Snack3 一个新的微型JSON框架

    Snack3 一个新的微型JSON框架 一个作品,一般表达作者的一个想法.因为大家想法不同,所有作品会有区别.就做技术而言,因为有很多有区别的框架,所以大家可以选择的框架很丰富. snack3.基于j ...

  4. 调用rest api杀死yarn上的应用

    调用rest api杀死yarn上的应用 调用yarn reat api,通过app name 获取application id public static String getApplication ...

  5. OA项目之mybatis动态查询

    类似于三个条件,可以全部选择,也可以选择几个条件进行查询 Mapper.xml文件: <resultMap type="Employee" id="selAll&q ...

  6. [Python Basics]引用系统(The Import System)

    欲上高楼去避愁,愁还随我上高楼.经行几处江山改,多少亲朋尽白头. 归休去,去归休.不成人总要封侯?浮云出处元无定,得似浮云也自由. 我从短暂的Python工作当中学到一件事,越是模块化,就越会发现py ...

  7. Java并发编程系列-(3) 原子操作与CAS

    3. 原子操作与CAS 3.1 原子操作 所谓原子操作是指不会被线程调度机制打断的操作:这种操作一旦开始,就一直运行到结束,中间不会有任何context switch,也就是切换到另一个线程. 为了实 ...

  8. 【CentOS7】常用命令

    [CentOS7]常用命令 转载:https://www.cnblogs.com/yangchongxing/p/10646640.html 目录 ========================== ...

  9. 8种经常被忽视的SQL错误用法,你有没有踩过坑?

    1.LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引 ...

  10. CCF-CSP题解 201604-4 游戏

    bfs #include <bits/stdc++.h> const int maxn = 100; using namespace std; int n, m, t; bool hasD ...