如何为列表中找到的每个不同名称保存 PDF-document?
How can I save a PDF-document for each distinct name found in a list?
使用 PDFSharp,我想 为我正在循环的 List
的 属性 中的每个不同值创建一个 PDF-document .
将我的 collection 分组,并创建 List
:
var listName = collectionName
.GroupBy(p => new { p.propertyName })
.ToList();
尝试为 listName
中的每个 propertyName
执行我的 PDFsharp-code:
foreach (var trip in paidTrip) {
// Getting just the name string from the specific propertyName key
string[] remove = { "{", "}", "propertyName", "=" };
string pnString = trip.Key.ToString();
foreach (string item in remove) {
pnString = pnString.Replace(item, string.Empty);
}
这就是我认为我丢球的地方;我怎样才能把每个名字都带到他们不同的PDF-document?我错过了那个连接。
所以,在此之下,我开始创建我的 PDF-document(s):
// Continued
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
PdfDocument doc = new();
PdfPage page = doc.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
// Adding fonts and brushes...
// Adding some text, to check If I am able to grab the names of propertyName (which I am - but jut the first, once)...
gfx.DrawString(pnString, new XFont("Arial", 40, XFontStyle.Bold), myGreen, new XPoint(5, 250));
// And then, saving the PDF-document
doc.Save("C:\My\File\Path\Test.pdf");
但正如我所说,这只会为找到的名字保存一个 PDF。
我相信它正在尝试为找到的每个名称保存一个文件,但它不能,因为已经使用指定的文件名创建了该文件。
所以我的问题是:如何确保在创建 PDF 时将 foreach 循环中找到的每个名称都带到我那里,并为每个保存一个 PDF-document他们?
将您的代码放入 foreach 循环中 :) PPAPed:
foreach (var trip in paidTrip) {
// Getting just the name string from the specific propertyName key
string[] remove = { "{", "}", "propertyName", "=" };
string pnString = trip.Key.ToString();
foreach (string item in remove) {
pnString = pnString.Replace(item, string.Empty);
}
// Continued
// [..] the rest of the code here
}
在保存文件的最后,您需要将文件名更改为列表中的密钥,如下所示:
// And then, saving the PDF-document
doc.Save($"C:\My\File\Path\{pnString}.pdf");
这将为您之前执行 GroupBy
的每个不同 propertyName
键保存一个单独的文件。
使用 PDFSharp,我想 为我正在循环的 List
的 属性 中的每个不同值创建一个 PDF-document .
将我的 collection 分组,并创建 List
:
var listName = collectionName
.GroupBy(p => new { p.propertyName })
.ToList();
尝试为 listName
中的每个 propertyName
执行我的 PDFsharp-code:
foreach (var trip in paidTrip) {
// Getting just the name string from the specific propertyName key
string[] remove = { "{", "}", "propertyName", "=" };
string pnString = trip.Key.ToString();
foreach (string item in remove) {
pnString = pnString.Replace(item, string.Empty);
}
这就是我认为我丢球的地方;我怎样才能把每个名字都带到他们不同的PDF-document?我错过了那个连接。 所以,在此之下,我开始创建我的 PDF-document(s):
// Continued
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
PdfDocument doc = new();
PdfPage page = doc.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
// Adding fonts and brushes...
// Adding some text, to check If I am able to grab the names of propertyName (which I am - but jut the first, once)...
gfx.DrawString(pnString, new XFont("Arial", 40, XFontStyle.Bold), myGreen, new XPoint(5, 250));
// And then, saving the PDF-document
doc.Save("C:\My\File\Path\Test.pdf");
但正如我所说,这只会为找到的名字保存一个 PDF。 我相信它正在尝试为找到的每个名称保存一个文件,但它不能,因为已经使用指定的文件名创建了该文件。
所以我的问题是:如何确保在创建 PDF 时将 foreach 循环中找到的每个名称都带到我那里,并为每个保存一个 PDF-document他们?
将您的代码放入 foreach 循环中 :) PPAPed:
foreach (var trip in paidTrip) {
// Getting just the name string from the specific propertyName key
string[] remove = { "{", "}", "propertyName", "=" };
string pnString = trip.Key.ToString();
foreach (string item in remove) {
pnString = pnString.Replace(item, string.Empty);
}
// Continued
// [..] the rest of the code here
}
在保存文件的最后,您需要将文件名更改为列表中的密钥,如下所示:
// And then, saving the PDF-document
doc.Save($"C:\My\File\Path\{pnString}.pdf");
这将为您之前执行 GroupBy
的每个不同 propertyName
键保存一个单独的文件。