Compare commits

..

20 Commits

Author SHA1 Message Date
e17e4f87fc Version bump 2025-06-18 14:03:16 -04:00
187b72d5f3 Bump project version.
Bumping the project version because of the updated library.
2025-06-18 14:02:28 -04:00
e664fe61b5 Update a return statement.
Update the version of the PDF-Sharp library.
2025-06-18 13:59:12 -04:00
868156a457 Bump version number. 2024-08-09 12:11:41 -04:00
8784670ad9 Merge pull request 'Added a new form to display the GPLv3 license for the project.' (#8) from issue#6 into master
Reviewed-on: ABSC/PDF-Merge#8
2024-08-08 13:21:45 -04:00
1b3fb5d47c Added a new form to display the GPLv3 license for the project.
Resolves issue #6.
2024-08-08 13:19:52 -04:00
18e904d9ec Merge pull request 'issue#4' (#7) from issue#4 into master
Reviewed-on: ABSC/PDF-Merge#7
2024-08-08 12:40:26 -04:00
66695f595f Merge branch 'issue#4' of https://efrick.ddns.net/git/ABSC/PDF-Merge into issue#4 2024-08-08 12:38:50 -04:00
cd64c19fa3 Fix null warnings in AboutBox1
One warning was left because it should not ever return null unless the
package has been damaged.
All other warnings have been resolved. This should close issue #4.
2024-08-08 12:38:11 -04:00
70cc9583af Fix null warnings in AboutBox1
One warning was left because it should not ever return null unless the
package has been damaged.
2024-08-08 12:36:16 -04:00
a1c79ab1f3 Fixed null warning in MergePDFs 2024-08-08 11:41:02 -04:00
d0a9bc9055 Fix null warning in MainForm 2024-08-08 11:37:22 -04:00
006228647d Fix null literal warning in ConfForm. 2024-08-08 11:35:31 -04:00
af2f15fd40 Add an unistaller and Registry entries.
The software can now uninstall itself and will show up in Add or Remove software.
2024-08-07 14:44:21 -04:00
065df71090 Set permissions on the install folder during the installation.
This was causing a error when the application was run due to the regular user not having write permissions.
2024-08-07 14:01:42 -04:00
a17d288f92 Merge pull request 'Resolve issue #1' (#5) from issue#1 into master
Reviewed-on: ABSC/PDF-Merge#5
2024-08-06 10:42:35 -04:00
ba059015cf Bump version number. 2024-08-06 10:41:00 -04:00
3b57fb0edf The date format is now selectable.
Added the form controls and AppSettings keys to allow the user to select
the format of the date appended to the output file.
Further update to issue #1.
2024-08-06 10:37:42 -04:00
1e75972ae9 Appending a date to the output file is now working.
This commit should resolve issue #1. Appending a date to the output file
is now a selectable option in the app configuration.
2024-08-06 09:53:40 -04:00
8c5d3f9e06 Merge pull request 'installer' (#2) from installer into master
Reviewed-on: ABSC/PDF-Merge#2
2024-08-05 19:18:16 -04:00
13 changed files with 1027 additions and 453 deletions

16
AboutBox1.Designer.cs generated
View File

@ -45,6 +45,7 @@
tableLayoutPanel.ColumnCount = 2;
tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33F));
tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 67F));
tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 20F));
tableLayoutPanel.Controls.Add(logoPictureBox, 0, 0);
tableLayoutPanel.Controls.Add(labelProductName, 1, 0);
tableLayoutPanel.Controls.Add(labelVersion, 1, 1);
@ -61,8 +62,8 @@
tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 10F));
tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 51.17647F));
tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 9.607843F));
tableLayoutPanel.Size = new Size(695, 510);
tableLayoutPanel.TabIndex = 0;
//
@ -94,7 +95,7 @@
// labelVersion
//
labelVersion.Dock = DockStyle.Fill;
labelVersion.Location = new Point(239, 51);
labelVersion.Location = new Point(239, 50);
labelVersion.Margin = new Padding(10, 0, 5, 0);
labelVersion.MaximumSize = new Size(0, 33);
labelVersion.Name = "labelVersion";
@ -106,7 +107,7 @@
// labelCopyright
//
labelCopyright.Dock = DockStyle.Fill;
labelCopyright.Location = new Point(239, 102);
labelCopyright.Location = new Point(239, 100);
labelCopyright.Margin = new Padding(10, 0, 5, 0);
labelCopyright.MaximumSize = new Size(0, 33);
labelCopyright.Name = "labelCopyright";
@ -114,11 +115,12 @@
labelCopyright.TabIndex = 21;
labelCopyright.Text = "Copyright";
labelCopyright.TextAlign = ContentAlignment.MiddleLeft;
labelCopyright.Click += labelCopyright_Click;
//
// labelCompanyName
//
labelCompanyName.Dock = DockStyle.Fill;
labelCompanyName.Location = new Point(239, 153);
labelCompanyName.Location = new Point(239, 150);
labelCompanyName.Margin = new Padding(10, 0, 5, 0);
labelCompanyName.MaximumSize = new Size(0, 33);
labelCompanyName.Name = "labelCompanyName";
@ -130,13 +132,13 @@
// textBoxDescription
//
textBoxDescription.Dock = DockStyle.Fill;
textBoxDescription.Location = new Point(239, 210);
textBoxDescription.Location = new Point(239, 206);
textBoxDescription.Margin = new Padding(10, 6, 5, 6);
textBoxDescription.Multiline = true;
textBoxDescription.Name = "textBoxDescription";
textBoxDescription.ReadOnly = true;
textBoxDescription.ScrollBars = ScrollBars.Both;
textBoxDescription.Size = new Size(451, 243);
textBoxDescription.Size = new Size(451, 246);
textBoxDescription.TabIndex = 23;
textBoxDescription.TabStop = false;
textBoxDescription.Text = "Description";

