2009-07-10 1 views
4

Ich bin auf der Suche nach einer Möglichkeit zum Generieren von PDF-Dateien mit den Standard-PrintDocument und Graphics (GDI) -Klassen in .NET. Soweit ich weiß, ist der einzige Weg, dies zu tun, durch Drucken auf einen PDF-Drucker.Generieren von PDF-Dateien aus .NET mit Standard-.NET-GDI-Druckklassen

Das Problem ist, dass ein PDF-Druckertreiber immer nach einem Dateinamen fragt, aber ich muss den Dateinamen aus meinem Code steuern. Die Verwendung einer PDF-Bibliothek wie PDFSharp oder DynamicPDF ist keine Option, da sie alle ihre eigene API zum Generieren von PDF-Dateien bereitstellen.

Ich brauche dies für eine interne Anwendung, so dass Abhängigkeiten kein Problem sind.

Meine Frage ist einfach: Gibt es eine Möglichkeit, einen Druckertreiber (Adobe Acrobat, PDFCreator, ...) so zu steuern, dass ein Dateiname angegeben werden kann und der Benutzer nichts aufgefordert wird?

Antwort

0

Hat etwas mehr Forschung, und obwohl ich immer noch nicht eine perfekte Lösung gefunden haben, gibt es einige Produkte, die einen PDF-Druckertreiber installieren und die Ihnen erlauben, in eine Möglichkeit, den Namen der Datei zu steuern, erzeugt werden:

Bullzip und PDFCreator sind kostenlos.

UPDATE: eine andere gefunden, die sehr vielversprechend aussieht:

0

Sofern die Druckertreiber, die Sie verwenden, dies manuell unterstützen (von denen keine existieren, die ich kenne), müssten Sie Ihren eigenen Druckertreiber schreiben, dem Sie Informationen übergeben könnten (wie den Dateinamen) während des Druckvorgangs.

Die Nachteile sind die Tatsache, dass Sie einen Druckertreiber implementieren müssten, sowie die Tatsache, dass es nicht verwalteten Code sein müsste (Sie können Treiber in .NET nicht schreiben).

+0

Vor ein paar Jahren las ich etwas über eine spezielle Steuercodes in dem gedruckten Dokument einbetten, die Adobe Acrobat (Distiller) erkannte den Dateinamen festlegen der zu generierenden PDF-Datei. –

-1

Nicht sicher, ob dies eine Lösung ist, die Sie in Erwägung ziehen würden, aber ich habe iTextSharp verwendet, um PDF-Formulare auszufüllen und sie mit einem Dateinamen zu speichern, der im Code und nicht vom Benutzer generiert wird. Es kann auch komplette PDFs von Grund auf neu erstellen, aber ich habe mich noch nicht so weit damit beschäftigt.

+2

AFAIK, iTextSharp verwendet eine benutzerdefinierte API zum Generieren von PDF-Dokumenten anstelle der standardmäßigen GDI-Zeichnungsmethoden, die beim Standard-.NET-Drucken verwendet werden. Wie in meiner Frage angegeben, ist dies nicht das, was ich will –

0

Es gibt mehrere Unternehmen, die Dokumentformatkonvertierungstools erstellen. Einige von ihnen verwenden Druckertreiber, um das Dokument in das gewünschte Format zu "drucken". Suchen Sie nach Tools, mit denen Sie Word-Dokumente in PDF konvertieren können. Eines davon sollte die Art von Treibern haben, die Sie benötigen, und einige werden eine API bieten, mit der Sie Dateinamen und Ähnliches steuern können.

2

Ein Produkt namens Amyuni tut dies (ich benutze es in einem Projekt), aber ich mag die Lizenzierung nicht, Sie können damit gut auskommen.

See Amyuni.com

Ryan

+0

Ich überprüfte ihre Dokumentation, und es scheint mir, dass sie eine benutzerdefinierte API verwenden, um PDF-Dokumente anstelle der Standard-GDI-Zeichenmethoden im Standard-.NET-Drucken zu generieren. Wie in meiner Frage gesagt, das ist nicht was ich will. –

+0

Mein Fehler, ich habe den GDI-Teil Ihrer Frage verpasst. –

4

Der System.Drawing-Code für ein Printdocument wiederverwendet werden kann, eine PDF-Datei mit ABCpdf zu erzeugen.NET von webSupergoo. Weitere Informationen finden Sie unter System.Drawing example. Die Komponente verwendet keinen Druckertreiber - sie erstellt PDF direkt - daher muss kein Dateiname angegeben werden.

0

Dane-Prairie Systems http://www.win2pdf.com/ scheint die Zeichenfolge "print to file" aus den GDI-Aufrufen zu erfassen und erstellt Ihre PDF-Datei, wo immer Sie dies wünschen. Hier ist ein Zitat aus dem Handbuch:

das lpszOutput Feld der DOCINFO Struktur in den vollständig qualifizierten Pfadnamen der Datei fest, und dann die DOCINFO Struktur die Win32 StartDoc Funktion übergeben.

Peter

1

Amyuni PDF Converter tut, was Sie benötigen, ist es ein Microsoft-zertifizierten Druckertreiber, die Sie vollständig eine COM-Schnittstelle oder .NET-Assembly manipulieren verwenden, und Sie können Standard-GDI (oder Windows.Forms Klassen), um Ihre PDF-Dateien zu generieren (Sie haben wahrscheinlich Amyuni PDF Creator überprüft, eine benutzerdefinierte API, wie Sie in Ihren Kommentaren zu this answer angegeben haben).

Verwandte Themen