Я пытаюсь создать счет-фактуру из своего кода. Внизу страницы счет-фактура должен содержать квитанцию об оплате.
Я нашел какую-то стороннюю библиотеку (не связанную с PDFsharp), которая создает PDF-файл с квитанцией об оплате внизу страницы в виде массива байтов. Теперь я пытаюсь загрузить этот PDF-файл с помощью PDFsharp и использовать MigraDoc для отображения остальной части счета на той же странице.
Это мой код:
byte[] paymentSlipPdfBytes = GeneratePaymentSlipPdf(); // payment slip generated by some other library
using (MemoryStream ms = new MemoryStream(paymentSlipPdfBytes))
using (PdfDocument pdfDoc = PdfReader.Open(ms, PdfDocumentOpenMode.Modify))
using (XGraphics graphics = XGraphics.FromPdfPage(pdfDoc.Pages[0]))
{
Document invoiceDoc = GenerateInvoiceDocument(); // other content of the invoice generated using MigraDoc
DocumentRenderer docRenderer = new DocumentRenderer(invoiceDoc);
docRenderer.PrepareDocument();
docRenderer.RenderPage(graphics, 1, PageRenderOptions.All); // trying to render MigraDoc content on the page imported from other library
pdfDoc.Save("Invoice.pdf");
}
Полученный PDF-файл содержит только квитанцию об оплате, но я не вижу ничего, отображаемого из документа MigraDoc.
Интересно, что когда я добавляю вторую страницу в pdfDoc
и визуализирую документ MigraDoc на этой второй странице, все работает нормально. Только когда я отрисовываю страницу, которая уже содержит квитанцию об оплате, я не вижу содержимое MigraDoc.
Может ли быть так, что содержимое MigraDoc отображается «за» существующим содержимым (платежным чеком) на этой странице, поэтому оно перекрывается? Как решить эту проблему?
XGraphicsPdfPageOptions.Prepend
при создании объекта XGraphics действительно помогла (см. мой собственный ответ ниже). - person Robert Hegner   schedule 30.01.2020