コード例 #1
0
        /// <summary>
        /// Get the current underlying version for wkhtmltopdf.dll
        /// </summary>
        /// <returns>Version String</returns>
        public string WkHtmlToPdfVersion()
        {
            string version = string.Empty;

            version = Marshal.PtrToStringAnsi(WkHtmlToPdfImports.wkhtmltopdf_version());
            return(version);
        }
コード例 #2
0
 protected void ProgressChangedCallback(IntPtr converter)
 {
     IntPtr progressStrPtr = WkHtmlToPdfImports.wkhtmltopdf_progress_string(converter);
     string progressStr    = Marshal.PtrToStringAnsi(progressStrPtr);
     //if (OnProgressChanged != null)
     //{
     //    IntPtr progressStrPtr = WkHtmlToPdfImports.wkhtmltopdf_progress_string(converter);
     //    string progressStr = Marshal.PtrToStringAnsi(progressStrPtr);
     //    OnProgressChanged(progressStr);
     //}
 }
コード例 #3
0
 protected virtual void Dispose(bool disposing)
 {
     if (disposing)
     {
     }
     // free native resources if there are any.
     if (loaded)
     {
         WkHtmlToPdfImports.wkhtmltopdf_deinit();
     }
 }
コード例 #4
0
 protected void PhaseChangedCallback(IntPtr converter)
 {
     int    currentPhase           = WkHtmlToPdfImports.wkhtmltopdf_current_phase(converter);
     int    phaseCount             = WkHtmlToPdfImports.wkhtmltopdf_phase_count(converter);
     IntPtr phaseDescriptionStrPtr = WkHtmlToPdfImports.wkhtmltopdf_phase_description(converter, currentPhase);
     string phaseDescriptionStr    = Marshal.PtrToStringAnsi(phaseDescriptionStrPtr);
     //if (OnPhaseChanged != null)
     //{
     //    int currentPhase = WkHtmlToPdfImports.wkhtmltopdf_current_phase(converter);
     //    int phaseCount = WkHtmlToPdfImports.wkhtmltopdf_phase_count(converter);
     //    IntPtr phaseDescriptionStrPtr = WkHtmlToPdfImports.wkhtmltopdf_phase_description(converter, currentPhase);
     //    string phaseDescriptionStr = Marshal.PtrToStringAnsi(phaseDescriptionStrPtr);
     //    OnPhaseChanged(currentPhase, phaseCount, phaseDescriptionStr);
     //}
 }
コード例 #5
0
        protected byte[] ConvertHtmlToPdf(PdfConverterGlobalSettings globalSettings, PdfConverterObjectSettings objectSettings, byte[] data = null)
        {
            byte[] resultBuffer = null;

            lock (_converterRoot)
            {
                try
                {
                    Dictionary <string, string> sGlobalSettings = ObjectToDictionaryConverter.Convert(globalSettings);
                    Dictionary <string, string> sObjectSettings = ObjectToDictionaryConverter.Convert(objectSettings);

                    IntPtr globalSettingsPtr = WkHtmlToPdfImports.wkhtmltopdf_create_global_settings();
                    GlobalSettingsPtr = globalSettingsPtr;
                    foreach (var globalSetting in sGlobalSettings)
                    {
                        WkHtmlToPdfImports.wkhtmltopdf_set_global_setting(globalSettingsPtr, globalSetting.Key, globalSetting.Value);
                    }

                    IntPtr objectSettingsPtr = WkHtmlToPdfImports.wkhtmltopdf_create_object_settings();
                    ObjectSettingsPtr = objectSettingsPtr;
                    foreach (var objectSetting in sObjectSettings)
                    {
                        WkHtmlToPdfImports.wkhtmltopdf_set_object_setting(objectSettingsPtr, objectSetting.Key, objectSetting.Value);
                    }

                    IntPtr converterPtr = WkHtmlToPdfImports.wkhtmltopdf_create_converter(globalSettingsPtr);
                    ConverterPtr = converterPtr;

                    //Set Callbacks
                    WkHtmlToPdfImports.wkhtmltopdf_set_progress_changed_callback(converterPtr, ProgressChangedCallback);
                    WkHtmlToPdfImports.wkhtmltopdf_set_phase_changed_callback(converterPtr, PhaseChangedCallback);
                    WkHtmlToPdfImports.wkhtmltopdf_set_error_callback(converterPtr, ErrorCallback);
                    WkHtmlToPdfImports.wkhtmltopdf_set_warning_callback(converterPtr, WarningCallback);

                    WkHtmlToPdfImports.wkhtmltopdf_add_object(converterPtr, objectSettingsPtr, data);

                    if (!WkHtmlToPdfImports.wkhtmltopdf_convert(converterPtr))
                    {
                        int errorCode = WkHtmlToPdfImports.wkhtmltopdf_http_error_code(converterPtr);
                        throw new WkHtmlToPdfException(errorCode);
                    }

                    IntPtr dataPtr   = IntPtr.Zero;
                    int    resultLen = WkHtmlToPdfImports.wkhtmltopdf_get_output(converterPtr, out dataPtr);
                    if (resultLen > 0)
                    {
                        resultBuffer = new byte[resultLen];
                        Marshal.Copy(dataPtr, resultBuffer, 0, resultLen);
                    }
                }
                finally
                {
                    if (GlobalSettingsPtr != IntPtr.Zero)
                    {
                        WkHtmlToPdfImports.wkhtmltopdf_destroy_global_settings(GlobalSettingsPtr);
                        GlobalSettingsPtr = IntPtr.Zero;
                    }
                    if (ObjectSettingsPtr != IntPtr.Zero)
                    {
                        WkHtmlToPdfImports.wkhtmltopdf_destroy_object_settings(ObjectSettingsPtr);
                        ObjectSettingsPtr = IntPtr.Zero;
                    }
                    if (ConverterPtr != IntPtr.Zero)
                    {
                        WkHtmlToPdfImports.wkhtmltopdf_destroy_converter(ConverterPtr);
                        ConverterPtr = IntPtr.Zero;
                    }
                }
            }

            return(resultBuffer);
        }
コード例 #6
0
 private DotNetCorePdf()
 {
     loaded = true;
     WkHtmlToPdfImports.wkhtmltopdf_init(1);
 }