У меня есть 2 строки HTML, которые должны быть напечатаны вместе в одном файле PDF.Я попытался добавить новый ObjectSettings в свойстве Objects документа HtmlToPdfDocument, но по какой-то причине я не могу заставить его работать.
В этом собственном примере отображается только второй объект, и он создает 2 страницы с первой пустой страницей (я предполагаю, что это должен быть первый объект, который не отображается).
У кого-нибудь есть идеи или решения для этого случая?
var document = new HtmlToPdfDocument
{
GlobalSettings =
{
ProduceOutline = true,
DocumentTitle = "Report",
PaperSize = PaperKind.A4,
Orientation = TuesPechkin.GlobalSettings.PaperOrientation.Portrait,
Margins =
{
// All = 1.375,
Top = 1.375,
Right = 1.375,
Bottom = 1.6,
Left = 1.375,
Unit = Unit.Centimeters,
}
},
Objects =
{
new ObjectSettings
{
HtmlText = printHtmlContent,
FooterSettings =
new FooterSettings
{
HtmlUrl = footerUrl,
},
},
new ObjectSettings
{
HtmlText = "<h1>Pretty Websites</h1>",
FooterSettings =
new FooterSettings
{
HtmlUrl = footerUrl,
},
CountPages = false
}
}
};
var converter = Factory.Create();
var result = converter.Convert(document);
Решено!
Похоже, что если вы добавите больше ObjectSettings,рендер будет только последний.В качестве решения для этого случая я использовал функцию, которую я также нашел в стеке, которая объединяет 2 PDF-файла, как брелок.
public static byte[] MergePdf(List<byte[]> pdfs)
{
List<PdfSharp.Pdf.PdfDocument> lstDocuments = new List<PdfSharp.Pdf.PdfDocument>();
foreach (var pdf in pdfs)
{
lstDocuments.Add(PdfSharp.Pdf.IO.PdfReader.Open(new MemoryStream(pdf), PdfDocumentOpenMode.Import));
}
using (PdfSharp.Pdf.PdfDocument outPdf = new PdfSharp.Pdf.PdfDocument())
{
for (int i = 1; i <= lstDocuments.Count; i++)
{
foreach (PdfSharp.Pdf.PdfPage page in lstDocuments[i - 1].Pages)
{
outPdf.AddPage(page);
}
}
MemoryStream stream = new MemoryStream();
outPdf.Save(stream, false);
byte[] bytes = stream.ToArray();
return bytes;
}
}