Adobe PDF-(Portable Document Format) bestanden maken met een applicatie geschreven in de programmeertaal C kan potentieel betrekking hebben vele uren van het ontcijferen van Adobes documentatie. Maar, ten minste één open source (gratis)-project heeft gedaan dat werk al voor de productie van een bibliotheek waarmee uw C-programma's koppelen kunnen om PDF-bestanden te maken.
Wat die u nodig hebt
- Microsoft Visual C++, Express (of volledig) editie
- Haru PDF bibliotheek van libharu.org
- Zlib DLL bestand (een afhankelijkheid van de Haru-bibliotheek) van zlib.net
Download de gratis PDF-bibliotheek van Haru van Libharu.org. Selecteer de libharu-
-vc6.zip bestand om te downloaden, die onder de \"Windows Binaries\" rubriek. Download een afhankelijkheid van de Haru-bibliotheek, de Zlib, via de Zlib-koppeling in de sectie van de bronnen van dit artikel. Maak een nieuwe Visual C ++ Windows32 Console Application.
Voer \"pdfmkr\" voor de naam en de \"C:\Users\van het project \Desktop\pdfmkr\" voor de locatie. De \"Create directory\ niet aanvinken" checkbox. De bibliotheekbestanden installeren: unzip de bestanden van het libharu-2.1.0-vc6.zip en zlib123-dll.zip naar de standaardlocaties toegewezen door uw unzipping toepassing.
Kopieer de bestanden libhpdf.lib en libhpdf.exp van de lib submap van de uitgepakte libharu zip-bestand, te C:\Users\
\Desktop\pdfmkr\pdfmkr. Kopieer de bestanden zdll.lib, zdll.exp en zdll.def vanuit de uitgepakte Zlib lib submap aan dezelfde doelmap waarnaar wordt verwezen in stap 3. Ook de zlib1.dll bestand vanaf de hoofdmap (niet de lib submap) van de uitgepakte map van Zlib, naar stap 3 de doelmap te kopiëren.
Kopieer de headerbestanden naar waar de Visual C++ compiler ze kan vinden: Kopieer alle koptekst (bestandsextensie * .h) bestanden van de libharu-\"include\" submap, naar dezelfde map uit stap 3. Kopieer alle Zlib headerbestanden uit de Zlib-\"include\" submap, naar stap 3 de doelmap.
Verwijzingen naar de lib bestanden die u zojuist hebt gekopieerd zodat de linker Visual C++ hen zien kunt maken: Selecteer in de Visual C++ IDE, \"View>Property Manager. \" In the Property Manager venster, klik met de rechtermuisknop \"pdfmkr\" en selecteer \"Properties.\" bloot de \"Linker>Input\" knooppunt door te klikken op \"Configuration eigenschappen, \" dan \"Linker.\" In de \"Additional Dependencies\" rij, de namen opgeven van de bibliotheekbestanden die u zojuist hebt gekopieerd : \"zdll.lib\" en \"libhpdf.lib\" (maar niet het dll-bestand).
Plak de volgende broncode in het codevenster van de Visual C++:
//////////////////////////////////////////////
\"stdafx.h\ omvatten" omvattenomvatten omvatten omvatten omvatten \"hpdf.h\" jmp_buf env
ifdef HPDF_DLL
GAANVOID __stdcall
andersongeldig
endifcbHandleErr (HPDF_STATUS errNum,
HPDF_STATUS detail_num,void *userinfo)
{
printf (\"ERROR: errNum=%04X, detail_num=%u\\n\", (HPDF_UINT)errNum,(HPDF_UINT)detail_num)
GAAN
longjmp(env, 1)
GAAN
}const char fname [] = \"myPDF.PDF\"
GAANint main (int argc, char ** argv)
{HPDF_Doc objPDF
GAAN
HPDF_Page pdfPage
GAAN
HPDF_Font font
GAAN
HPDF_REAL pageHeight
GAAN
objPDF = HPDF_New (cbHandleErr, NULL)
GAAN
if (!objPDF) {printf (\"Can't create PdfDoc object\\n\")
GAAN
return 1
GAAN
} if (setjmp(env)) {HPDF_Free (objPDF)
GAAN
return 1
GAAN
} /* Create pdfPage */pdfPage = HPDF_AddPage (objPDF)
GAAN
pageHeight = HPDF_Page_GetHeight (pdfPage)
GAAN/* Put some text on pdfPage */
lettertype = HPDF_GetFont (objPDF, \"Times-Roman\", NULL)
GAANHPDF_Page_SetFontAndSize (pdfPage, font, 24)
GAAN
HPDF_Page_BeginText (pdfPage)
GAAN
HPDF_Page_TextOut (pdfPage, 20, pageHeight-75, \"My eerste PDF\"); JaHPDF_Page_EndText (pdfPage)
GAAN
HPDF_SaveToFile (objPDF, fname)
GAAN
HPDF_Free (objPDF)
GAAN
return 0
GAAN
}//////////////////////////////////////////////
Druk op F5 om te compileren en uitvoeren van het programma. Kijk voor het uitvoerbestand, myPDF.PDF, in de map waarnaar wordt verwezen in stap 3.
- Installeer alle lib en *.h bestanden uit de Zlib en libhpdf zip-bestanden naar de map met het project stdafx.h headerbestand voor stap 3. Dat is waar Visual C++ zoekt omvatten en bibliotheek bestanden bij het bouwen van een app in debug/ontwikkeling modus. Als er geen stdafx.h in de map vermeld in stap 3, kunt u Windows Verkenner gebruiken om te zoeken naar het.