View File

@ -37,15 +37,15 @@ namespace PDF_Merge
return titleAttribute.Title;
}
}
return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
return Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().Location);
}
}
public string AssemblyVersion
public string? AssemblyVersion
{
get
{
return Assembly.GetExecutingAssembly().GetName().Version.ToString();
return Assembly.GetExecutingAssembly()?.GetName()?.Version?.ToString();
}
}
@ -106,5 +106,11 @@ namespace PDF_Merge
{
this.Close();
}
private void labelCopyright_Click(object sender, EventArgs e)
{
LicenseForm LicenseWindow = new LicenseForm();
LicenseWindow.Show();
}
}
}

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Microsoft ResX Schema
Version 2.0
@ -48,7 +48,7 @@
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
@ -120,406 +120,393 @@
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="logoPictureBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
QmCC
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
gg==
</value>
</data>
</root>

View File

@ -3,7 +3,11 @@
<appSettings>
<add key="PDF-Path" value=""/>
<add key="PDF-Output" value=""/>
<add key="PDF-Name" value="merged.pdf"/>
<add key="PDF-Name" value="merged"/>
<add key ="PDF-Extension" value=".pdf"/>
<add key="overwrite" value="true"/>
<add key="appendDate" value="false"/>
<add key ="dateFormat" value="yyyy-MM-dd"/>
<add key="dateIndex" value="0"/>
</appSettings>
</configuration>

88
ConfForm.Designer.cs generated
View File

