Releases: AroseEditor/Contrary-Convertor
Releases · AroseEditor/Contrary-Convertor
v1.9.0
Photo(s) → PDF / PDF → Photos
- Convert any image (JPG, PNG, WEBP, BMP, TIFF, GIF, AVIF, HEIC) directly to a PDF page (embedded into A4 via pdf-lib)
- Export PDF pages back to individual PNG images — one image per page, rendered via Puppeteer
- Multi-image → single PDF: combine multiple photos into one PDF document
Windows Context Menu Integration
- Installer registers "Convert with Contrary Convertor" in the Windows right-click menu for all file types
- Opening a file via context menu automatically loads it in the app ready for conversion
- Uninstaller cleanly removes the registry entries
Extended Archive Support (7zip-bin)
- Full read/write for: ZIP, RAR, 7Z, TAR, TGZ, TBZ2, TXZ, BZ2, XZ, GZ
- Extract-to-folder for all formats
- Cross-format conversion (e.g. RAR → ZIP, 7Z → TAR)
Programming Language Files (new "code" category)
- Supported: C, C++, Python, Rust, Julia, Kotlin, Nim, Dart, Go, Java, JavaScript, TypeScript, JAR, CSS, PHP, Ruby, Swift, Scala, Haskell, Lua, R, MATLAB, Perl, Shell, Batch, PowerShell, TOML, INI, CONF, LOG
- Convert to PDF (syntax-highlighted via Puppeteer), HTML (dark theme), or TXT
Text-to-Speech (TTS)
- Convert any text/code/document to MP3 using Microsoft Edge TTS (en-US-ChristopherNeural voice)
- Auto-installs
edge-ttsandpydubon first use via Python - 192k bitrate MP3 output with normalization
- Works on: TXT, MD, HTML, RTF, CSV, YAML, JSON, TOML, XML, and all code file types
Image Upscaling (2× / 4×)
- Upscale any image 2× or 4× using sharp's Lanczos3 high-quality resampling
- Non-destructive: saves as new file alongside the original
PPTX Conversions
- PPTX → PDF, HTML, TXT, MD
- No LibreOffice required — text extracted via native XML parsing
Expanded Markdown Output
- PDF → MD, DOCX → MD, PPTX → MD, HTML → MD, TXT → MD
- DOCX uses mammoth + turndown for clean Markdown from Word documents
Noise Removal — 3-Pass Pipeline
- Pass 1: 6-filter FFmpeg chain: highpass → lowpass → afftdn (nr=35 nf=-25) → anlmdn → speechnorm
- Pass 2: DeepFilterNet AI (unchanged)
- New Pass 3: post-AI cleanup — afftdn + anlmdn + dynaudnorm + loudnorm for broadcast-ready output
Internal / Build
- New npm dependencies:
7zip-bin,node-7z,marked,pptxgenjs,turndown build/installer.nshrewritten with context menu hooks and clean uninstall
v1.8.0
🎵 YouTube MP3 Fix
- Fixed "invalid merge output format" error when downloading YouTube videos as MP3
- Root cause:
--merge-output-format mp3is invalid — ffmpeg can only merge into container formats - Fix: switched to
--extract-audio --audio-format mp3 --audio-quality 0for audio downloads (VBR best) - Added
--ffmpeg-locationflag so yt-dlp uses the app-bundled ffmpeg binary reliably
🎧 Spotify Download Support
- Paste any Spotify track, album, or playlist URL and download as MP3 @ 320k
- Uses spotdl — auto-installed silently via pip on first use (leverages the existing Python auto-installer)
- Format picker auto-locks to MP3 when a Spotify URL is detected
- UI badge shows
Spotify • via spotdl • MP3 • 320kon paste - Works for tracks, albums, playlists, and artist pages
v1.7.0
🔊 AI & DSP Background Noise Removal
- New BG Noise Removal (2-pass AI+FFmpeg) post-processing option for audio and video files.
- Pass 1 (DSP): Uses a double
afftdn,anlmdn, and low-shelfequalizerfilter chain in FFmpeg. - Pass 2 (AI): Uses DeepFilterNet AI network for advanced speech enhancement and noise reduction.
- Silent Auto-Installer: Lazily installs Python 3.11 embeddable package and DeepFilterNet on Windows on first run (cached for future uses).
- Graceful Fallbacks: Non-Windows platforms or environments without DeepFilterNet support fall back to the optimized Pass 1 DSP filters.
- Supports single and bulk conversions, saving output as
<name>_denoised.<ext>.
1.6.0
v1.6.0 (April 30, 2026)
🔖 PDF Watermark
- New Watermark PDF conversion option — appears when input is a PDF
- Customizable watermark text via text input
- Opacity slider (0.00–1.00, default 0.15) for subtle or bold stamps
- Text is drawn diagonally across the center of every page, auto-scaled to page size
- Output saved as
filename_watermarked.pdfin the same directory - Uses pdf-lib for fast, dependency-free PDF manipulation
v1.5.2 Release
v1.5.2 (April 30, 2026)
🐛 Critical Fix — Conversion ENOENT crash
- Fixed
spawn ffmpeg.exe ENOENTerror that broke all video, audio, and image conversions in packaged builds - Root cause:
ffmpeg-staticresolved to a path insideapp.asar, but OS cannot spawn executables from asar archives - Added
getFFmpegPath()helper that swapsapp.asar→app.asar.unpackedfor the ffmpeg binary path - All 4 ffmpeg consumers patched: probeMedia, fixForPlatform, convertVideo, convertAudio
v1.5.0
Contrary Convertor — Updates
v1.5.0 (April 28, 2026)
📋 Clipboard Paste Support
- Ctrl+V to paste files directly into the app
- Works with copied files from Explorer and screenshots/images from clipboard
- Clipboard images are saved to temp dir and loaded automatically
📦 Bulk Operations
- Drop multiple files at once for batch conversion
- Right-click the dropzone to open multi-file selection dialog
- All files are processed sequentially with per-file progress reporting
- Common output formats are computed from the intersection of all files' supported formats
- Each result (success/failure) is individually tracked in history
🎵 Video → Audio Extraction
- Videos can now be converted to WAV, OGG, FLAC, AAC, OPUS (not just MP3)
- Full codec support: pcm_s24le for WAV, libvorbis for OGG, flac for FLAC, aac for AAC, libopus for OPUS
- Proper format containers for each audio type
🔍 OCR for Images
- Already built-in via extract-text format for images
- Uses Tesseract.js for OCR on JPG, PNG, WebP, BMP, TIFF, GIF, AVIF
- Real-time OCR progress reporting
(Release Skipped as same day , different time) v1.4.0 (April 28, 2026)
🔧 PDF Text Extraction — Complete Rewrite
- All text is now extracted from PDFs using page-by-page
getTextContent()via pdfjs - Image placeholders: Where images exist in the PDF,
[Insert Image Here]is inserted in the output - Image detection uses the PDF operator list (paintImageXObject/paintJpegXObject ops)
- Removed OCR dependency — pure text extraction, no Tesseract needed
- Added pdf-lib fallback parser that reads raw PDF content streams (Tj/TJ operators) if pdf-parse fails
- Works on all PDFs including encrypted/complex layouts
🎬 Video Conversion — Fixed
- Added explicit
.format()calls for every output container (mp4, mkv, mov, webm, avi, gif, mp3) - Added FLV and WMV output format support
- Added
-yoverwrite flag to prevent ffmpeg hanging on existing files - Added
-pix_fmt yuv420pand even-dimension padding for H.264 compatibility - Added
-movflags +faststartfor MP4 web streaming - Better error messages on ffmpeg failures
- Added fallback encoder path for unknown formats
🖼️ Image Conversion — Hardened
- Added
failOnError: falseto sharp — handles truncated/broken images gracefully - Added auto EXIF rotation via
.rotate()— images no longer appear rotated after conversion
🎵 Audio Conversion — Fixed
- Added
-yoverwrite flag to prevent ffmpeg hanging
Convertor New Release
Issue | Root Cause | Fix
-- | -- | --
Video→MP3 | -b:a 320k (CBR) + -q:a 0 (VBR) conflict in ffmpeg | Removed CBR flag — now uses pure VBR mode (quality 0 = highest quality, ~245-320kbps)
PDF text extraction | Custom pagerender callback crashing on some PDFs | Default path now uses parsed.text (pdf-parse's built-in extractor), only uses pagerender when Page Separation is ON. Added fallback error messages
yt-dlp no format shown | No format selector existed in download UI | Added 📹 MP4 / 🎵 MP3 dropdown next to the URL input. MP3 selection auto-passes quality: 'audio' which triggers bestaudio + --merge-output-format mp3
April 15 4 PM
Fixes:
- Added PDF text extraction using OCR.
- Fixed "Settings" not being saved,
- Saving Settings as Settings.json
- Ui Changes
- App Icon Changed
Developed By Ayushman.
New Release
1.1.0 Version adds :
Auto Updating
PDF / Any document extraction of text
Made by Ayushman