Рендеринг страницы MigraDo c на импортированной странице PDFsharp не работает - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь сгенерировать счет из моего кода. В нижней части страницы счет-фактура должна содержать квитанцию ​​об оплате.

Я нашел какую-то стороннюю библиотеку (не связанную с PDFsharp), которая генерирует PDF с бланком платежа в нижней части страницы в виде байта. массив. Теперь я пытаюсь загрузить этот PDF-файл с помощью PDFsharp и использовать MigraDo c для визуализации остальной части счета на той же странице.

Это мой код:

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-файл содержит только квитанцию ​​об оплате, но я не вижу ничего отрисованного из документа MigraDo c.

Интересно, когда я добавляю вторую страницу к pdfDoc и отображаю MigraDo c документ на эту вторую страницу, он отлично работает. Только когда я выполняю рендеринг на страницу, которая уже содержит платежную квитанцию, я не вижу контент MigraDo c.

Может ли быть так, что контент MigraDo c визуализируется «позади» существующего контента (квитанция об оплате) на этой странице, так что это будет закрыто? Как решить эту проблему?

1 Ответ

0 голосов
/ 30 января 2020

Я нашел решение. В строке 4, где я создаю объект XGraphics из импортированной страницы PDF, мне нужно сделать

XGraphics.FromPdfPage(pdfDoc.Pages[0], XGraphicsPdfPageOptions.Prepend)

вместо

XGraphics.FromPdfPage(pdfDoc.Pages[0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...