@ -30,8 +30,8 @@ namespace PDF_Merge
/// </summary>
private void InitializeComponent()
{
saveBtn = new Button();
cancelBtn = new Button();
SaveBtn = new Button();
CancelBtn = new Button();
sourceBox = new TextBox();
outputBox = new TextBox();
folderBrowserDialog1 = new FolderBrowserDialog();
@ -42,27 +42,30 @@ namespace PDF_Merge
outPathBtn = new Button();
FileLable = new Label();
FileNameBox = new TextBox();
fileExtlabel = new Label();
appendDatecheckBox = new CheckBox();
dateFormatOpts = new ComboBox();
SuspendLayout();
//
// saveBtn
// SaveBtn
//
saveBtn.Location = new Point(327, 227);
saveBtn.Name = "saveBtn";
saveBtn.Size = new Size(112, 34);
saveBtn.TabIndex = 0;
saveBtn.Text = "Save";
saveBtn.UseVisualStyleBackColor = true;
saveBtn.Click += saveBtn_Click;
SaveBtn.Location = new Point(327, 227);
SaveBtn.Name = "SaveBtn";
SaveBtn.Size = new Size(112, 34);
SaveBtn.TabIndex = 0;
SaveBtn.Text = "&Save";
SaveBtn.UseVisualStyleBackColor = true;
SaveBtn.Click += SaveBtn_Click;
//
// cancelBtn
// CancelBtn
//
cancelBtn.Location = new Point(193, 227);
cancelBtn.Name = "cancelBtn";
cancelBtn.Size = new Size(112, 34);
cancelBtn.TabIndex = 1;
cancelBtn.Text = "Cancel";
cancelBtn.UseVisualStyleBackColor = true;
cancelBtn.Click += cancelBtn_Click;
CancelBtn.Location = new Point(193, 227);
CancelBtn.Name = "CancelBtn";
CancelBtn.Size = new Size(112, 34);
CancelBtn.TabIndex = 1;
CancelBtn.Text = "C&ancel";
CancelBtn.UseVisualStyleBackColor = true;
CancelBtn.Click += CancelBtn_Click;
//
// sourceBox
//
@ -116,7 +119,7 @@ namespace PDF_Merge
sourceDirBtn.TabIndex = 7;
sourceDirBtn.Text = "...";
sourceDirBtn.UseVisualStyleBackColor = true;
sourceDirBtn.Click += sourceDirBtn_Click;
sourceDirBtn.Click += SourceDirBtn_Click;
//
// outPathBtn
//
@ -126,7 +129,7 @@ namespace PDF_Merge
outPathBtn.TabIndex = 8;
outPathBtn.Text = "...";
outPathBtn.UseVisualStyleBackColor = true;
outPathBtn.Click += outPathBtn_Click;
outPathBtn.Click += OutPathBtn_Click;
//
// FileLable
//
@ -144,11 +147,43 @@ namespace PDF_Merge
FileNameBox.Size = new Size(150, 31);
FileNameBox.TabIndex = 10;
//
// fileExtlabel
//
fileExtlabel.AutoSize = true;
fileExtlabel.Location = new Point(327, 114);
fileExtlabel.Name = "fileExtlabel";
fileExtlabel.Size = new Size(44, 25);
fileExtlabel.TabIndex = 11;
fileExtlabel.Text = ".pdf";
//
// appendDatecheckBox
//
appendDatecheckBox.AutoSize = true;
appendDatecheckBox.Location = new Point(171, 187);
appendDatecheckBox.Name = "appendDatecheckBox";
appendDatecheckBox.Size = new Size(144, 29);
appendDatecheckBox.TabIndex = 12;
appendDatecheckBox.Text = "Append Date";
appendDatecheckBox.UseVisualStyleBackColor = true;
appendDatecheckBox.CheckedChanged += AppendDatecheckBox_CheckedChanged;
//
// dateFormatOpts
//
dateFormatOpts.FormattingEnabled = true;
dateFormatOpts.Items.AddRange(new object[] { "yyyy-MM-dd", "MM-dd-yyyy" });
dateFormatOpts.Location = new Point(321, 188);
dateFormatOpts.Name = "dateFormatOpts";
dateFormatOpts.Size = new Size(182, 33);
dateFormatOpts.TabIndex = 13;
//
// ConfForm
//
AutoScaleDimensions = new SizeF(10F, 25F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(500, 282);
ClientSize = new Size(546, 282);
Controls.Add(dateFormatOpts);
Controls.Add(appendDatecheckBox);
Controls.Add(fileExtlabel);
Controls.Add(FileNameBox);
Controls.Add(FileLable);
Controls.Add(outPathBtn);
@ -158,8 +193,8 @@ namespace PDF_Merge
Controls.Add(sourceLabel);
Controls.Add(outputBox);
Controls.Add(sourceBox);
Controls.Add(cancelBtn);
Controls.Add(saveBtn);
Controls.Add(CancelBtn);
Controls.Add(SaveBtn);
Name = "ConfForm";
Text = "Configure";
ResumeLayout(false);
@ -168,8 +203,8 @@ namespace PDF_Merge
#endregion
private Button saveBtn;
private Button cancelBtn;
private Button SaveBtn;
private Button CancelBtn;
private TextBox sourceBox;
private TextBox outputBox;
private FolderBrowserDialog folderBrowserDialog1;
@ -180,5 +215,8 @@ namespace PDF_Merge
private Button outPathBtn;
private Label FileLable;
private TextBox FileNameBox;
private Label fileExtlabel;
private CheckBox appendDatecheckBox;
private ComboBox dateFormatOpts;
}
}

