@@ -27,6 +27,9 @@ int nextImg = 1;
2727
2828// This function is used to create unique export file names with appropriate file extension.
2929void ExportImage (PDEImage image, DLImageExportType exportType, DLPDEImageExportParams exportParams, int page) {
30+ PDEImageAttrs attrs;
31+ PDEImageGetAttrs (image, &attrs, sizeof (PDEImageAttrs));
32+
3033 // Find the file extension.
3134 char *imgExt = " " ;
3235 switch (exportType) {
@@ -54,6 +57,12 @@ void ExportImage(PDEImage image, DLImageExportType exportType, DLPDEImageExportP
5457 if (PDEImageHasSMask (image) && (exportType == ExportType_BMP || exportType == ExportType_JPEG || exportType == ExportType_GIF)) {
5558 return ;
5659 }
60+ if (attrs.bitsPerComponent != 8 && exportType == ExportType_JPEG) {
61+ return ;
62+ }
63+ if (attrs.bitsPerComponent == 1 && exportType == ExportType_GIF) {
64+ return ;
65+ }
5766
5867 // Create and format the output file name.
5968 char buf[1024 ];
@@ -102,24 +111,26 @@ void FindAndExportImages(PDEContent content, int pageNum) {
102111 if (PDEObjectGetType (((PDEObject)contentElement)) == kPDEImage ) {
103112 PDEImage image = (PDEImage)contentElement;
104113
105- // DLPDEImageExportParams is a structure containing optional user defined parameters. See definition for more details.
106- DLPDEImageExportParams exportParams = DLPDEImageGetExportParams ();
114+ if (PDEImageIsCosObj (image)) {
115+ // DLPDEImageExportParams is a structure containing optional user defined parameters. See definition for more details.
116+ DLPDEImageExportParams exportParams = DLPDEImageGetExportParams ();
107117
108- char message[1024 ];
109- sprintf (message, " Exporting PDEImage file on page %i from element %i" , pageNum + 1 , element);
110- std::cout << message << std::endl;
111- PrintImageInfo (image);
118+ char message[1024 ];
119+ sprintf (message, " Exporting PDEImage file on page %i from element %i" , pageNum + 1 , element);
120+ std::cout << message << std::endl;
121+ PrintImageInfo (image);
112122
113- ExportImage (image, DLImageExportType::ExportType_BMP, exportParams, pageNum);
114- ExportImage (image, DLImageExportType::ExportType_PNG, exportParams, pageNum);
115- ExportImage (image, DLImageExportType::ExportType_JPEG, exportParams, pageNum);
116- ExportImage (image, DLImageExportType::ExportType_GIF, exportParams, pageNum);
123+ ExportImage (image, DLImageExportType::ExportType_BMP, exportParams, pageNum);
124+ ExportImage (image, DLImageExportType::ExportType_PNG, exportParams, pageNum);
125+ ExportImage (image, DLImageExportType::ExportType_JPEG, exportParams, pageNum);
126+ ExportImage (image, DLImageExportType::ExportType_GIF, exportParams, pageNum);
117127
118- exportParams.TIFFCompression = Compression_LZW;
119- ExportImage (image, DLImageExportType::ExportType_TIF, exportParams, pageNum);
128+ exportParams.TIFFCompression = Compression_LZW;
129+ ExportImage (image, DLImageExportType::ExportType_TIF, exportParams, pageNum);
120130
121- // Increment the global variable to be used when the next PDEImage is found.
122- nextImg++;
131+ // Increment the global variable to be used when the next PDEImage is found.
132+ nextImg++;
133+ }
123134 } else if (PDEObjectGetType (((PDEObject)contentElement)) == kPDEContainer ) {
124135 std::cout << " Recursing through a PDEContainer." << std::endl;
125136 FindAndExportImages (PDEContainerGetContent ((PDEContainer)contentElement), pageNum);
0 commit comments