2010-06-08 4 views
19

Come esportare una pagina PDF come immagine utilizzando la libreria PDF di PDFsharp, per la manipolazione dei pixel?Come esportare la pagina PDF come immagine utilizzando la libreria .NET di PDFsharp?

Per esempio, qualcosa di simile, System.Drawing.BitMap.GetPixel()

sto cercando di scoprire un'area vuota (tutto bianco, o di qualsiasi colore) all'interno di un documento PDF, di scrivere alcuni elementi grafici/Immagine.

09, giugno 2010:

Ho provato questo, ma non funziona.

Perché il codice seguente non funziona come previsto?

Bitmap.GetPixel restituisce sempre 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(); 
+0

Potrebbe essere che 'xgfx.Graphics' è sempre' null'? La descrizione per il metodo 'new Bitmap (int, int, Graphics)': "Inizializza una nuova istanza della classe Bitmap con la dimensione specificata e con la risoluzione dell'oggetto Graphics specificato." Non c'è da stupirsi che tutti i pixel restituiscano 0 in quanto questa funzione non (e non può) copiare alcun pixel dall'oggetto Graphics. –

risposta

17

La risposta può essere trovata nella lista FAQ PDFsharp: http://www.pdfsharp.net/wiki/PDFsharpFAQ.ashx#Can_PDFsharp_show_PDF_files_Print_PDF_files_Create_images_from_PDF_files_3

PDFsharp crea file PDF, ma non li può rendere.

La chiamata

Bitmap b = new Bitmap((int) pdfp.Width.Point, (int) pdfp.Height.Point, xgfx.Graphics); 

non inizializza qualsiasi bit della bitmap e non copiare nulla da Graphics oggetto tranne che per l'impostazione DPI dell'oggetto Graphics. Gli oggetti grafici disegnano cose, ma non ricordano ciò che hanno disegnato e non possono ricreare i disegni in una chiamata a new Bitmap(...). Questo non funziona con la classe Graphics di Microsoft, anche questo non funziona con la classe XGraphics di PDFsharp.

La classe XGraphics di PDFsharp può essere utilizzata per disegnare su pagine PDF e può essere utilizzata per disegnare su bitmap, su una stampante o sullo schermo - può disegnare su pagine PDF e su qualsiasi DC è possibile ottenere da Finestre. Lo stesso vale per MigraDoc.
Quindi, se si desidera creare file PDF e bitmap con gli stessi contenuti, PDFsharp e MigraDoc possono essere d'aiuto.

Ma PDFsharp non fornisce alcun modo per eseguire il rendering di una pagina PDF in una bitmap.

+0

Non capisco, mentre scrivo su System.Drawing.Graphics è possibile, leggendo i pixel da esso resi intenzionalmente impossibili. Per me, creare oggetti Bitmap da Graphics sembra un requisito ragionevole. :( –

+11

Scrivi: "lettura dei pixel da esso intenzionalmente impossibile" Non è vero: non lo rendiamo impossibile PDF è un formato vettoriale Come si leggono i pixel da un formato vettoriale? È possibile eseguire il rendering PDF a un bitmap e leggere i pixel da questo, ma PDFsharp non esegue il rendering dei bitmap –

+0

Questo può essere eseguito tramite MigraDoc? http://www.pdfsharp.net/wiki/documentviewer-sample.ashx –