Skip to content

Commit 1f0bb1d

Browse files
authored
Merge pull request #20 from kevbite/issue19
Issue 19: Supporting Net Standard 2.0
2 parents 8132bdf + 4434b84 commit 1f0bb1d

File tree

7 files changed

+61
-22
lines changed

7 files changed

+61
-22
lines changed

src/Kevsoft.PDFtk/DataField.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ internal static DataField Parse(string[] args)
2121
var dataField = new DataField();
2222
foreach (var arg in args)
2323
{
24-
var split = arg.Split(":", 2);
24+
var split = arg.Split(new []{':'}, 2);
2525
var key = split[0];
2626

27-
var value = split.Length == 1 ? null : split[1][1..];
27+
var value = split.Length == 1 ? null : split[1].Substring(1);
2828

2929
FieldSetMap[key](dataField, value);
3030
}

src/Kevsoft.PDFtk/Kevsoft.PDFtk.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>netstandard2.1;net5.0</TargetFrameworks>
4+
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0</TargetFrameworks>
55
</PropertyGroup>
66

77
<PropertyGroup>

src/Kevsoft.PDFtk/PDFtk.cs

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public PDFtk(PDFtkOptions options)
3939
{
4040
var key = "NumberOfPages: ";
4141
var line = executeProcessResult.StandardOutput
42-
.Split(Environment.NewLine)
42+
.Split(new[] { Environment.NewLine }, StringSplitOptions.None)
4343
.Single(x => x.StartsWith(key));
4444

4545
pages = int.Parse(line.Substring(key.Length));
@@ -103,8 +103,8 @@ public async Task<IPDFtkResult<IDataField[]>> GetDataFieldsAsync(string filePath
103103
if (executeProcessResult.Success)
104104
{
105105
dataFields = executeProcessResult.StandardOutput
106-
.Split("---" + Environment.NewLine, StringSplitOptions.RemoveEmptyEntries)
107-
.Select(x => x.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries))
106+
.Split(new[] { "---" + Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)
107+
.Select(x => x.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
108108
.Select(DataField.Parse)
109109
.ToArray();
110110
}
@@ -190,7 +190,13 @@ private static async Task<IPDFtkResult<byte[]>> ResolveSingleFileExecutionResult
190190
var bytes = Array.Empty<byte>();
191191
if (executeProcessResult.Success)
192192
{
193+
#if NETSTANDARD2_0
194+
bytes = File.ReadAllBytes(outputFile.TempFileName);
195+
await Task.CompletedTask;
196+
197+
#else
193198
bytes = await File.ReadAllBytesAsync(outputFile.TempFileName);
199+
#endif
194200
}
195201

196202
return new PDFtkResult<byte[]>(executeProcessResult, bytes);
@@ -206,13 +212,19 @@ private static async Task<IPDFtkResult<IReadOnlyCollection<KeyValuePair<string,
206212
var outputFiles = Directory.GetFiles(outputDirectory.TempDirectoryFullName, searchPattern);
207213
foreach (var outputFile in outputFiles)
208214
{
215+
#if NETSTANDARD2_0
216+
var bytes = File.ReadAllBytes(outputFile);
217+
await Task.CompletedTask;
218+
#else
209219
var bytes = await File.ReadAllBytesAsync(outputFile);
220+
#endif
210221
var fileName = Path.GetFileName(outputFile);
211-
outputFileBytes.Add(KeyValuePair.Create(fileName, bytes));
222+
outputFileBytes.Add(new KeyValuePair<string, byte[]>(fileName, bytes));
212223
}
213224
}
214225

215-
return new PDFtkResult<IReadOnlyCollection<KeyValuePair<string, byte[]>>>(executeProcessResult, outputFileBytes.AsReadOnly());
226+
return new PDFtkResult<IReadOnlyCollection<KeyValuePair<string, byte[]>>>(executeProcessResult,
227+
outputFileBytes.AsReadOnly());
216228
}
217229

218230
/// <inheritdoc/>
@@ -272,10 +284,11 @@ public async Task<IPDFtkResult<IReadOnlyCollection<KeyValuePair<string, byte[]>>
272284

273285
return await ResolveSingleDirectoryExecutionResultAsync(executeProcessResult, outputDirectory, "*");
274286
}
275-
276-
287+
288+
277289
/// <inheritdoc/>
278-
public async Task<IPDFtkResult<byte[]>> AttachFiles(string pdfFilePath, IEnumerable<string> files, int? page = null)
290+
public async Task<IPDFtkResult<byte[]>> AttachFiles(string pdfFilePath, IEnumerable<string> files,
291+
int? page = null)
279292
{
280293
using var outputFile = TempPDFtkFile.Create();
281294
var args = new List<string>(7)
@@ -290,7 +303,7 @@ public async Task<IPDFtkResult<byte[]>> AttachFiles(string pdfFilePath, IEnumera
290303
args.Add("to_page");
291304
args.Add(p.ToString());
292305
}
293-
306+
294307
args.Add("output");
295308
args.Add(outputFile.TempFileName);
296309
var executeProcessResult = await _pdftkProcess.ExecuteAsync(args.ToArray());

src/Kevsoft.PDFtk/PDFtkProcess.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ internal async Task<ExecutionResult> ExecuteAsync(params string[] args)
3232
var standardOutput = await GetAllStreamAsync(process.StandardOutput);
3333
var standardError = await GetAllStreamAsync(process.StandardError);
3434

35-
#if NETSTANDARD2_1
35+
#if NETSTANDARD2_1 || NETSTANDARD2_0
3636
process.WaitForExit();
3737
#else
3838
await process.WaitForExitAsync();

src/Kevsoft.PDFtk/TempPDFtkFile.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,17 @@ public static async Task<TempPDFtkFile> FromAsync(byte[] pdfFileBytes)
1818
var tempPdFtkFile = new TempPDFtkFile();
1919
if (pdfFileBytes is not null)
2020
{
21+
#if NETSTANDARD2_0
22+
File.WriteAllBytes(tempPdFtkFile.TempFileName, pdfFileBytes);
23+
await Task.CompletedTask;
24+
#else
2125
await File.WriteAllBytesAsync(tempPdFtkFile.TempFileName, pdfFileBytes);
26+
#endif
2227
}
2328

2429
return tempPdFtkFile;
2530
}
26-
31+
2732
public static TempPDFtkFile Create()
2833
{
2934
return new();
@@ -33,8 +38,11 @@ public static async Task<TempPDFtkFile> FromAsync(Stream stream)
3338
{
3439
var tempPdFtkFile = new TempPDFtkFile();
3540

41+
#if NETSTANDARD2_0
42+
using var openWrite = File.OpenWrite(tempPdFtkFile.TempFileName);
43+
#else
3644
await using var openWrite = File.OpenWrite(tempPdFtkFile.TempFileName);
37-
45+
#endif
3846
await stream.CopyToAsync(openWrite);
3947

4048
return tempPdFtkFile;

src/Kevsoft.PDFtk/TempPDFtkFiles.cs

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,19 @@ public void Dispose()
2424
public static async Task<TempPDFtkFiles> FromAsync(IEnumerable<KeyValuePair<string, byte[]>> attachments)
2525
{
2626
var tempPdFtkFiles = new TempPDFtkFiles();
27-
foreach (var (fileName, content) in attachments)
27+
foreach (var kvp in attachments)
2828
{
29-
await File.WriteAllBytesAsync(Path.Combine(tempPdFtkFiles._directory.TempDirectoryFullName, fileName),
29+
var fileName = kvp.Key;
30+
var content = kvp.Value;
31+
32+
#if NETSTANDARD2_0
33+
File.WriteAllBytes(Path.Combine(tempPdFtkFiles._directory.TempDirectoryFullName, fileName),
34+
content);
35+
await Task.CompletedTask;
36+
#else
37+
await File.WriteAllBytesAsync(Path.Combine(tempPdFtkFiles._directory.TempDirectoryFullName, fileName),
3038
content);
39+
#endif
3140
}
3241

3342
return tempPdFtkFiles;
@@ -36,10 +45,19 @@ await File.WriteAllBytesAsync(Path.Combine(tempPdFtkFiles._directory.TempDirecto
3645
public static async Task<TempPDFtkFiles> FromAsync(IEnumerable<KeyValuePair<string, Stream>> attachments)
3746
{
3847
var tempPdFtkFiles = new TempPDFtkFiles();
39-
foreach (var (fileName, stream) in attachments)
48+
foreach (var kvp in attachments)
4049
{
41-
await using var openWrite =
50+
var fileName = kvp.Key;
51+
var stream = kvp.Value;
52+
53+
#if NETSTANDARD2_0
54+
using var openWrite =
55+
File.OpenWrite(Path.Combine(tempPdFtkFiles._directory.TempDirectoryFullName, fileName));
56+
57+
#else
58+
await using var openWrite =
4259
File.OpenWrite(Path.Combine(tempPdFtkFiles._directory.TempDirectoryFullName, fileName));
60+
#endif
4361

4462
await stream.CopyToAsync(openWrite);
4563
}

src/Kevsoft.PDFtk/XfdfGenerator.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ internal async Task<TempPDFtkFile> CreateXfdfFile(IReadOnlyDictionary<string, st
1515
Async = true
1616
};
1717

18-
#if NETSTANDARD2_1
18+
#if NETSTANDARD2_1 || NETSTANDARD2_0
1919
using var xmlWriter =
2020
XmlWriter.Create(inputFile.TempFileName, xmlWriterSettings);
2121
#else
@@ -48,9 +48,9 @@ private static async Task WriteFieldsElement(XmlWriter xmlWriter, IReadOnlyDicti
4848
{
4949
await xmlWriter.WriteStartElementAsync(null, "fields", null);
5050

51-
foreach (var (key, value) in fieldData)
51+
foreach (var kvp in fieldData)
5252
{
53-
await WriteField(xmlWriter, key, value);
53+
await WriteField(xmlWriter, kvp.Key, kvp.Value);
5454
}
5555

5656
await xmlWriter.WriteEndElementAsync();

0 commit comments

Comments
 (0)