Geef een PDF weer met VB.NET

PDF-bestanden hebben een interne documentindeling die een softwareobject vereist dat de indeling "begrijpt". Aangezien velen van u de functies van Office in uw VB-code hebben gebruikt, laten we Microsoft Word even bekijken als een voorbeeld van het verwerken van een opgemaakt document om er zeker van te zijn dat we het concept begrijpen. Als u met een Word-document wilt werken, moet u een referentie toevoegen aan de Microsoft Word 12.0-objectbibliotheek (voor Word 2007) en vervolgens het Word-toepassingsobject in uw code instantiëren.

 Dim myWord As Microsoft.Office.Interop.Word.ApplicationClass
'Start Word en open het document.
myWord = CreateObject ("Word.Application")
myWord.Visible = Waar
myWord.Documents.Open ( "C: \ myWordDocument.docx")

("" moet worden vervangen door het daadwerkelijke pad naar het document om deze code op uw pc te laten werken.)

Microsoft gebruikt de Word-objectbibliotheek om andere methoden en eigenschappen voor uw gebruik aan te bieden. Lees het artikel COM -.NET-interoperabiliteit in Visual Basic voor meer informatie over Office COM-interop.

Maar PDF-bestanden zijn geen Microsoft-technologie. PDF - Portable Document Format - is een bestandsindeling die door Adobe Systems is gemaakt voor documentuitwisseling. Jarenlang was het volledig eigendom en moest je software kopen die een PDF-bestand van Adobe kon verwerken. Op 1 juli 2008 werd PDF afgerond als een gepubliceerde internationale norm. Nu mag iedereen toepassingen maken die PDF-bestanden kunnen lezen en schrijven zonder royalty's te betalen aan Adobe Systems. Als u van plan bent uw software te verkopen, moet u mogelijk nog steeds een licentie krijgen, maar Adobe biedt deze royalty-free aan. (Microsoft heeft een ander formaat gemaakt met de naam XPS dat is gebaseerd op XML. Adobe's PDF-formaat is gebaseerd op Postscript. XPS is op 16 juni 2009 een gepubliceerde internationale standaard geworden.)

Het gebruik van PDF

Omdat het PDF-formaat een concurrent is van de technologie van Microsoft, bieden ze niet veel ondersteuning en moet u een softwareobject aanschaffen dat het PDF-formaat op dit moment van iemand anders dan Microsoft "begrijpt". Adobe geeft de gunst terug. Ze ondersteunen Microsoft-technologie ook niet zo goed. Onder verwijzing naar de nieuwste (oktober 2009) Adobe Acrobat 9.1-documentatie: "Er is momenteel geen ondersteuning voor de ontwikkeling van plug-ins met beheerde talen zoals C # of VB.NET." (Een "plug-in" is een on-demand softwarecomponent. Adobe's plug-in wordt gebruikt om PDF's in een browser weer te geven. ")

Aangezien PDF een standaard is, hebben verschillende bedrijven software voor verkoop ontwikkeld die u aan uw project kunt toevoegen en die het werk zal doen, waaronder Adobe. Er zijn ook een aantal open-source systemen beschikbaar. Je zou ook de Word (of Visio) objectbibliotheken kunnen gebruiken om PDF-bestanden te lezen en te schrijven, maar het gebruik van deze grote systemen voor dit ene ding vereist extra programmering, heeft ook licentieproblemen en maakt je programma groter dan het moet zijn.

Net zoals u Office moet kopen voordat u kunt profiteren van Word, moet u ook de volledige versie van Acrobat kopen voordat u kunt profiteren van meer dan alleen de Reader. U zou het volledige Acrobat-product op ongeveer dezelfde manier gebruiken als andere objectbibliotheken, zoals Word 2007 hierboven. Ik heb toevallig niet het volledige Acrobat-product geïnstalleerd, dus ik kon hier geen geteste voorbeelden geven.

Hoe

Maar als u alleen PDF-bestanden in uw programma moet weergeven, biedt Adobe een ActiveX COM-besturingselement dat u kunt toevoegen aan de VB.NET Toolbox. Het zal het werk gratis doen. Het is dezelfde die u waarschijnlijk toch gebruikt om PDF-bestanden weer te geven: de gratis Adobe Acrobat PDF Reader.

Om de Reader-besturing te gebruiken, moet u eerst controleren of u de gratis Acrobat Reader van Adobe hebt gedownload en geïnstalleerd.

Stap 2 is om het besturingselement toe te voegen aan de VB.NET Toolbox. Open VB.NET en start een standaard Windows-toepassing. (Microsofts "volgende generatie" presentatie, WPF, werkt nog niet met dit besturingselement. Sorry!) Klik hiervoor met de rechtermuisknop op een tabblad (zoals "Algemene besturingselementen") en selecteer "Items kiezen ..." uit de contextmenu dat verschijnt. Selecteer het tabblad "COM-componenten" en schakel het selectievakje naast "Adobe PDF Reader" in en klik op OK. U zou naar beneden moeten kunnen scrollen naar het tabblad "Besturing" in de Werkset en daar de "Adobe PDF Reader" kunnen zien.

Sleep nu het besturingselement naar uw Windows-formulier in het ontwerpvenster en pas het formaat aan. Voor dit snelle voorbeeld ga ik geen andere logica toevoegen, maar de besturing heeft veel flexibiliteit waarover ik u later meer zal vertellen. Voor dit voorbeeld ga ik gewoon een eenvoudige PDF laden die ik heb gemaakt in Word 2007. Om dit te doen, voeg je deze code toe aan het formulier Evenementprocedure laden:

 Console.WriteLine (AxAcroPDF1.LoadFile (_
   "C: \ Users \ Temp \ SamplePDF.pdf"))

Vervang het pad en de bestandsnaam van een PDF-bestand op uw eigen computer om deze code uit te voeren. Ik gaf het resultaat van de oproep alleen weer in de uitvoervensters om te laten zien hoe dat werkt. Hier is het resultaat:

--------
Klik hier om de illustratie weer te geven
Klik op de knop Terug in uw browser om terug te keren
--------

Als u de Reader wilt besturen, zijn er ook methoden en eigenschappen in het besturingselement. Maar de goede mensen bij Adobe hebben het beter gedaan dan ik kon. Download de Adobe Acrobat SDK via hun ontwikkelaarscentrum (http://www.adobe.com/devnet/acrobat/). Het AcrobatActiveXVB-programma in de VBSamples-map van de SDK laat u zien hoe u in een document kunt navigeren, de versienummers van de Adobe-software die u gebruikt, kunt krijgen en nog veel meer. Als u niet het volledige Acrobat-systeem hebt geïnstalleerd - dat moet worden gekocht bij Adobe - kunt u geen andere voorbeelden uitvoeren.