public FileItemDTO CompressFile(FileItemEntity fileItem)
        {
            fileItem.FileFullPath = FileUtils.GetDefaultInputPath() + fileItem.FileName;

            File.WriteAllBytes(fileItem.FileFullPath, fileItem.Bytes);

            var fileItemDTO = new FileItemDTO()
            {
                Id           = fileItem.Id,
                FileFullPath = FileUtils.GetNewFileName(fileItem.FileName, FileNameOptionEnum.Compress)
            };

            fileItemDTO.FileName = FileUtils.GetSafeFileName(fileItemDTO.FileFullPath);

            using (PDFDoc in_doc = new PDFDoc(fileItem.FileFullPath))
            {
                Optimizer.Optimize(in_doc);

                using (PDFDoc doc = new PDFDoc())
                {
                    doc.InsertPages(doc.GetPageCount() + 1, in_doc, 1, in_doc.GetPageCount(), PDFDoc.InsertFlag.e_none);

                    in_doc.Save(fileItemDTO.FileFullPath, SDFDoc.SaveOptions.e_linearized);
                }
            }

            return(fileItemDTO);
        }
        public FileItemDTO ProtectFile(FileItemEntity fileItem)
        {
            fileItem.FileFullPath = FileUtils.GetDefaultInputPath() + fileItem.FileName;

            File.WriteAllBytes(fileItem.FileFullPath, fileItem.Bytes);

            var fileItemDTO = new FileItemDTO()
            {
                Id           = fileItem.Id,
                FileFullPath = FileUtils.GetNewFileName(fileItem.FileName, FileNameOptionEnum.Protect)
            };

            fileItemDTO.FileName = FileUtils.GetSafeFileName(fileItemDTO.FileFullPath);

            using (PDFDoc doc = new PDFDoc(fileItem.FileFullPath))
            {
                SecurityHandler new_handler = new SecurityHandler(SecurityHandler.AlgorithmType.e_AES_256);

                string my_password = "******";
                new_handler.ChangeUserPassword(my_password);

                new_handler.SetPermission(SecurityHandler.Permission.e_print, true);
                new_handler.SetPermission(SecurityHandler.Permission.e_extract_content, false);

                doc.SetSecurityHandler(new_handler);

                doc.Save(fileItemDTO.FileFullPath, SDFDoc.SaveOptions.e_linearized);
            }

            return(fileItemDTO);
        }
        public FileItemDTO ConvertFileToPDF(FileItemEntity fileItem)
        {
            fileItem.FileFullPath = FileUtils.GetDefaultInputPath() + fileItem.FileName;

            File.WriteAllBytes(fileItem.FileFullPath, fileItem.Bytes);

            var fileItemDTO = new FileItemDTO()
            {
                Id           = fileItem.Id,
                FileFullPath = FileUtils.GetNewFileName(fileItem.FileName, FileNameOptionEnum.Convert)
            };

            fileItemDTO.FileName = FileUtils.GetSafeFileName(fileItemDTO.FileFullPath);

            using (PDFDoc doc = new PDFDoc())
            {
                try
                {
                    switch (FileUtils.GetFileType(fileItem.FileFullPath))
                    {
                    case FileType.MSOffice:
                        pdftron.PDF.Convert.OfficeToPDF(doc, fileItem.FileFullPath, null);
                        break;

                    case FileType.HTML:
                        HTML2PDF converter = new HTML2PDF();

                        var htmlString = File.ReadAllText(fileItem.FileFullPath);

                        converter.InsertFromHtmlString(htmlString);

                        converter.Convert(doc);
                        break;

                    case FileType.Other:
                        pdftron.PDF.Convert.ToPdf(doc, fileItem.FileFullPath);
                        break;

                    case FileType.NotMapped:
                        throw new ArgumentException($"Extensão {FileUtils.GetFileExtension(fileItem.FileFullPath)} não mapeada");

                    default:
                        break;
                    }

                    doc.Save(fileItemDTO.FileFullPath, SDFDoc.SaveOptions.e_linearized);

                    return(fileItemDTO);
                }
                catch (PDFNetException ex)
                {
                    throw;
                }
                catch (Exception ex)
                {
                    throw;
                }
            }
        }