Как экспортировать страницу PDF как изображение с помощью PDFsharp библиотека.NET для пиксельного управления уровнем?
Например, что-то как, Система. Рисование. BitMap. GetPixel ()
Я пытаюсь узнать пустую область (полностью белый, или любого цвета) в документе в формате PDF, записать некоторую графику / изображение.
09, июнь 2010:
Я попробовал это, но это не работает.
Почему следующий код не работает как ожидалось?
Битовый массив. GetPixel всегда возвращается 0.
//
// PdfSharp.Pdf.PdfDocument
// PdfSharp.Pdf.PdfPage
// PdfSharp.Drawing.XGraphics
// System.Drawing.Bitmap
//
string srcPDF = @"C:\hcr\test\tmp\file1.pdf";
PdfDocument pdfd = PdfReader.Open(srcPDF);
XGraphics xgfx = XGraphics.FromPdfPage(pdfd.Pages[0]);
Bitmap b = new Bitmap((int) pdfp.Width.Point, (int) pdfp.Height.Point, xgfx.Graphics);
int rgb = b.GetPixel(0, 0).ToArgb();
Ответ можно найти в списке часто задаваемых вопросов по PDFsharp: http://www.pdfsharp.net/wiki/PDFsharpFAQ.ashx#Can_PDFsharp_show_PDF_files_Print_PDF_files_Create_images_from_PDF_files_3
PDFsharp создает PDF-файлы, но не может их рендерить.
Вызов
Bitmap b = new Bitmap((int) pdfp.Width.Point, (int) pdfp.Height.Point, xgfx.Graphics);
не инициализирует ни одного бита растрового изображения и не копирует ничего из объекта Graphics, кроме настройки DPI объекта Graphics. Графические объекты рисуют вещи, но они не помнят, что они нарисовали, и они не могут повторно создать рисунки в вызове new Bitmap(...)
. Это не работает с классом Graphics от Microsoft, это не работает и с классом XGraphics от PDFsharp.
Класс XGraphics из PDFsharp может использоваться для рисования на страницах PDF, он может использоваться для рисования на растровых картах, на принтере или на экране - он может рисовать на страницах PDF и на любом DC, который вы можете получить из Windows. То же самое относится и к MigraDoc.
Итак, если вы хотите создавать PDF-файлы и растровые изображения с одинаковым содержимым, PDFsharp и MigraDoc могут помочь.
Но PDFsharp не предоставляет никакого способа рендеринга PDF-страницы в растровую карту.