Skip to content

Commit bbf0318

Browse files
Merge pull request #69 from datalogics-josepha/APDFL-6399
APDFL-6399 - Add some checks to prevent errors.
2 parents 90982a9 + 24233b7 commit bbf0318

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

Images/ImageExport/ImageExport.cpp

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ int nextImg = 1;
2727

2828
// This function is used to create unique export file names with appropriate file extension.
2929
void 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

Comments
 (0)