Come creare file PDF con C Source Code

October 25

Creazione di file Adobe PDF (Portable Document Format) con un'applicazione scritta nel linguaggio di programmazione C potrebbe potenzialmente coinvolgere molte ore di decifrare la documentazione di Adobe. Ma, almeno una (gratuito) progetto open source ha fatto quel lavoro già per produrre una libreria con la quale i programmi C possono collegarsi per creare file PDF.

istruzione

1 Scarica il Free Library PDF Haru da Libharu.org. Selezionare la libharu- <version> -vc6.zip per il download, che è sotto il \ "Windows Binaries \" voce. Scarica una dipendenza della biblioteca Haru, il Zlib, dal collegamento Zlib nella sezione Risorse di questo articolo.

2 Creare un nuovo Visual C ++ Windows32 Applicazione console.
Inserisci \ "pdfmkr \" per il nome del progetto e \ "C: \ Users \ <YourUserName> \ Desktop \ pdfmkr \" per la sua posizione. Non selezionare la casella di controllo \ "Crea directory \".

3 Installare i file di libreria: decomprimere i file libharu-2.1.0-vc6.zip e zlib123-dll.zip alle posizioni predefinite assegnate dalla vostra applicazione di decompressione.

Copiare il file libhpdf.lib e libhpdf.exp dalla sottocartella lib del file zip libharu decompresso, in C: \ Users \ <YourUserName> \ Desktop \ pdfmkr \ pdfmkr.

4 Copiare il zdll.lib, zdll.exp e file zdll.def dalla sottocartella lib del decompressi del Zlib nella stessa cartella di destinazione si fa riferimento al punto 3. Inoltre, copiare il file zlib1.dll dalla cartella

principale (non la sottocartella lib) del zlib decompresso cartella, al punto 3 la cartella di destinazione di.

5 Copiare i file di intestazione per cui il compilatore Visual C ++ li può trovare: copiare tutti intestazione (estensione del file * .h) file dalla libharu \ "include \" sottocartella, nella stessa cartella dal punto 3. Copiare tutti i file di intestazione Zlib dalla zlib \ "include \" sottocartella, al punto 3 la cartella di destinazione di.

6 Creare riferimenti ai file lib appena copiati in modo che il Visual C ++ linker può effettivamente vedere loro: ". Visualizza> Property Manager \" in Visual C ++ IDE, selezionare \ Nella finestra Property Manager, fare clic destro \ "pdfmkr \" e selezionare \ "Proprietà. \" Esporre la \ "Linker> Input \" nodo cliccando \ "Proprietà di configurazione, \" poi \ "Linker. \" In \ "dipendenze aggiuntive \" riga, immettere i nomi dei file di libreria appena copiato: \ "zdll.lib \" e \ (ma non il file DLL) "libhpdf.lib \".

7 Incollare il seguente codice nella finestra del codice Visual C ++:

//////////////////////////////////////////////

includere \ "stdafx.h \" includere <stdlib.h> includere <stdio.h> includere <string.h> includere <setjmp.h> includere \ "hpdf.h \"

jmp_buf ENV
ANDARE

ifdef HPDF_DLL

__stdcall vuoto

altro

vuoto

finisci se

cbHandleErr (HPDF_STATUS ErrNum,

HPDF_STATUS detail_num,
void *userinfo)

{

printf (\&quot;ERROR: errNum=%04X, detail_num=%u\\n\&quot;, (HPDF_UINT)errNum,
(HPDF_UINT)detail_num)

ANDARE

longjmp(env, 1)

ANDARE
}

const char fname [] = \ "myPDF.PDF \"
ANDARE

int main (int argc, char ** argv)
{

HPDF_Doc objPDF

ANDARE

HPDF_Page pdfPage

ANDARE

HPDF_Font font

ANDARE

HPDF_REAL pageHeight

ANDARE

objPDF = HPDF_New (cbHandleErr, NULL)

ANDARE

if (!objPDF) {
printf (\&quot;Can't create PdfDoc object\\n\&quot;)

ANDARE

return 1

ANDARE

}

if (setjmp (env)) {
HPDF_Free (objPDF)

ANDARE

return 1

ANDARE

}

/ * Crea pdfPage * /
pdfPage = HPDF_AddPage (objPDF)

ANDARE
pageHeight = HPDF_Page_GetHeight (pdfPage)
ANDARE

/* Put some text on pdfPage */

font = HPDF_GetFont (objPDF, \ "Times-Roman \", NULL)
ANDARE

HPDF_Page_SetFontAndSize (pdfPage, font, 24)

ANDARE

HPDF_Page_BeginText (pdfPage)

ANDARE
HPDF_Page_TextOut (pdfPage, 20, pageHeight-75, \ "La mia prima PDF \"); //sì

HPDF_Page_EndText (pdfPage)

ANDARE

HPDF_SaveToFile (objPDF, fname)

ANDARE

HPDF_Free (objPDF)

ANDARE

return 0

ANDARE
}

//////////////////////////////////////////////

8 Premere F5 per compilare ed eseguire il programma. Cercare il file di output, myPDF.PDF, nella cartella fa riferimento al punto 3.

Consigli e avvertenze

  • Per Fase 3, installare tutti i file .h lib e * dal Zlib e file libhpdf zip nella cartella contenente file di intestazione stdafx.h del progetto. Ecco dove Visual C ++ cerca includere e file di libreria quando si costruisce un app in modalità di debug / sviluppo. Se non vedi stdafx.h nella cartella di cui al punto 3, utilizzare Windows Explorer per la ricerca di esso.