Можно ли использовать qpdf API для удаления изображений из PDF-файла?

Я хотел бы создать инструмент для удаления всех изображений из файла PDF. Кажется, что библиотека qpdf с открытым исходным кодом должна уметь это делать; например, он имеет пример кода для инвертирования некоторых изображений в PDF. Но используя этот код в качестве отправной точки, я не добился успеха в следующем:

QPDF qpdf;
qpdf.processFile(infilename, password);

std::vector<QPDFObjectHandle> pages = qpdf.getAllPages();
for (std::vector<QPDFObjectHandle>::iterator iter = pages.begin();
     iter != pages.end(); ++iter)  {
  QPDFObjectHandle& page = *iter;

  std::map<std::string, QPDFObjectHandle> images = page.getPageImages();
  for (std::map<std::string, QPDFObjectHandle>::iterator iter = images.begin();
     iter != images.end(); ++iter) {
    QPDFObjectHandle& image = (*iter).second;
    int object_id = image.getObjectID();
    QPDFObjGen og = image.getObjGen();
    if (image.isIndirect()) {
      int og_int = og.getObj();
      qpdf.replaceObject(object_id, og_int,  QPDFObjectHandle::newNull());
    } else {
      qpdf.replaceObject(og,  QPDFObjectHandle::newNull());
    }
  }
}
QPDFWriter w(qpdf, outfilename);
w.write();

Все изображения остаются в выходном файле PDF.

Возможно ли это сделать с помощью qpdf?

Если так, что я делаю не так? Если нет, есть ли лучший инструмент с открытым исходным кодом?

0 ответов

Другие вопросы по тегам