// Copyright (C) 2023 Jakub Melka // // This file is part of PDF4QT. // // PDF4QT is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // with the written consent of the copyright owner, any later version. // // PDF4QT is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with PDF4QT. If not, see . #include "pdftextlayoutgenerator.h" #include "pdfdbgheap.h" namespace pdf { PDFTextLayout PDFTextLayoutGenerator::createTextLayout() { m_textLayout.perform(); m_textLayout.optimize(); return qMove(m_textLayout); } bool PDFTextLayoutGenerator::isContentSuppressedByOC(PDFObjectReference ocgOrOcmd) { if (m_features.testFlag(PDFRenderer::IgnoreOptionalContent)) { return false; } return PDFPageContentProcessor::isContentSuppressedByOC(ocgOrOcmd); } bool PDFTextLayoutGenerator::isContentKindSuppressed(ContentKind kind) const { switch (kind) { case ContentKind::Shapes: case ContentKind::Text: case ContentKind::Images: case ContentKind::Shading: return true; case ContentKind::Tiling: return false; // Tiling can have text default: { Q_ASSERT(false); break; } } return false; } void PDFTextLayoutGenerator::performOutputCharacter(const PDFTextCharacterInfo& info) { if (!isContentSuppressed() && !info.character.isSpace()) { m_textLayout.addCharacter(info); } } } // namespace pdf