diff options
Diffstat (limited to 'svx/source/svdraw/svdpdf.cxx')
-rw-r--r-- | svx/source/svdraw/svdpdf.cxx | 70 |
1 files changed, 44 insertions, 26 deletions
diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx index 58568666bf5a..c1e9734a5d8e 100644 --- a/svx/source/svdraw/svdpdf.cxx +++ b/svx/source/svdraw/svdpdf.cxx @@ -229,32 +229,7 @@ void ImpSdrPdfImport::DoLoopActions(SvdProgressInfo* pProgrInfo, sal_uInt32* pAc for (int nPageObjectIndex = 0; nPageObjectIndex < nPageObjectCount; ++nPageObjectIndex) { FPDF_PAGEOBJECT pPageObject = FPDFPage_GetObject(pPdfPage, nPageObjectIndex); - if (pPageObject == nullptr) - continue; - - const int nPageObjectType = FPDFPageObj_GetType(pPageObject); - switch (nPageObjectType) - { - case FPDF_PAGEOBJ_TEXT: - ImportText(pPageObject, nPageObjectIndex); - break; - case FPDF_PAGEOBJ_PATH: - ImportPath(pPageObject, nPageObjectIndex); - break; - case FPDF_PAGEOBJ_IMAGE: - ImportImage(pPageObject, nPageObjectIndex); - break; - case FPDF_PAGEOBJ_SHADING: - SAL_WARN("sd.filter", "Got page object SHADING: " << nPageObjectIndex); - break; - case FPDF_PAGEOBJ_FORM: - SAL_WARN("sd.filter", "Got page object FORM: " << nPageObjectIndex); - break; - default: - SAL_WARN("sd.filter", "Unknown PDF page object type: " - << nPageObjectType << ": " << nPageObjectIndex); - break; - } + ImportPdfObject(pPageObject, nPageObjectIndex); } #if 0 @@ -1015,6 +990,49 @@ void ImpSdrPdfImport::checkClip() } bool ImpSdrPdfImport::isClip() const { return !maClip.getB2DRange().isEmpty(); } + +void ImpSdrPdfImport::ImportPdfObject(FPDF_PAGEOBJECT pPageObject, int nPageObjectIndex) +{ + if (pPageObject == nullptr) + return; + + const int nPageObjectType = FPDFPageObj_GetType(pPageObject); + switch (nPageObjectType) + { + case FPDF_PAGEOBJ_TEXT: + ImportText(pPageObject, nPageObjectIndex); + break; + case FPDF_PAGEOBJ_PATH: + ImportPath(pPageObject, nPageObjectIndex); + break; + case FPDF_PAGEOBJ_IMAGE: + ImportImage(pPageObject, nPageObjectIndex); + break; + case FPDF_PAGEOBJ_SHADING: + SAL_WARN("sd.filter", "Got page object SHADING: " << nPageObjectIndex); + break; + case FPDF_PAGEOBJ_FORM: + ImportForm(pPageObject, nPageObjectIndex); + break; + default: + SAL_WARN("sd.filter", "Unknown PDF page object #" << nPageObjectIndex + << " of type: " << nPageObjectType); + break; + } +} + +void ImpSdrPdfImport::ImportForm(FPDF_PAGEOBJECT pPageObject, int nPageObjectIndex) +{ + SAL_WARN("sd.filter", "Got page object FORM: " << nPageObjectIndex); + + const int nCount = FPDFFormObj_CountSubObjects(pPageObject); + for (int nIndex = 0; nIndex < nCount; ++nIndex) + { + FPDF_PAGEOBJECT pFormObject = FPDFFormObj_GetSubObject(pPageObject, nIndex); + ImportPdfObject(pFormObject, -1); + } +} + void ImpSdrPdfImport::ImportText(FPDF_PAGEOBJECT pPageObject, int nPageObjectIndex) { SAL_WARN("sd.filter", "Got page object TEXT: " << nPageObjectIndex); |