View File

@ -17,13 +17,28 @@ namespace PDF_Merge
{
InitializeComponent();
string sourcePath = ConfigurationManager.AppSettings["PDF-Path"];
string outputPath = ConfigurationManager.AppSettings["PDF-Output"];
string outputName = ConfigurationManager.AppSettings["PDF-Name"];
string sourcePath = ConfigurationManager.AppSettings["PDF-Path"] ?? "";
string outputPath = ConfigurationManager.AppSettings["PDF-Output"] ?? "";
string outputName = ConfigurationManager.AppSettings["PDF-Name"] ?? "merged";
string outputExt = ConfigurationManager.AppSettings["PDF-Extension"] ?? ".pdf";
string dateIndex = ConfigurationManager.AppSettings["dateIndex"] ?? "0";
int dateIndexValue;
bool indexSet = int.TryParse(dateIndex, out dateIndexValue);
if (indexSet)
{
dateFormatOpts.SelectedIndex = dateIndexValue;
} else
{
dateFormatOpts.SelectedIndex = 0;
}
sourceBox.Text = sourcePath;
outputBox.Text = outputPath;
FileNameBox.Text = outputName;
fileExtlabel.Text = outputExt;
if (ConfigurationManager.AppSettings["overwrite"] == true.ToString())
{
overrideCBox.Checked = true;
@ -32,14 +47,23 @@ namespace PDF_Merge
{
overrideCBox.Checked = false;
}
if (ConfigurationManager.AppSettings["appendDate"] == true.ToString())
{
appendDatecheckBox.Checked = true;
}
else
{
appendDatecheckBox.Checked = false;
}
CheckAppend();
}
private void cancelBtn_Click(object sender, EventArgs e)
private void CancelBtn_Click(object sender, EventArgs e)
{
this.Close();
}
private void saveBtn_Click(object sender, EventArgs e)
private void SaveBtn_Click(object sender, EventArgs e)
{
Configuration appConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
AppSettingsSection appSettings = appConfig.AppSettings;
@ -68,12 +92,15 @@ namespace PDF_Merge
MessageBox.Show("File must be named.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
appSettings.Settings["overwrite"].Value = overrideCBox.Checked.ToString();
appSettings.Settings["appendDate"].Value = appendDatecheckBox.Checked.ToString();
appSettings.Settings["dateFormat"].Value = dateFormatOpts.SelectedItem.ToString();
appSettings.Settings["dateIndex"].Value = dateFormatOpts.SelectedIndex.ToString();
appConfig.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
this.Close();
}
private void sourceDirBtn_Click(object sender, EventArgs e)
private void SourceDirBtn_Click(object sender, EventArgs e)
{
using (var SourceDirPicker = new FolderBrowserDialog())
{
@ -94,7 +121,7 @@ namespace PDF_Merge
}
}
private void outPathBtn_Click(object sender, EventArgs e)
private void OutPathBtn_Click(object sender, EventArgs e)
{
using (var OutPathPicker = new FolderBrowserDialog())
{
@ -106,5 +133,21 @@ namespace PDF_Merge
}
}
}
private void AppendDatecheckBox_CheckedChanged(object sender, EventArgs e)
{
CheckAppend();
}
private void CheckAppend()
{
if (appendDatecheckBox.Checked)
{
dateFormatOpts.Visible = true;
}
else
{
dateFormatOpts.Visible = false;
}
}
}
}

86
LicenseForm.Designer.cs generated Normal file
View File

