+
+
Image to text converter
+
+
Text extractor from Image?
+
Text extractor is a tool which analyzes and process the image and
+ extract the text from it.
+ Any type of image such as jpg,png,jpeg..etc. it can extract.It tries out to extract all possible
+ text from image but due to some
+ different font style or unknown characters, it can omit some words from image.
+ You can also try text to image converter.
+
+
+
Image to text converter tool
+
+
{% endblock %}
{% block JS %}
-
+
{% endblock %}
\ No newline at end of file
diff --git a/mysite/templates/textAnalyzer/password_generator.html b/mysite/templates/textAnalyzer/password_generator.html
new file mode 100644
index 0000000..f0fc6b8
--- /dev/null
+++ b/mysite/templates/textAnalyzer/password_generator.html
@@ -0,0 +1,174 @@
+{% extends 'main_index.html' %}
+{% block MDesc %}
+Generate secure, random passwords with our Password Generator tool. Customize length, uppercase, lowercase, numbers, and
+symbols.
+{% endblock %}
+{% block MKW %}
+password generator, secure password, random password maker, strong password generator, free password generator, online password generator, best password generator, generate strong password, create secure password, random secure password, strong random password, unhackable password generator, password creator tool, instant password generator, browser-based password generator, private password generator, local password generator, offline password generator, client-side password generator, password generator no data stored, password generator without storage, password generator with symbols, password generator with special characters, password generator with numbers, password generator with uppercase and lowercase, customizable password generator, password generator with length control, password generator without ambiguous characters, WiFi password generator, router password generator, password generator for Gmail, password generator for Instagram, password generator for Facebook, banking password generator, business password generator, enterprise password generator, secure admin password generator, database password generator, API key generator, secure token generator, random 12 character password, random 16 character password, 20 character password generator, 32 character strong password, how to generate a strong password, what is a secure password, best password length for security, create unhackable password
+{% endblock %}
+{% block Mr %}
+{% now "d/m/Y" %}
+{% endblock %}
+{% block MAut %}
+calcont
+{% endblock %}
+{% block title %} Password Generator - Create Secure Passwords
+{% endblock %}
+{% block body %}
+
+
+
+
+
+
+
Password Generator
+
+
+
Generating...
+
+
+
+
+
+
+
+ 16
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
+{% block JS %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/staticfiles/js/textAnalyzers/password_generator.js b/staticfiles/js/textAnalyzers/password_generator.js
new file mode 100644
index 0000000..648d884
--- /dev/null
+++ b/staticfiles/js/textAnalyzers/password_generator.js
@@ -0,0 +1,84 @@
+document.addEventListener('DOMContentLoaded', () => {
+ const passwordDisplay = document.getElementById('generated-password');
+ const lengthSlider = document.getElementById('password-length');
+ const lengthVal = document.getElementById('length-val');
+ const uppercaseCb = document.getElementById('include-uppercase');
+ const lowercaseCb = document.getElementById('include-lowercase');
+ const numbersCb = document.getElementById('include-numbers');
+ const symbolsCb = document.getElementById('include-symbols');
+ const generateBtn = document.getElementById('generate-btn');
+ const copyBtn = document.getElementById('copy-password-btn');
+
+ const UPPERCASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+ const LOWERCASE_CHARS = 'abcdefghijklmnopqrstuvwxyz';
+ const NUMBER_CHARS = '0123456789';
+ const SYMBOL_CHARS = '!@#$%^&*()_+~`|}{[]:;?><,./-=';
+
+ function generatePassword() {
+ let chars = '';
+ if (uppercaseCb.checked) chars += UPPERCASE_CHARS;
+ if (lowercaseCb.checked) chars += LOWERCASE_CHARS;
+ if (numbersCb.checked) chars += NUMBER_CHARS;
+ if (symbolsCb.checked) chars += SYMBOL_CHARS;
+
+ if (chars.length === 0) {
+ passwordDisplay.textContent = 'Please select at least one option';
+ return;
+ }
+
+ let password = '';
+ const length = parseInt(lengthSlider.value);
+
+ let requiredChars = [];
+ if (uppercaseCb.checked) requiredChars.push(UPPERCASE_CHARS[Math.floor(Math.random() * UPPERCASE_CHARS.length)]);
+ if (lowercaseCb.checked) requiredChars.push(LOWERCASE_CHARS[Math.floor(Math.random() * LOWERCASE_CHARS.length)]);
+ if (numbersCb.checked) requiredChars.push(NUMBER_CHARS[Math.floor(Math.random() * NUMBER_CHARS.length)]);
+ if (symbolsCb.checked) requiredChars.push(SYMBOL_CHARS[Math.floor(Math.random() * SYMBOL_CHARS.length)]);
+
+ // Always put one character of each requirement
+ for (let i = 0; i < requiredChars.length && i < length; i++) {
+ password += requiredChars[i];
+ }
+
+ for (let i = password.length; i < length; i++) {
+ const randomIndex = Math.floor(Math.random() * chars.length);
+ password += chars[randomIndex];
+ }
+
+ password = password.split('').sort(() => 0.5 - Math.random()).join('');
+
+ passwordDisplay.textContent = password;
+ }
+
+ // Event Listeners
+ lengthSlider.addEventListener('input', (e) => {
+ lengthVal.textContent = e.target.value;
+ generatePassword();
+ });
+
+ [uppercaseCb, lowercaseCb, numbersCb, symbolsCb].forEach(cb => {
+ cb.addEventListener('change', generatePassword);
+ });
+
+ generateBtn.addEventListener('click', generatePassword);
+
+ copyBtn.addEventListener('click', () => {
+ const textToCopy = passwordDisplay.textContent;
+ if (textToCopy === 'Please select at least one option' || textToCopy === 'Generating...') return;
+
+ navigator.clipboard.writeText(textToCopy).then(() => {
+ const originalHTML = copyBtn.innerHTML;
+ copyBtn.innerHTML = `
+
+ `;
+ setTimeout(() => {
+ copyBtn.innerHTML = originalHTML;
+ }, 2000);
+ });
+ });
+
+ // Initial Generation
+ generatePassword();
+});