Ejemplo n.º 1
0
        public static async Task <(StorageFile File, ConversionStatus Result)> TryConvertAsync(
            StorageFile file, StorageFolder targetFolder = null)
        {
            if (file.FileType.ToLower().EndsWith("woff"))
            {
                StorageFolder folder = targetFolder ?? ApplicationData.Current.TemporaryFolder;
                string        name   = Path.GetFileNameWithoutExtension(file.DisplayName);

                if (targetFolder is not null) // Avoid threading errors with multiple converts to the same target folder
                {
                    name += $"-{_random.Next(1000,100000)}";
                }

                StorageFile newFile = await folder.CreateFileAsync($"{name}.otf", CreationCollisionOption.ReplaceExisting).AsTask().ConfigureAwait(false);

                ConversionStatus result = await TryConvertWoffToOtfAsync(file, newFile).ConfigureAwait(false);

                if (result == ConversionStatus.OK)
                {
                    if (DirectWrite.HasValidFonts(GetAppUri(newFile)))
                    {
                        return(newFile, ConversionStatus.OK);
                    }
                    else
                    {
                        return(default, ConversionStatus.UnspecifiedError);
Ejemplo n.º 2
0
 public Marketing(string name, string contactNumber, string serviceInterested, string softwareInterested,
                  ConversionStatus conversionStatus, string rateUs, string suggestionForYes, string suggestionForNo,
                  string area, DateTime date, double price, string currentScenario, string rateUsForNo, double fee,
                  string userProfileId, int adminId,
                  List <ServiceItem> serviceItems)
 {
     Name               = name;
     ContactNumber      = contactNumber;
     ServiceInterested  = serviceInterested;
     SoftwareInterested = softwareInterested;
     ConversionStatus   = ConversionStatus.Created;
     RateUs             = rateUs;
     SuggestionForYes   = suggestionForYes;
     SuggestionForNo    = suggestionForNo;
     Area               = area;
     Date               = date;
     Price              = price;
     CurrentScenario    = currentScenario;
     RateUsForNo        = rateUsForNo;
     Fee           = fee;
     UserProfileId = userProfileId;
     AdminId       = adminId;
     ServiceItems  = serviceItems;
     IsActive      = true;
 }
Ejemplo n.º 3
0
        void ReleaseDesignerOutlets()
        {
            if (ConversionStatus != null)
            {
                ConversionStatus.Dispose();
                ConversionStatus = null;
            }

            if (ConversionProgress != null)
            {
                ConversionProgress.Dispose();
                ConversionProgress = null;
            }

            if (FileToConvert != null)
            {
                FileToConvert.Dispose();
                FileToConvert = null;
            }

            if (ConvertButton != null)
            {
                ConvertButton.Dispose();
                ConvertButton = null;
            }

            if (OpenButton != null)
            {
                OpenButton.Dispose();
                OpenButton = null;
            }
        }
 private void RunConversion(object state)
 {
     m_status     = ConversionStatus.CONVERSION_STARTED;
     m_percentage = 50;
     MsdkAnalyzerCpp.convert_etl_to_text(0, 0, m_etlfilename + " " + m_textfilename, 1);
     m_percentage = 100;
     m_status     = ConversionStatus.CONVERSION_COMPLETED;
 }
        /// <summary>
        /// Run the code example.
        /// </summary>
        /// <param name="service">An initialized Dfa Reporting service object
        /// </param>
        public override void Run(DfareportingService service)
        {
            long floodlightActivityId = long.Parse(_T("INSERT_FLOODLIGHT_ACTIVITY_ID_HERE"));
            long profileId            = long.Parse(_T("INSERT_USER_PROFILE_ID_HERE"));

            string conversionMobileId = _T("INSERT_CONVERSION_MOBILE_ID_HERE");

            // Generate a timestamp in milliseconds since Unix epoch.
            TimeSpan timeStamp = DateTime.UtcNow - new DateTime(1970, 1, 1);
            long     currentTimeInMilliseconds = (long)timeStamp.TotalMilliseconds;

            // Find the Floodlight configuration ID based on the provided activity ID.
            FloodlightActivity floodlightActivity =
                service.FloodlightActivities.Get(profileId, floodlightActivityId).Execute();
            long floodlightConfigurationId = (long)floodlightActivity.FloodlightConfigurationId;

            // Create the conversion.
            Conversion conversion = new Conversion();

            conversion.MobileDeviceId            = conversionMobileId;
            conversion.FloodlightActivityId      = floodlightActivityId;
            conversion.FloodlightConfigurationId = floodlightConfigurationId;
            conversion.Ordinal         = currentTimeInMilliseconds.ToString();
            conversion.TimestampMicros = currentTimeInMilliseconds * 1000;

            // Insert the conversion.
            ConversionsBatchInsertRequest request = new ConversionsBatchInsertRequest();

            request.Conversions = new List <Conversion>()
            {
                conversion
            };

            ConversionsBatchInsertResponse response =
                service.Conversions.Batchinsert(request, profileId).Execute();

            // Handle the batchinsert response.
            if (!response.HasFailures.Value)
            {
                Console.WriteLine("Successfully inserted conversion for mobile device ID {0}.",
                                  conversionMobileId);
            }
            else
            {
                Console.WriteLine("Error(s) inserting conversion for mobile device ID {0}:",
                                  conversionMobileId);

                ConversionStatus status = response.Status[0];
                foreach (ConversionError error in status.Errors)
                {
                    Console.WriteLine("\t[{0}]: {1}", error.Code, error.Message);
                }
            }
        }
Ejemplo n.º 6
0
        private ConversionStatus DefaultSuccessCheck(ConversionState state, string swfFilePath)
        {
            if (state == ConversionState.Converted)
            {
                if (!File.Exists(swfFilePath))
                {
                    var failed = new ConversionStatus(ConversionState.ConversionFailed, "Output file doesn't exist");
                    _logger.LogError(failed.Message);
                    return(failed);
                }
            }

            return(new ConversionStatus(state));
        }
Ejemplo n.º 7
0
        // Try to begin conversion into bitmap.
        public ConversionStatus BeginUncachedConversion(string fileName, int resolution)
        {
            try {
                string converterExe = FindPdfConverterExe();
                if (converterExe == null)
                {
                    conversionOutput = MiscText.PdfConverterNotFound;
                    status           = ConversionStatus.Failure;
                    return(status);
                }

                string arguments = String.Format(
                    "{2} \"{0}\" \"{1}\"",
                    pdfFileName, fileName, resolution);

                stderrOutput = new StringBuilder();
                ProcessStartInfo startInfo = new ProcessStartInfo(converterExe, arguments);
                startInfo.CreateNoWindow         = true;
                startInfo.WindowStyle            = ProcessWindowStyle.Hidden;
                startInfo.RedirectStandardError  = true;
                startInfo.RedirectStandardOutput = true;
                startInfo.UseShellExecute        = false;
                process                     = new Process();
                process.StartInfo           = startInfo;
                process.EnableRaisingEvents = true;
                process.ErrorDataReceived  += ProcessDataReceived;
                process.OutputDataReceived += ProcessDataReceived;
                process.Exited             += ProcessExited;
                process.Start();
                process.BeginOutputReadLine();
                process.BeginErrorReadLine();

                status      = ConversionStatus.Working;
                pngFileName = fileName;
                return(status);
            }
            catch (Exception e) {
                status = ConversionStatus.Failure;

                if (!string.IsNullOrWhiteSpace(pngFileName))
                {
                    File.Delete(pngFileName);
                }

                conversionOutput = e.Message;
                return(status);
            }
        }
Ejemplo n.º 8
0
        public static async Task <(StorageFile File, ConversionStatus Result)> TryConvertAsync(StorageFile file)
        {
            if (file.FileType.ToLower().EndsWith("woff"))
            {
                var folder  = ApplicationData.Current.TemporaryFolder;
                var newFile = await folder.CreateFileAsync(file.DisplayName + ".otf", CreationCollisionOption.ReplaceExisting).AsTask().ConfigureAwait(false);

                ConversionStatus result = await TryConvertWoffToOtfAsync(file, newFile).ConfigureAwait(false);

                if (result == ConversionStatus.OK)
                {
                    if (DirectWrite.HasValidFonts(GetAppUri(newFile)))
                    {
                        return(newFile, ConversionStatus.OK);
                    }
                    else
                    {
                        return(default, ConversionStatus.UnspecifiedError);
Ejemplo n.º 9
0
        private ConversionStatus DefaultMultiPageSuccessCheck(ConversionState state, string swfPageFileNamePattern, int numberOfPages)
        {
            if (state == ConversionState.Converted)
            {
                foreach (var outputSwfFileName in GetOutputSwfFileNames(swfPageFileNamePattern, numberOfPages))
                {
                    if (!File.Exists(outputSwfFileName))
                    {
                        var status = new ConversionStatus(ConversionState.ConversionFailedPaged);
                        status.Message = $"At least one output page is missing: " + outputSwfFileName;
                        _logger.LogError(status.Message);
                        return(status);
                    }
                }
            }

            return(new ConversionStatus(state));
        }
Ejemplo n.º 10
0
 public void Modify(string name, string contactNumber, string serviceInterested, string softwareInterested,
                    ConversionStatus conversionStatus, string rateUs, string suggestionForYes, string suggestionForNo,
                    string area, double price, string currentScenario, string rateUsForNo, double fee, List <ServiceItem> serviceItems)
 {
     Name               = name;
     ContactNumber      = contactNumber;
     ServiceInterested  = serviceInterested;
     SoftwareInterested = softwareInterested;
     ConversionStatus   = conversionStatus;
     RateUs             = rateUs;
     SuggestionForYes   = suggestionForYes;
     SuggestionForNo    = suggestionForNo;
     Area               = area;
     Price              = price;
     CurrentScenario    = currentScenario;
     RateUsForNo        = rateUsForNo;
     Fee          = fee;
     ServiceItems = serviceItems;
     IsActive     = true;
 }
Ejemplo n.º 11
0
        private void ProcessExited(object sender, EventArgs e)
        {
            process.WaitForExit();

            lock (stderrOutput) {
                conversionOutput = stderrOutput.ToString();
            }

            status = process.ExitCode == 0 ? ConversionStatus.Success : ConversionStatus.Failure;
            process.Dispose();
            process = null;

            if (status == ConversionStatus.Failure && !string.IsNullOrWhiteSpace(pngFileName))
            {
                File.Delete(pngFileName);
            }

            if (ConversionCompleted != null)
            {
                ConversionCompleted(this, EventArgs.Empty);
            }
        }
Ejemplo n.º 12
0
        // Try to begin conversion into bitmap.
        public ConversionStatus BeginConversion()
        {
            if (!SourceExists)
            {
                conversionOutput = string.Format("File '{0}' does not exist.", pdfFileName);
                status           = ConversionStatus.Failure;
                return(status);
            }

            CleanCacheDirectory();

            string cacheFileName = GetCacheFileName(pdfFileName);

            if (File.Exists(cacheFileName))
            {
                // Cached file still exists. Use it.
                conversionOutput = "";
                pngFileName      = cacheFileName;
                status           = ConversionStatus.Success;
                return(status);
            }

            return(BeginUncachedConversion(cacheFileName, Resolution));
        }
Ejemplo n.º 13
0
        private const int Resolution = 600; // Resolution in DPI

        public PdfMapFile(string pdfFileName)
        {
            this.pdfFileName = pdfFileName;
            this.status      = ConversionStatus.NotStarted;
        }
Ejemplo n.º 14
0
        private async Task OptimizePdfForConverter(string pdfFilePath, string optimizedFilePath, ConversionStatus status)
        {
            try
            {
                _logger.LogDebug($"Starting PDF optimization for file: {pdfFilePath}.");
                await _pdfProcessor.CheckIfDocumentWasScannedAndFixIfNecessaryAsync(pdfFilePath, optimizedFilePath);

                _logger.LogDebug($"Finishing PDF optimization for file: {pdfFilePath}. Optimized file path: {optimizedFilePath}");
            }
            catch (Exception ex)
            {
                status.Message = $"PDF file optimization failed: {ex}";
                _logger.LogError(status.Message);
                status.State = ConversionState.OptimizationFailed;
            }
        }
        /// <summary>
        /// Run the code example.
        /// </summary>
        /// <param name="service">An initialized Dfa Reporting service object
        /// </param>
        public override void Run(DfareportingService service)
        {
            long profileId = long.Parse(_T("INSERT_USER_PROFILE_ID_HERE"));

            // Value that specify how the existing conversion is encrypted.
            long   encryptionEntityId   = long.Parse(_T("INSERT_ENCRYPTION_ENTITY_TYPE"));
            string encryptionEntityType = _T("INSERT_ENCRYPTION_ENTITY_TYPE_HERE");
            string encryptionSource     = _T("INSERT_ENCRYPTION_SOURCE_HERE");

            // Values that identify the existing conversion.
            long   floodlightActivityId = long.Parse(_T("INSERT_FLOODLIGHT_ACTIVITY_ID_HERE"));
            long   conversionTimestamp  = long.Parse(_T("INSERT_CONVERSION_TIMESTAMP_HERE"));
            string conversionOrdinal    = _T("INSERT_CONVERSION_ORDINAL_VALUE_HERE");
            string conversionUserId     = _T("INSERT_CONVERSION_USER_ID_HERE");

            // Values to update for the specified conversion.
            long newQuantity = long.Parse(_T("INSERT_NEW_CONVERSION_QUANTITY_HERE"));
            long newValue    = long.Parse(_T("INSERT_NEW_CONVERSION_VALUE_HERE"));

            // [START create_conversion] MOE:strip_line
            // Find the Floodlight configuration ID based on the provided activity ID.
            FloodlightActivity floodlightActivity =
                service.FloodlightActivities.Get(profileId, floodlightActivityId).Execute();
            long floodlightConfigurationId = (long)floodlightActivity.FloodlightConfigurationId;

            // Construct the conversion object with values that identify the conversion to update.
            Conversion conversion = new Conversion();

            conversion.EncryptedUserId           = conversionUserId;
            conversion.FloodlightActivityId      = floodlightActivityId;
            conversion.FloodlightConfigurationId = floodlightConfigurationId;
            conversion.Ordinal         = conversionOrdinal;
            conversion.TimestampMicros = conversionTimestamp;

            // Set the fields to be updated. These fields are required; to preserve a value from the
            // existing conversion, it must be copied over manually.
            conversion.Quantity = newQuantity;
            conversion.Value    = newValue;
            // [END create_conversion] MOE:strip_line

            // [START create_encryption_info] MOE:strip_line
            // Create the encryption info.
            EncryptionInfo encryptionInfo = new EncryptionInfo();

            encryptionInfo.EncryptionEntityId   = encryptionEntityId;
            encryptionInfo.EncryptionEntityType = encryptionEntityType;
            encryptionInfo.EncryptionSource     = encryptionSource;
            // [END create_encryption_info] MOE:strip_line

            // [START update_conversion] MOE:strip_line
            // Insert the conversion.
            ConversionsBatchUpdateRequest request = new ConversionsBatchUpdateRequest();

            request.Conversions = new List <Conversion>()
            {
                conversion
            };
            request.EncryptionInfo = encryptionInfo;

            ConversionsBatchUpdateResponse response =
                service.Conversions.Batchupdate(request, profileId).Execute();

            // [END update_conversion] MOE:strip_line

            // [START process_response] MOE:strip_line
            // Handle the batchinsert response.
            if (!response.HasFailures.Value)
            {
                Console.WriteLine("Successfully updated conversion for encrypted user ID {0}.",
                                  conversionUserId);
            }
            else
            {
                Console.WriteLine("Error(s) updating conversion for encrypted user ID {0}:",
                                  conversionUserId);

                ConversionStatus status = response.Status[0];
                foreach (ConversionError error in status.Errors)
                {
                    Console.WriteLine("\t[{0}]: {1}", error.Code, error.Message);
                }
            }
            // [END process_response] MOE:strip_line
        }
Ejemplo n.º 16
0
 public PdfMapFile(string pdfFileName)
 {
     this.pdfFileName = pdfFileName;
     this.status = ConversionStatus.NotStarted;
 }
Ejemplo n.º 17
0
        public async Task <ConversionStatus> ConvertPdf2Swf(string inPdfFilePath, ConversionOptions options, Func <ConversionState, ConversionStatus> checkResultAfterConversion = null)
        {
            var status = new ConversionStatus(ConversionState.ConversionFailed);

            try
            {
                var inputPdf = new FileInfo(inPdfFilePath);
                if (!inputPdf.Exists)
                {
                    status.Message = "Input file doesn't exist. " + inPdfFilePath;
                    _logger.LogError(status.Message);
                    return(status);
                }

                //setting defaults
                var workingDir = options.OutputDirectory ?? inputPdf.DirectoryName;
                _logger.LogDebug($"Starting Conversion for file {inPdfFilePath}. Working dir {workingDir}");
                var optimizedFilePath = Path.Combine(workingDir, options.OutputNamingConventions.BuildOptimizedPdfFileName(inputPdf.Name));
                await OptimizePdfForConverter(inPdfFilePath, optimizedFilePath, status);

                if (status.State == ConversionState.OptimizationFailed)
                {
                    return(status);
                }

                int numberOfPages = await GetNumberOfPages(optimizedFilePath);

                if (numberOfPages == 0)
                {
                    var message = $"Critical failure. Can't detect number of pages for pdf: {optimizedFilePath}";
                    _logger.LogCritical(message);
                    return(new ConversionStatus(ConversionState.ConversionFailed, message));
                }

                var swfFile      = Path.Combine(workingDir, options.OutputNamingConventions.BuildSwfFileName(inputPdf.Name));
                var swfPagedFile = Path.Combine(workingDir, options.OutputNamingConventions.BuildPagedSwfFileName(inputPdf.Name));

                if (options.OverwriteExistingSwfs)
                {
                    CleanFilesBeforeConversion(options, swfFile, swfPagedFile, numberOfPages);
                }

                switch (options.HowToConvert)
                {
                case ConversionPath.OnePdf2OneSwf:
                    status = await PerformOnePdf2OneSwfConversion(options, optimizedFilePath, swfFile, checkResultAfterConversion);

                    break;

                case ConversionPath.OnePdf2PerPageSwf:
                    status = await PerformOnePdf2ManyPagesConversion(options, inPdfFilePath, swfPagedFile, numberOfPages, checkResultAfterConversion);

                    break;

                case ConversionPath.Both:
                    status = await PerformOnePdf2OneSwfConversion(options, optimizedFilePath, swfFile);

                    if (status.State == ConversionState.Converted || status.State == ConversionState.OutputExists)
                    {
                        status = await PerformOnePdf2ManyPagesConversion(options, inPdfFilePath, swfPagedFile, numberOfPages, checkResultAfterConversion, status);
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                status.Message = $"Critical failure. Converting error {ex}";
                status.State   = ConversionState.ConversionFailed;
                _logger.LogCritical(status.Message);
                return(status);
            }

            _logger.LogDebug($"Finishing Conversion for file {inPdfFilePath}. Status: {status.State}");

            return(status);
        }
 void  converter_ConversionUpdated(ConversionStatus sts, int percentage)
 {
     //
 }
Ejemplo n.º 19
0
        private void ProcessExited(object sender, EventArgs e)
        {
            process.WaitForExit();

            lock (stderrOutput) {
                conversionOutput = stderrOutput.ToString();
            }

            status = process.ExitCode == 0 ? ConversionStatus.Success : ConversionStatus.Failure;
            process.Dispose();
            process = null;

            if (status == ConversionStatus.Failure && !string.IsNullOrWhiteSpace(pngFileName))
                File.Delete(pngFileName);

            if (ConversionCompleted != null)
                ConversionCompleted(this, EventArgs.Empty);
        }
 public void GetConversionStatus(ref ConversionStatus sts, ref uint percentage)
 {
     sts        = m_status;
     percentage = m_percentage;
 }
Ejemplo n.º 21
0
        // Try to begin conversion into bitmap.
        public ConversionStatus BeginConversion()
        {
            if (!SourceExists) {
                conversionOutput = string.Format("File '{0}' does not exist.", pdfFileName);
                status = ConversionStatus.Failure;
                return status;
            }

            CleanCacheDirectory();

            string cacheFileName = GetCacheFileName(pdfFileName);
            if (File.Exists(cacheFileName)) {
                // Cached file still exists. Use it.
                conversionOutput = "";
                pngFileName = cacheFileName;
                status = ConversionStatus.Success;
                return status;
            }

            return BeginUncachedConversion(cacheFileName, Resolution);
        }
Ejemplo n.º 22
0
 protected string Translate(ConversionStatus status)
 {
     switch (status)
     {
         case ConversionStatus.Success:
             return "Success";
         case ConversionStatus.Canceled:
             return "Canceled";
         case ConversionStatus.InternalError:
             return "InternalError";
         case ConversionStatus.Fail:
             return "Fail";
         case ConversionStatus.UnavailableAction:
             return "UnavailableAction";
         case ConversionStatus.BadData:
             return "BadData";
         case ConversionStatus.IOError:
             return "IOError";
         case ConversionStatus.IOFileLocked:
             return "IOFileLocked";
         case ConversionStatus.InvalidPagesRange:
             return "InvalidPagesRange";
         case ConversionStatus.FileHasCopyProtection:
             return "FileHasCopyProtection";
         case ConversionStatus.UnsupportedEncryptionHandler:
             return "UnsupportedEncryptionHandler";
         case ConversionStatus.MissingCertificate:
             return "MissingCertificate";
         case ConversionStatus.OCRCanceled:
             return "OCRCanceled";
         case ConversionStatus.CanceledExists:
             return "CanceledExists";
         case ConversionStatus.NoTablesToExtract:
             return "NoTablesToExtract";
         case ConversionStatus.NoImagesToExtract:
             return "NoImagesToExtract";
         case ConversionStatus.PdfAError:
             return "PdfAError";
         case ConversionStatus.PdfAFatalError:
             return "PdfAFatalError";
         case ConversionStatus.AlreadyLoaded:
             return "AlreadyLoaded";
         case ConversionStatus.WrongPassword:
             return "WrongPassword";
         case ConversionStatus.NoUserNoOwner:
             return "NoUserNoOwner";
         case ConversionStatus.NoUserOwner:
             return "NoUserOwner";
         case ConversionStatus.UserNoOwner:
             return "UserNoOwner";
         case ConversionStatus.UserOwner:
             return "UserOwner";
         case ConversionStatus.InvalidLicense:
             return "InvalidLicense";
         case ConversionStatus.NoBppConversion:
             return "NoBppConversion";
         case ConversionStatus.NoGrayscale:
             return "NoGrayscale";
         case ConversionStatus.PSDUnsupportedMode:
             return "PSDUnsupportedMode";
         case ConversionStatus.Unknown:
         default:
             return "Unknown";
     }
 }
Ejemplo n.º 23
0
        private async Task <ConversionStatus> PerformOnePdf2ManyPagesConversion(ConversionOptions options,
                                                                                string optimizedPdfPath,
                                                                                string outSwfFileMultiPagePattern,
                                                                                int numberOfPages,
                                                                                Func <ConversionState, ConversionStatus> checkResultAfterConversion = null, ConversionStatus previousStatus = null)
        {
            var args = _settings.SwfToolsCommandPattern
                       .Replace("{pdfFile}", optimizedPdfPath)
                       .Replace("{swfFile}", outSwfFileMultiPagePattern);

            Func <ConversionState, ConversionStatus> GetSuccessValidator()
            {
                Func <ConversionState, ConversionStatus> result = null;

                if (checkResultAfterConversion != null)
                {
                    result = checkResultAfterConversion;
                }
                else
                {
                    result = state => DefaultMultiPageSuccessCheck(state, outSwfFileMultiPagePattern, numberOfPages);
                }

                return(result);
            }

            var checkResultsAndReturnStatus = GetSuccessValidator();

            if (!options.OverwriteExistingSwfs)
            {
                var pagesExist = GetOutputSwfFileNames(outSwfFileMultiPagePattern, numberOfPages).All(File.Exists);

                if (pagesExist)
                {
                    return(checkResultsAndReturnStatus(ConversionState.OutputExists));
                }

                //another try
            }

            return(await Convert(args, optimizedPdfPath, previousStatus, checkResultsAndReturnStatus));
        }
        /// <summary>
        /// Run the code example.
        /// </summary>
        /// <param name="service">An initialized Dfa Reporting service object
        /// </param>
        public override void Run(DfareportingService service)
        {
            long profileId = long.Parse(_T("INSERT_USER_PROFILE_ID_HERE"));

            // Values that identify the existing conversion.
            long   floodlightActivityId = long.Parse(_T("INSERT_FLOODLIGHT_ACTIVITY_ID_HERE"));
            long   conversionTimestamp  = long.Parse(_T("INSERT_CONVERSION_TIMESTAMP_HERE"));
            string conversionOrdinal    = _T("INSERT_CONVERSION_ORDINAL_VALUE_HERE");
            string conversionMobileId   = _T("INSERT_CONVERSION_MOBILE_ID_HERE");

            // Values to update for the specified conversion.
            long newQuantity = long.Parse(_T("INSERT_NEW_CONVERSION_QUANTITY_HERE"));
            long newValue    = long.Parse(_T("INSERT_NEW_CONVERSION_VALUE_HERE"));

            // Find the Floodlight configuration ID based on the provided activity ID.
            FloodlightActivity floodlightActivity =
                service.FloodlightActivities.Get(profileId, floodlightActivityId).Execute();
            long floodlightConfigurationId = (long)floodlightActivity.FloodlightConfigurationId;

            // Construct the conversion object with values that identify the conversion to update.
            Conversion conversion = new Conversion();

            conversion.MobileDeviceId            = conversionMobileId;
            conversion.FloodlightActivityId      = floodlightActivityId;
            conversion.FloodlightConfigurationId = floodlightConfigurationId;
            conversion.Ordinal         = conversionOrdinal;
            conversion.TimestampMicros = conversionTimestamp;

            // Set the fields to be updated. These fields are required; to preserve a value from the
            // existing conversion, it must be copied over manually.
            conversion.Quantity = newQuantity;
            conversion.Value    = newValue;

            // Update the conversion.
            ConversionsBatchUpdateRequest request = new ConversionsBatchUpdateRequest();

            request.Conversions = new List <Conversion>()
            {
                conversion
            };

            ConversionsBatchUpdateResponse response =
                service.Conversions.Batchupdate(request, profileId).Execute();

            // Handle the batchupdate response.
            if (!response.HasFailures.Value)
            {
                Console.WriteLine("Successfully updated conversion for mobile device ID {0}.",
                                  conversionMobileId);
            }
            else
            {
                Console.WriteLine("Error(s) updating conversion for mobile device ID {0}:",
                                  conversionMobileId);

                ConversionStatus status = response.Status[0];
                foreach (ConversionError error in status.Errors)
                {
                    Console.WriteLine("\t[{0}]: {1}", error.Code, error.Message);
                }
            }
        }
Ejemplo n.º 25
0
        private async Task <ConversionStatus> Convert(string args, string filePath,
                                                      ConversionStatus previousStatus = null,
                                                      Func <ConversionState, ConversionStatus> checkResultAfterConversion = null)
        {
            var status      = previousStatus ?? new ConversionStatus();
            var initialArgs = args;

            if (status.RenderEverythingAsBitmap)
            {
                _logger.LogDebug($"Retrying conversion for the file {filePath} with RenderEverythingAsBitmap option");
                args = $"{args} {_settings.RenderAsBitmapArgs}";
            }

            if (status.OverwriteSource)
            {
                _logger.LogDebug($"Retrying conversion for the file {filePath} trying to overwrite file protection");
                if (!TryToOverwriteProtection(filePath))
                {
                    _logger.LogInformation($"PDF file is either password protected or encrypted:{filePath}");
                    status.Message = "PDF file is protected. Can't proceed with the conversion";
                    status.State   = ConversionState.ConversionFailed;
                    return(status);
                }
            }

            try
            {
                using (var proc = new Process
                {
                    StartInfo =
                    {
                        FileName               = _settings.Pdf2SwfExecutableFilePath,
                        Arguments              = args,
                        UseShellExecute        = false,
                        WindowStyle            = ProcessWindowStyle.Hidden,
                        CreateNoWindow         = true,
                        RedirectStandardOutput = true,
                    }
                })
                {
                    if (proc.Start())
                    {
                        string result = proc.StandardOutput.ReadToEnd();
                        await proc.WaitForExitAsync();

                        _logger.LogInformation("Converter message:" + result);
                        proc.Close();


                        if (!status.RenderEverythingAsBitmap &&
                            result.Contains("This file is too complex to render- SWF only supports 65536 shapes at once")
                            )
                        {
                            status.RenderEverythingAsBitmap = true;
                            return(await Convert(initialArgs, filePath, status));
                        }

                        if (!status.OverwriteSource &&
                            result.Contains("PDF disallows copying"))
                        {
                            status.OverwriteSource = true;
                            return(await Convert(initialArgs, filePath, status));
                        }
                        else if (status.OverwriteSource)
                        {
                            status.OverwriteSource = false;
                        }

                        if (checkResultAfterConversion != null)
                        {
                            return(checkResultAfterConversion(ConversionState.Converted));
                        }

                        status.State = ConversionState.Converted;
                    }
                    else
                    {
                        _logger.LogError($"Starting the conversion tool process failed {_settings.Pdf2SwfExecutableFilePath} {args}");
                        status.State = ConversionState.ConversionFailed;
                    }
                }
            }
            catch (Exception e)
            {
                _logger.LogError($"Conversion failed with error: {e}");
                status.State = ConversionState.ConversionFailed;
            }


            return(status);
        }
        /// <summary>
        /// Run the code example.
        /// </summary>
        /// <param name="service">An initialized Dfa Reporting service object
        /// </param>
        public override void Run(DfareportingService service)
        {
            long encryptionEntityId   = long.Parse(_T("INSERT_ENCRYPTION_ENTITY_TYPE"));
            long floodlightActivityId = long.Parse(_T("INSERT_FLOODLIGHT_ACTIVITY_ID_HERE"));
            long profileId            = long.Parse(_T("INSERT_USER_PROFILE_ID_HERE"));

            string conversionUserId     = _T("INSERT_CONVERSION_USER_ID_HERE");
            string encryptionEntityType = _T("INSERT_ENCRYPTION_ENTITY_TYPE_HERE");
            string encryptionSource     = _T("INSERT_ENCRYPTION_SOURCE_HERE");

            // [START create_conversion] MOE:strip_line
            // Generate a timestamp in milliseconds since Unix epoch.
            TimeSpan timeSpan = DateTime.UtcNow - new DateTime(1970, 1, 1);
            long     currentTimeInMilliseconds = (long)timeSpan.TotalMilliseconds;

            // Find the Floodlight configuration ID based on the provided activity ID.
            FloodlightActivity floodlightActivity =
                service.FloodlightActivities.Get(profileId, floodlightActivityId).Execute();
            long floodlightConfigurationId = (long)floodlightActivity.FloodlightConfigurationId;

            // Create the conversion.
            Conversion conversion = new Conversion();

            conversion.EncryptedUserId           = conversionUserId;
            conversion.FloodlightActivityId      = floodlightActivityId;
            conversion.FloodlightConfigurationId = floodlightConfigurationId;
            conversion.Ordinal         = currentTimeInMilliseconds.ToString();
            conversion.TimestampMicros = currentTimeInMilliseconds * 1000;
            // [END create_conversion] MOE:strip_line

            // [START create_encryption_info] MOE:strip_line
            // Create the encryption info.
            EncryptionInfo encryptionInfo = new EncryptionInfo();

            encryptionInfo.EncryptionEntityId   = encryptionEntityId;
            encryptionInfo.EncryptionEntityType = encryptionEntityType;
            encryptionInfo.EncryptionSource     = encryptionSource;
            // [END create_encryption_info] MOE:strip_line

            // [START insert_conversion] MOE:strip_line
            // Insert the conversion.
            ConversionsBatchInsertRequest request = new ConversionsBatchInsertRequest();

            request.Conversions = new List <Conversion>()
            {
                conversion
            };
            request.EncryptionInfo = encryptionInfo;

            ConversionsBatchInsertResponse response =
                service.Conversions.Batchinsert(request, profileId).Execute();

            // [END insert_conversion] MOE:strip_line

            // [START process_response] MOE:strip_line
            // Handle the batchinsert response.
            if (!response.HasFailures.Value)
            {
                Console.WriteLine("Successfully inserted conversion for encrypted user ID {0}.",
                                  conversionUserId);
            }
            else
            {
                Console.WriteLine("Error(s) inserting conversion for encrypted user ID {0}:",
                                  conversionUserId);

                ConversionStatus status = response.Status[0];
                foreach (ConversionError error in status.Errors)
                {
                    Console.WriteLine("\t[{0}]: {1}", error.Code, error.Message);
                }
            }
            // [END process_response] MOE:strip_line
        }
Ejemplo n.º 27
0
        // Try to begin conversion into bitmap.
        public ConversionStatus BeginUncachedConversion(string fileName, int resolution)
        {
            try {
                string converterExe = FindPdfConverterExe();
                if (converterExe == null) {
                    conversionOutput = MiscText.PdfConverterNotFound;
                    status = ConversionStatus.Failure;
                    return status;
                }

                string arguments = String.Format(
                    "{2} \"{0}\" \"{1}\"",
                    pdfFileName, fileName, resolution);

                stderrOutput = new StringBuilder();
                ProcessStartInfo startInfo = new ProcessStartInfo(converterExe, arguments);
                startInfo.CreateNoWindow = true;
                startInfo.WindowStyle = ProcessWindowStyle.Hidden;
                startInfo.RedirectStandardError = true;
                startInfo.RedirectStandardOutput = true;
                startInfo.UseShellExecute = false;
                process = new Process();
                process.StartInfo = startInfo;
                process.EnableRaisingEvents = true;
                process.ErrorDataReceived += ProcessDataReceived;
                process.OutputDataReceived += ProcessDataReceived;
                process.Exited += ProcessExited;
                process.Start();
                process.BeginOutputReadLine();
                process.BeginErrorReadLine();

                status = ConversionStatus.Working;
                pngFileName = fileName;
                return status;
            }
            catch (Exception e) {
                status = ConversionStatus.Failure;

                if (!string.IsNullOrWhiteSpace(pngFileName))
                    File.Delete(pngFileName);

                conversionOutput = e.Message;
                return status;
            }
        }