@ -0,0 +1,86 @@
namespace PDF_Merge
{
partial class LicenseForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LicenseForm));
CloseBtn = new Button();
richTextBox1 = new RichTextBox();
GPLLink = new LinkLabel();
SuspendLayout();
//
// CloseBtn
//
CloseBtn.Location = new Point(342, 404);
CloseBtn.Name = "CloseBtn";
CloseBtn.Size = new Size(112, 34);
CloseBtn.TabIndex = 0;
CloseBtn.Text = "&Close";
CloseBtn.UseVisualStyleBackColor = true;
CloseBtn.Click += this.CloseBtn_Click;
//
// richTextBox1
//
richTextBox1.Location = new Point(12, 51);
richTextBox1.Name = "richTextBox1";
richTextBox1.Size = new Size(776, 347);
richTextBox1.TabIndex = 1;
richTextBox1.Text = resources.GetString("richTextBox1.Text");
//
// GPLLink
//
GPLLink.AutoSize = true;
GPLLink.Location = new Point(355, 9);
GPLLink.Name = "GPLLink";
GPLLink.Size = new Size(60, 25);
GPLLink.TabIndex = 2;
GPLLink.TabStop = true;
GPLLink.Text = "GPLv3";
GPLLink.LinkClicked += GPLLink_LinkClicked;
//
// LicenseForm
//
AutoScaleDimensions = new SizeF(10F, 25F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(800, 450);
Controls.Add(GPLLink);
Controls.Add(richTextBox1);
Controls.Add(CloseBtn);
Name = "LicenseForm";
Text = "GPLv3";
ResumeLayout(false);
PerformLayout();
}
#endregion
private Button CloseBtn;
private RichTextBox richTextBox1;
private LinkLabel GPLLink;
}
}

22
LicenseForm.cs Normal file
View File

@ -0,0 +1,22 @@
using System.Diagnostics;
namespace PDF_Merge
{
public partial class LicenseForm : Form
{
public LicenseForm()
{
InitializeComponent();
}
private void GPLLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Process.Start(new ProcessStartInfo("https://www.gnu.org/licenses/gpl-3.0.en.html") { UseShellExecute = true });
}
private void CloseBtn_Click(object sender, EventArgs e)
{
Close();
}
}
}

354
LicenseForm.resx Normal file
View File

@ -0,0 +1,354 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="richTextBox1.Text" xml:space="preserve">
<value>GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright © 2007 Free Software Foundation, Inc. &lt;https://fsf.org/&gt;
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for software and other kinds of works.
The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions.
Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and modification follow.
TERMS AND CONDITIONS
0. Definitions.
“This License” refers to version 3 of the GNU General Public License.
“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.
“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations.
To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work.
A “covered work” means either the unmodified Program or a work based on the Program.
To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.
To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.
1. Source Code.
The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work.
A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.
The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.
The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.
The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.
The Corresponding Source for a work in source code form is that same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.
When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified it, and giving a relevant date.
b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”.
c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.
A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:
a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.
d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.
A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.
A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.
“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.
If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).
The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.
7. Additional Terms.
“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or authors of the material; or
e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.
All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).
However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.
Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.
An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.
11. Patents.
A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”.
A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.
In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.
If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.
A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.
If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.
Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.
PDF-Merge
Copyright (C) 2024 ABSC
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:
PDF-Merge Copyright (C) 2024 ABSC
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”.
You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see &lt;https://www.gnu.org/licenses/&gt;.
The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read &lt;https://www.gnu.org/philosophy/why-not-lgpl.html&gt;.</value>
</data>
</root>

View File

