Замена изображения с использованием PDFBox показывает искаженное изображение - PullRequest
0 голосов
/ 11 июня 2018

Я использую PDFBox 2.0.8 для замены изображения в документе PDF.Мой процесс включает в себя извлечение изображения из документа и запись в файловую систему.Сожмите изображение, которое было извлечено.Сжатое изображение необходимо заменить исходным изображением.Однако после замены PDF показывает искаженное изображение.См. Страницу # 1 по ссылке https://35.200.235.243/compression/download?fileName=/outbox/pdf/test123/test1-compress.pdf. Если я открою этот документ в Chrome, то, похоже, будет лучше.Однако на рабочем столе он искажен.В хроме цвет фона изменился.Тем не менее, в этом объекте нет маски

for (COSName xObjectName : resources.getXObjectNames()) {
                    PDXObject xObject = resources.getXObject(xObjectName);
                    if (xObject instanceof PDImageXObject) {

                        imageCounter++;
                        System.out.println("cosname="+xObjectName.toString());
                        PDImageXObject original_img = ((PDImageXObject) xObject);
                 String suffix = original_img.getSuffix();
                        File imageFile = new File(destPath+"/"+"image"+imageCounter+"."+suffix);
                        int imageWidth = original_img.getWidth();
                        int imageHeight = original_img.getHeight();
                        BufferedImage bImage = new BufferedImage(imageWidth,imageHeight,BufferedImage.TYPE_INT_RGB);
                        bImage = original_img.getOpaqueImage();
                        ImageIO.write(bImage,suffix, imageFile);
                if(suffix.equalsIgnoreCase("jpg") || suffix.equalsIgnoreCase("jpeg")) {

                            System.out.println("found jpg="+imageFile.getAbsolutePath());
                            CompressPDFJPEG compress    =   new CompressPDFJPEG(imageFile.getAbsolutePath(), directoryID);
                            HashMap compressedFilesMap  =   compress.getCompressedFiles();
                            String compressedFiles []   =   (String[]) compressedFilesMap.get("compressedFiles");
                            String replaceImageFile     =   "";
                            for (int i=0;i<compressedFiles.length;i++) {

                                if (compressedFiles[i] != null) {
                                    replaceImageFile = compressedFiles[i];
                                PDImageXObject replacement_img = PDImageXObject.createFromFile(replaceImageFile, doc);
                                resources.put(xObjectName, replacement_img);
                                    doc.save(outFileName);
                                break;
                                }

                            }
                        }

                        if(suffix.equalsIgnoreCase("png")) {

                            CompressPDFPNG compress     =   new CompressPDFPNG(imageFile.getAbsolutePath(), directoryID);
                            HashMap compressedFilesMap  =   compress.compressPNG();
                            String compressedFiles []   =   (String[]) compressedFilesMap.get("compressedFiles");
                            String replaceImageFile     =   "";
                            for (int i=0;i<compressedFiles.length;i++) {

                                if (compressedFiles[i] != null) {
                                    replaceImageFile = compressedFiles[i];
                                    PDImageXObject replacement_img = PDImageXObject.createFromFile(replaceImageFile, doc);
                                        resources.put(xObjectName, replacement_img);
                                    break;
                                }

                            }


                        }


                    }        
                }
            }

     doc.close();

Вот различные ссылки Оригинальный PDF: https://35.200.235.243/compression/download?fileName=/inbox/pdf/test1.pdf Извлеченное изображение: https://35.200.235.243/compression/download?fileName=/work/pdf/test123/image2.jpg

Сжатое изображение: https://35.200.235.243/compression/download?fileName=/work/pdf/test123/image2-compress1.jpg Сжатый PDF: https://35.200.235.243/compression/download?fileName=/outbox/pdf/test123/test1-compress.pdf

Снимок экрана рабочего стола (сжатый PDF):

...