/// <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); }
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); //} }
protected virtual void Dispose(bool disposing) { if (disposing) { } // free native resources if there are any. if (loaded) { WkHtmlToPdfImports.wkhtmltopdf_deinit(); } }
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); //} }
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); }
private DotNetCorePdf() { loaded = true; WkHtmlToPdfImports.wkhtmltopdf_init(1); }