pdftotext-0.0.2.0: cbits/poppler.cc
#include <poppler-document.h>
#include <poppler-page.h>
#include <iostream>
#include <string.h>
extern "C" {
std::string* to_stdstring(poppler::ustring ust) {
std::vector<char> vc = ust.to_utf8();
return new std::string(vc.begin(), vc.end());
}
poppler::document* poppler_document_open_pdf(const char* file) {
poppler::document* doc = poppler::document::load_from_file(file);
return doc;
}
poppler::document* poppler_document_open_data(const char* data, size_t n) {
std::vector<char> d;
d.assign(data, data + n);
return poppler::document::load_from_data(&d);
}
void poppler_document_delete(poppler::document* doc) {
delete doc;
}
int poppler_document_pages(poppler::document* doc) {
return doc->pages();
}
std::string* poppler_document_author(poppler::document* doc) {
return to_stdstring(doc->get_author());
}
std::string* poppler_document_creator(poppler::document* doc) {
return to_stdstring(doc->get_creator());
}
std::string* poppler_document_producer(poppler::document* doc) {
return to_stdstring(doc->get_producer());
}
std::string* poppler_document_subject(poppler::document* doc) {
return to_stdstring(doc->get_subject());
}
std::string* poppler_document_title(poppler::document* doc) {
return to_stdstring(doc->get_title());
}
std::string* poppler_document_keywords(poppler::document* doc) {
return to_stdstring(doc->get_keywords());
}
std::string* poppler_document_metadata(poppler::document* doc) {
return to_stdstring(doc->metadata());
}
poppler::page* poppler_document_open_page(poppler::document* doc, int page) {
return doc->create_page(page);
}
std::string* poppler_page_text(poppler::page* page, int layout) {
std::vector<char> vc;
switch (layout) {
case 0: {
return to_stdstring(page->text(poppler::rectf(), poppler::page::text_layout_enum::raw_order_layout));
}
case 1: {
return to_stdstring(page->text(poppler::rectf(), poppler::page::text_layout_enum::physical_layout));
}
default: {
return to_stdstring(page->text(poppler::rectf(), poppler::page::text_layout_enum::non_raw_non_physical_layout));
}
}
}
void poppler_page_delete(poppler::page* page) {
delete page;
}
}