@ -12,12 +12,20 @@ namespace PDF_Merge
}
private static string getOutputPath()
{
string pdfPath = ConfigurationManager.AppSettings["PDF-Output"] + Path.DirectorySeparatorChar + ConfigurationManager.AppSettings["PDF-Name"];
string pdfPath;
if (ConfigurationManager.AppSettings["appendDate"] == true.ToString())
{
pdfPath = ConfigurationManager.AppSettings["PDF-Output"] + Path.DirectorySeparatorChar + ConfigurationManager.AppSettings["PDF-Name"] + "_" + MergePDFs.GetDate() + ConfigurationManager.AppSettings["PDF-Extension"];
}
else
{
pdfPath = ConfigurationManager.AppSettings["PDF-Output"] + Path.DirectorySeparatorChar + ConfigurationManager.AppSettings["PDF-Name"] + ConfigurationManager.AppSettings["PDF-Extension"];
}
return pdfPath;
}
public void SetPathLable()
{
string sourcePath = ConfigurationManager.AppSettings["PDF-Path"];
string sourcePath = ConfigurationManager.AppSettings["PDF-Path"] ?? "";
if (sourcePath != null)
{

View File

@ -60,7 +60,7 @@
}
public static string[] CollectPdfFiles()
{
string dirPath = ConfigurationManager.AppSettings["PDF-Path"];
string dirPath = ConfigurationManager.AppSettings["PDF-Path"] ?? "";
Console.WriteLine(dirPath);
string[] pdfFiles = Directory.EnumerateFiles(dirPath, "*.pdf").ToArray();
Array.Sort(pdfFiles);
@ -77,6 +77,13 @@
}
return pdfFiles;
}
public static string GetDate()
{
DateTime date = DateTime.Now;
string dateFormat = ConfigurationManager.AppSettings["dateFormat"] ?? "yyyy-MM-dd";
return date.ToString(dateFormat);
}
}
}

View File

@ -9,7 +9,7 @@
<ImplicitUsings>enable</ImplicitUsings>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageReadmeFile>README.md</PackageReadmeFile>
<Version>2024.08.05</Version>
<Version>2024.08.09.01</Version>
<Company>ABSC Inc.</Company>
<Description>This tool merges PDF files from a configured directory into a single PDF.</Description>
<Copyright>GNU GPL v3 2024</Copyright>
@ -18,6 +18,8 @@
<RepositoryUrl>https://efrick.ddns.net/git/ABSC/PDF-Merge</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<ApplicationIcon>PDF-Merge Icon.ico</ApplicationIcon>
<FileVersion>2025.6.18.1</FileVersion>
<AssemblyVersion>2025.6.18.1</AssemblyVersion>
</PropertyGroup>
<ItemGroup>
@ -25,8 +27,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="PDFsharp" Version="6.1.1" />
<PackageReference Include="QuestPDF" Version="2024.7.1" />
<PackageReference Include="PDFsharp" Version="6.2.0" />
</ItemGroup>
<ItemGroup>

View File

@ -23,7 +23,7 @@ Var Current_Version
Function SetWelcomeMsg
StrCpy $Company_Name "Applied Business Solutions Consulting, Inc. (ABSC)"
StrCpy $Current_Version "2024.08.05.1"
StrCpy $Current_Version "2024.08.09.1"
SendMessage $mui.WelcomePage.Text= ${WM_SETTEXT} 0 "STR: Merge several PDFs into a single file.$\n Requiers .NET version 6 $\n Version: $Current_Version $\n Developed by: $Company_Name"
FunctionEnd
@ -34,7 +34,23 @@ SectionGroup "PDF-Merge" pdf_merge_inst
File "bin\Release\PDF-Merge.zip"
nsisunz::UnzipToLog "$INSTDIR\PDF-Merge.zip" "$INSTDIR"
Delete "$INSTDIR\PDF-Merge.zip"
nsExec::ExecToStack 'icacls "$INSTDIR" /grant Everyone:F /T'
CreateShortCut "$DESKTOP\PDF-Merge.lnk" "${APP_EXE}"
File "PDF-Merge Icon.ico"
; Write the registry keys to add the program to the Installed Programs list
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PDF-Merge\" "InstallDate" 0x00000000
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PDF-Merge\" "DisplayName" "PDF-Merge"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PDF-Merge\" "DisplayVersion" "$Current_Version"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PDF-Merge\" "Publisher" "$Company_Name"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PDF-Merge\" "UninstallString" '"$INSTDIR\uninst.exe"'
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PDF-Merge\" "DisplayIcon" '"$INSTDIR\PDF-Merge Icon.ico"'
WriteUninstaller "uninst.exe"
SectionEnd
SectionGroupEnd
Section "Uninstall"
Delete "$DESKTOP\PDF-Merge.lnk"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\PDF-Merge\"
RMDir /r "$INSTDIR"
SectionEnd