feat: rebrand to MMD PDF, single corporate theme, and remove original text under an edit

- Services/PdfRedactText.cs: strip text whose origin falls inside a CoverAnnotation
  from the page content stream at save time, hooked into PdfBurn.DrawAnnotationsIntoDoc.
  Fixes edited values staying recoverable by text extraction.
- Themes/MMD.xaml replaces all thirteen themes; picker and accent strip removed; no dark mode.
- Rename KillerPDF -> MMD PDF across code, resources, packaging and locale strings; new icon.
- Remove the upstream author credit and the in-app install button.
This commit is contained in:
2026-08-27 07:37:09 +02:00
parent 532485a830
commit 6610acfa44
230 changed files with 9362 additions and 11508 deletions
+8 -8
View File
@@ -13,10 +13,10 @@ using System.Windows.Media.Imaging;
using Docnet.Core;
using Docnet.Core.Models;
namespace KillerPDF
namespace MmdPdf
{
/// <summary>
/// KillerPDF's own print dialog with a working preview. WPF's built-in PrintDialog
/// MmdPdf's own print dialog with a working preview. WPF's built-in PrintDialog
/// reports "This app doesn't support print preview", so we render the rasterized
/// pages ourselves, expose printer / orientation / copies / page-range settings,
/// and drive the spooler via a non-UI PrintDialog when the user clicks Print.
@@ -581,7 +581,7 @@ namespace KillerPDF
};
panel.Children.Add(margins);
// Pages per sheet (N-up): KillerPDF composes the sheet itself.
// Pages per sheet (N-up): MmdPdf composes the sheet itself.
panel.Children.Add(Label(S("Str_Print_PagesPerSheet")));
var nup = new ComboBox { Margin = new Thickness(0, 4, 0, 12), Height = 26 };
ApplyComboStyle(nup);
@@ -1208,7 +1208,7 @@ namespace KillerPDF
{
if (_queue == null)
{
KillerDialog.Show(this, S("Str_Dlg_NoPrinter"), "KillerPDF",
KillerDialog.Show(this, S("Str_Dlg_NoPrinter"), "MmdPdf",
MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
@@ -1218,7 +1218,7 @@ namespace KillerPDF
var indices = SelectedIndices();
if (indices.Count == 0)
{
KillerDialog.Show(this, S("Str_Dlg_NoValidPages"), "KillerPDF",
KillerDialog.Show(this, S("Str_Dlg_NoValidPages"), "MmdPdf",
MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
@@ -1285,7 +1285,7 @@ namespace KillerPDF
if (idx < 0 || idx >= _pages.Length) continue;
using var pr = dr.GetPageReader(idx);
int w = pr.GetPageWidth(), h = pr.GetPageHeight();
var pixels = KillerPDF.Services.PdfiumInterop.RenderPageWithAnnotations(_renderPath, idx, w, h)
var pixels = MmdPdf.Services.PdfiumInterop.RenderPageWithAnnotations(_renderPath, idx, w, h)
?? pr.GetImage();
var bs = BitmapSource.Create(w, h, 96, 96, PixelFormats.Bgra32, null, pixels, w * 4); // #141
bs.Freeze();
@@ -1318,7 +1318,7 @@ namespace KillerPDF
// been retyped behind the scrim, and a range that now matches nothing must stay disabled.
UpdatePreview();
KillerDialog.Show(this, S("Str_Err_PrintFailed") + "\n" + ex.GetType().Name + ": " + ex.Message,
"KillerPDF", MessageBoxButton.OK, MessageBoxImage.Error);
"MmdPdf", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
@@ -1366,7 +1366,7 @@ namespace KillerPDF
// STA: both the XPS serializer and the spooler reach apartment-bound COM underneath.
thread.SetApartmentState(System.Threading.ApartmentState.STA);
thread.IsBackground = true;
thread.Name = "KillerPDF print spool";
thread.Name = "MmdPdf print spool";
thread.Start();
return done.Task;
}