@@ -29,11 +29,15 @@ namespace pdflib
2929
3030 bool process_document_from_file (std::string& _filename);
3131 bool process_document_from_bytesio (std::string& _buffer);
32-
32+
3333 void decode_document (std::string page_boundary, bool do_sanitization);
3434
3535 void decode_document (std::vector<int >& page_numbers, std::string page_boundary, bool do_sanitization);
3636
37+ bool unload_pages ();
38+
39+ bool unload_page (int page_number);
40+
3741 private:
3842
3943 void update_qpdf_logger ();
@@ -232,7 +236,7 @@ namespace pdflib
232236 {
233237 utils::timer page_timer;
234238
235- pdf_decoder<PAGE> page_decoder (page);
239+ pdf_decoder<PAGE> page_decoder (page, page_number );
236240
237241 auto timings_ = page_decoder.decode_page (page_boundary, do_sanitization);
238242 update_timings (timings_, set_timer);
@@ -271,7 +275,7 @@ namespace pdflib
271275 {
272276 utils::timer page_timer;
273277
274- pdf_decoder<PAGE> page_decoder (pages.at (page_number));
278+ pdf_decoder<PAGE> page_decoder (pages.at (page_number), page_number );
275279
276280 auto timings_ = page_decoder.decode_page (page_boundary, do_sanitization);
277281
@@ -313,6 +317,45 @@ namespace pdflib
313317 }
314318 }
315319
320+ bool pdf_decoder<DOCUMENT>::unload_page(int page_number)
321+ {
322+ if (not json_document.contains (" pages" ))
323+ {
324+ LOG_S (WARNING) << " json_document does not have `pages`" ;
325+ return false ;
326+ }
327+
328+ nlohmann::json& json_pages = json_document[" pages" ];
329+
330+ for (int l=0 ; l<json_pages.size (); l++)
331+ {
332+ if ((json_pages[l].is_object ()) and
333+ (json_pages[l].contains (" page_number" )) and
334+ (json_pages[l][" page_number" ]==page_number))
335+ {
336+ json_pages[l].clear ();
337+
338+ nlohmann::json none;
339+ json_pages[l] = none;
340+ }
341+ }
342+
343+ return true ;
344+ }
345+
346+ bool pdf_decoder<DOCUMENT>::unload_pages()
347+ {
348+ if (not json_document.contains (" pages" ))
349+ {
350+ LOG_S (WARNING) << " json_document does not have `pages`" ;
351+ return false ;
352+ }
353+
354+ json_document[" pages" ] = nlohmann::json::array ({});
355+
356+ return true ;
357+ }
358+
316359}
317360
318361#endif
0 commit comments