12#include <nlohmann/json.hpp>
24 if (!debugger || !debugger->enabled())
return;
26 debugger->writeText(path, text);
37 auto t0 = std::chrono::steady_clock::now();
39 auto t1 = std::chrono::steady_clock::now();
40 std::chrono::duration<double> dur = t1 - t0;
44 out.
images.reserve(pages.size());
46 for (
const auto& p : pages) {
47 out.
images.push_back(p.imagePath.empty() ? std::filesystem::path() : std::filesystem::path(p.imagePath));
51 std::ostringstream oss;
52 oss <<
"render:done " << req.
pdfPath.string() <<
" pages=" << out.
images.size() <<
" duration=" << dur.count();
54 }
catch (
const std::exception& ex) {
65 auto t0 = std::chrono::steady_clock::now();
67 auto t1 = std::chrono::steady_clock::now();
68 std::chrono::duration<double> dur = t1 - t0;
70 out.
pages = std::move(pages);
72 std::ostringstream oss;
73 oss <<
"extract:done " << req.
pdfPath.string() <<
" pages=" << out.
pages.size() <<
" duration=" << dur.count();
75 }
catch (
const std::exception& ex) {
83 std::shared_ptr<core::ports::diagnostics::IDiagnostics> debugger;
86std::shared_ptr<core::ports::pdf_rendering::IPdfRenderer>
createPdfRendererAdapter(std::shared_ptr<core::ports::diagnostics::IDiagnostics> debugger) {
87 return std::make_shared<PopplerPdfRendererAdapter>(std::move(debugger));
Declares the diagnostics artifact writing port.
PDF rendering port for import workflows.
Request types for PDF rendering operations.
Result types for PDF rendering operations.
Declares the Poppler implementation helpers used by the import workflow.
std::shared_ptr< core::ports::pdf_rendering::IPdfRenderer > createPdfRendererAdapter(std::shared_ptr< core::ports::diagnostics::IDiagnostics > debugger)
static std::vector< core::ports::pdf_rendering::RenderedPage > renderDocument(const std::string &path, double dpi, const std::filesystem::path &outputDir=std::filesystem::path(), const std::string &uniqIdPrefix="", const std::string &filePrefix="", std::shared_ptr< core::ports::diagnostics::IDiagnostics > dbg=nullptr, std::shared_ptr< std::atomic< bool > > cancelFlag=nullptr)
Extracts document metadata and page text elements from a PDF file.
static std::vector< core::ports::pdf_rendering::RenderedPage > extractDocumentMeta(const std::string &path, double dpi, const std::filesystem::path &outputDir=std::filesystem::path(), const std::string &uniqIdPrefix="", const std::string &filePrefix="", std::shared_ptr< core::ports::diagnostics::IDiagnostics > dbg=nullptr, std::shared_ptr< std::atomic< bool > > cancelFlag=nullptr)
Extracts page metadata without rendering the page bitmap.
core::ports::pdf_rendering::ExtractResult extract(const core::ports::pdf_rendering::ExtractRequest &req) override
Extracts page content from a PDF.
core::ports::pdf_rendering::RenderResult render(const core::ports::pdf_rendering::RenderRequest &req) override
Renders a PDF into images.
PopplerPdfRendererAdapter(std::shared_ptr< core::ports::diagnostics::IDiagnostics > dbg=nullptr)
void writeDebugTextSafe(const std::string &path, const std::string &text) const
Renders and extracts PDF content.
Precompiled header for the pdf-rendering infrastructure module.
std::filesystem::path pdfPath
std::shared_ptr< std::atomic< bool > > cancelFlag
std::filesystem::path outputDir
std::vector< std::vector< uint8_t > > imageBytes
std::vector< std::filesystem::path > images