Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion scripts/test.ps1
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
$ErrorActionPreference = "Stop"

dotnet test --no-build --logger "console;verbosity=detailed"
dotnet test --logger "console;verbosity=detailed"
3 changes: 3 additions & 0 deletions src/TextForge.Core/Documents/DocumentContent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
namespace TextForge.Core.Documents;

public record DocumentContent(string Text);
6 changes: 6 additions & 0 deletions src/TextForge.Core/Documents/TextTemplate.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace TextForge.Core.Documents;

public class TextTemplate
{
public string Title { get; } = "TextForge";
}
11 changes: 8 additions & 3 deletions src/TextForge.Core/PdfService.cs
Original file line number Diff line number Diff line change
@@ -1,22 +1,27 @@
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;
using TextForge.Core.Documents;

namespace TextForge.Core;

public static class PdfService
{
public static void CreatePdf(string text, string path)
public static void CreatePdf(DocumentContent document, TextTemplate template, string path)
{
QuestPDF.Settings.License = LicenseType.Community;

Document.Create(container =>
{
container.Page(page =>
{
page.Content().Text(text);
page.Content().Column(column =>
{
column.Item().Text(template.Title);
column.Item().Text(document.Text);
});
});
})
.GeneratePdf(path);
}
}
}
5 changes: 5 additions & 0 deletions src/TextForge.Core/Preview/PreviewRenderer.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
namespace TextForge.Core.Preview;

public record PreviewDocument(
string Title,
string Text);
52 changes: 45 additions & 7 deletions src/TextForge.Desktop/Views/MainWindow.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,54 @@
<vm:MainViewModel />
</Design.DataContext>

<StackPanel Margin="20" Spacing="10">
<TextBox
Name="InputText"
AcceptsReturn="True"
Height="300"/>
<Grid
Margin="20"
RowDefinitions="*,Auto"
ColumnDefinitions="*,*"
ColumnSpacing="20"
RowSpacing="10">

<Button
<!-- Input -->
<TextBox
Grid.Row="0"
Grid.Column="0"
Name="InputText"
AcceptsReturn="True"/>

<!-- Preview -->
<Border
Grid.Row="0"
Grid.Column="1"
Background="White"
Padding="30"
BorderBrush="Gray"
BorderThickness="1">

<StackPanel Spacing="10">
<TextBlock
Text="TextForge"
FontSize="24"
FontWeight="Bold"/>

<Border
Height="1"
Background="Gray"/>

<TextBlock
Name="PreviewText"
TextWrapping="Wrap"/>
</StackPanel>

</Border>

<!-- Existing button -->
<Button
Grid.Row="1"
Grid.ColumnSpan="2"
Name="ConvertButton"
Content="Convert to PDF"
Click="ConvertButton_Click"/>
</StackPanel>

</Grid>

</Window>
23 changes: 18 additions & 5 deletions src/TextForge.Desktop/Views/MainWindow.axaml.cs
Original file line number Diff line number Diff line change
@@ -1,19 +1,32 @@
using Avalonia.Controls;
using TextForge.Core;

namespace TextForge.Desktop.Views;

using TextForge.Core.Preview;
using TextForge.Core.Documents;
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private void ConvertButton_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
private void ConvertButton_Click(
object? sender,
Avalonia.Interactivity.RoutedEventArgs e)
{
var textBox = this.FindControl<TextBox>("InputText");

PdfService.CreatePdf(textBox!.Text ?? "", "output.pdf");
var document = new DocumentContent(textBox!.Text ?? "");
var template = new TextTemplate();

var preview = new PreviewDocument(
template.Title,
document.Text);

var previewText = this.FindControl<TextBlock>("PreviewText");

previewText!.Text = preview.Text;

PdfService.CreatePdf(document, template, "output.pdf");
}
}
}
18 changes: 12 additions & 6 deletions tests/TextForge.Tests/PdfServiceTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace TextForge.Tests;

using TextForge.Core.Documents;
using UglyToad.PdfPig;

public class PdfServiceTests
Expand All @@ -15,7 +16,9 @@ public void CreatePdf_CreatesFile()
$"{Guid.NewGuid()}.pdf");

// Act
PdfService.CreatePdf("Hello World", path);
DocumentContent document = new DocumentContent("Hello World");
TextTemplate template = new TextTemplate();
PdfService.CreatePdf(document, template, path);

// Assert
Assert.True(File.Exists(path));
Expand All @@ -32,15 +35,18 @@ public void CreatePdf_ContentIsCorrect()
Path.GetTempPath(),
$"{Guid.NewGuid()}.pdf");

PdfService.CreatePdf(text, path);
DocumentContent document = new DocumentContent(text);
TextTemplate template = new TextTemplate();
PdfService.CreatePdf(document, template, path);

using var document = PdfDocument.Open(path);
using var pdfDocument = PdfDocument.Open(path);

var page = document.GetPage(1);
var page = pdfDocument.GetPage(1);

Assert.Equal(text, page.Text);
Assert.Contains(text, page.Text);
Assert.Contains(template.Title, page.Text);
// Cleanup
File.Delete(path);
}

}
Loading