Я использую свойство Stream класса PdfPage для рисования страницы. Однако отображается ошибка нулевой ссылки, поскольку поток пуст.
Я не мог понять почему, ведь PDF-файл существует и путь правильный.
ниже приведен код:
Код: Выделить всё
`public static void PrintPdfWithPrintDocument(string pdfPath)
{
if (!System.IO.File.Exists(pdfPath))
{
MessageBox.Show("Not Found.");
return;
}
pdfDoc = Pdf.IO.PdfReader.Open(pdfPath, Pdf.IO.PdfDocumentOpenMode.Modify);
CurrentPage = 0;
PrintDocument prnPdf = new PrintDocument();
prnPdf.PrintPage += OnPrintPage;
PrintDialog ptdPrinter = new PrintDialog();
ptdPrinter.AllowSomePages = true;
ptdPrinter.Document = prnPdf;
if (ptdPrinter.ShowDialog() == DialogResult.OK)
{
prnPdf.PrinterSettings = ptdPrinter.PrinterSettings;
prnPdf.Print();
}
}
private static void OnPrintPage(object sender, PrintPageEventArgs e)
{
if (CurrentPage < pdfDoc.PageCount)
{
pdfPage = pdfDoc.Pages(CurrentPage);
pdfGraphics = XGraphics.FromPdfPage(pdfPage, XGraphicsUnit.Millimeter);
pdfGraphics.MUH = Pdf.PdfFontEncoding.Unicode;
PdfSharp.Pdf.PdfDictionary.PdfStream pdfStream = (PdfSharp.Pdf.PdfDictionary.PdfStream)pdfPage.Stream;
MemoryStream imageStream = new MemoryStream(pdfStream.Value);
XRect xRect = new XRect(0, 0, e.PageBounds.Width, e.PageBounds.Height);
pdfGraphics.DrawImage(XImage.FromStream(imageStream), xRect);
CurrentPage += 1;
e.HasMorePages = CurrentPage < pdfDoc.PageCount;
}
else
e.HasMorePages = false;
}`
Я Я пытался найти другие способы получить байт со страницы, но не нашел.
Подробнее здесь: https://stackoverflow.com/questions/787 ... g-pdfsharp