|
|
@ -5,56 +5,20 @@ local Document = require("document/document")
|
|
|
|
local Configurable = require("configurable")
|
|
|
|
local Configurable = require("configurable")
|
|
|
|
local DrawContext = require("ffi/drawcontext")
|
|
|
|
local DrawContext = require("ffi/drawcontext")
|
|
|
|
local DEBUG = require("dbg")
|
|
|
|
local DEBUG = require("dbg")
|
|
|
|
local ffi = require("ffi")
|
|
|
|
|
|
|
|
ffi.cdef[[
|
|
|
|
|
|
|
|
typedef struct fz_point_s fz_point;
|
|
|
|
|
|
|
|
struct fz_point_s {
|
|
|
|
|
|
|
|
float x, y;
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
|
|
|
|
FZ_ANNOT_TEXT,
|
|
|
|
|
|
|
|
FZ_ANNOT_LINK,
|
|
|
|
|
|
|
|
FZ_ANNOT_FREETEXT,
|
|
|
|
|
|
|
|
FZ_ANNOT_LINE,
|
|
|
|
|
|
|
|
FZ_ANNOT_SQUARE,
|
|
|
|
|
|
|
|
FZ_ANNOT_CIRCLE,
|
|
|
|
|
|
|
|
FZ_ANNOT_POLYGON,
|
|
|
|
|
|
|
|
FZ_ANNOT_POLYLINE,
|
|
|
|
|
|
|
|
FZ_ANNOT_HIGHLIGHT,
|
|
|
|
|
|
|
|
FZ_ANNOT_UNDERLINE,
|
|
|
|
|
|
|
|
FZ_ANNOT_SQUIGGLY,
|
|
|
|
|
|
|
|
FZ_ANNOT_STRIKEOUT,
|
|
|
|
|
|
|
|
FZ_ANNOT_STAMP,
|
|
|
|
|
|
|
|
FZ_ANNOT_CARET,
|
|
|
|
|
|
|
|
FZ_ANNOT_INK,
|
|
|
|
|
|
|
|
FZ_ANNOT_POPUP,
|
|
|
|
|
|
|
|
FZ_ANNOT_FILEATTACHMENT,
|
|
|
|
|
|
|
|
FZ_ANNOT_SOUND,
|
|
|
|
|
|
|
|
FZ_ANNOT_MOVIE,
|
|
|
|
|
|
|
|
FZ_ANNOT_WIDGET,
|
|
|
|
|
|
|
|
FZ_ANNOT_SCREEN,
|
|
|
|
|
|
|
|
FZ_ANNOT_PRINTERMARK,
|
|
|
|
|
|
|
|
FZ_ANNOT_TRAPNET,
|
|
|
|
|
|
|
|
FZ_ANNOT_WATERMARK,
|
|
|
|
|
|
|
|
FZ_ANNOT_3D
|
|
|
|
|
|
|
|
} fz_annot_type;
|
|
|
|
|
|
|
|
]]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
local PdfDocument = Document:new{
|
|
|
|
local PdfDocument = Document:new{
|
|
|
|
_document = false,
|
|
|
|
_document = false,
|
|
|
|
-- muPDF manages its own additional cache
|
|
|
|
|
|
|
|
mupdf_cache_size = 5 * 1024 * 1024,
|
|
|
|
|
|
|
|
dc_null = DrawContext.new(),
|
|
|
|
dc_null = DrawContext.new(),
|
|
|
|
options = KoptOptions,
|
|
|
|
options = KoptOptions,
|
|
|
|
koptinterface = nil,
|
|
|
|
koptinterface = nil,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function PdfDocument:init()
|
|
|
|
function PdfDocument:init()
|
|
|
|
local pdf = require("libs/libkoreader-pdf")
|
|
|
|
local pdf = require("ffi/mupdf")
|
|
|
|
self.koptinterface = require("document/koptinterface")
|
|
|
|
self.koptinterface = require("document/koptinterface")
|
|
|
|
self.configurable:loadDefaults(self.options)
|
|
|
|
self.configurable:loadDefaults(self.options)
|
|
|
|
local ok
|
|
|
|
local ok
|
|
|
|
ok, self._document = pcall(pdf.openDocument, self.file, self.mupdf_cache_size)
|
|
|
|
ok, self._document = pcall(pdf.openDocument, self.file)
|
|
|
|
if not ok then
|
|
|
|
if not ok then
|
|
|
|
error(self._document) -- will contain error message
|
|
|
|
error(self._document) -- will contain error message
|
|
|
|
end
|
|
|
|
end
|
|
|
|