Форум » [x]Harbour » xHarbour: Как создать Pdf? » Ответить

xHarbour: Как создать Pdf?

Snake: Привет, попробовал создать простенький PDF: HB_PDFNEW("pdf\temp.pdf",,a4_height,a4_width) hb_pdfnewpage("Test",'Test') HB_PDFWRITETEXT('Hello!') HB_pdfendpage() HB_PDFCLOSE() Error BASE/1132 Bound error: array access Called from TPDF:PDFCLOSEPAGE(428) Called from HB_PDFENDPAGE(136) Called from TESTPDF(567) В чем грабли? Описание не нашел, выдрал из GENPDF1.PRG Или может у кого есть простенький примерчик работы

Ответов - 2

SADSTAR4: Есть другой общеизвестный путь - установить виртуальный ПДФ-принтер и печатать на него

petr707: Мне больше подошел пример с Harudpf.lib \hbhpdf . Исправил только небольшую опечатку вызова в примере для опции "Встраивать фонт в Pdf" /* example.prg */ #include 'harupdf.ch' procedure main() Local TTName :="lucon.ttf" Local embed := HPDF_TRUE Local detail_font_name,def_font3 Local w,h Local atxt:={},i,a,b local pdf := HPDF_New() Local s1:= "012345679 123456789 123456789 123456789 123456789 123456789 123456789 123456789 " atxt:={; replicate("- ",40) ; } for i=1 to 60 aadd(atxt,s1) next i detail_font_name := HPDF_LoadTTFontFromFile (pdf, TTName, embed) HPDF_SetCompressionMode( pdf, HPDF_COMP_ALL ) HPDF_Page_SetSize( pdf, HPDF_PAGE_SIZE_A4, HPDF_PAGE_PORTRAIT) HPDF_SetPageMode( pdf, HPDF_PAGE_MODE_USE_OUTLINE ) page := HPDF_AddPage( pdf ) HPDF_Page_SetWidth(page , 595) HPDF_Page_SetHeight(page, 841) w:=HPDF_Page_gETwIDTH( page) h:=HPDF_Page_gETHeight( page) HPDF_Page_SetLineWidth( page, 0.5 ) // 595x841 def_font3 := HPDF_GetFont (pdf, detail_font_name, "CP1251") def_font1 := HPDF_GetFont( pdf, "Courier", "CP1251") def_font2 := HPDF_GetFont( pdf, "Times-Bold", "WinAnsiEncoding" ) HPDF_Page_BeginText( page ) // 595x841 // HPDF_Page_SetFontAndSize( page, def_font2, 10 ) HPDF_Page_SetFontAndSize( page, def_font3, 12 ) a= 20 b= 800 for i=1 to len(atxt) texto( page, a, b-12*i, atxt ) next i HPDF_Page_EndText( page ) HPDF_SaveToFile( pdf, 'test.pdf' ) HPDF_Free( pdf ) return NIL //////////////////////////////////////////////////////////////////////////// static function texto( page, col, lin, texto, fim, direita ) local tw direita := if( direita = NIL, .F., direita ) if fim = NIL col += 2 elseif ! direita tw := HPDF_Page_TextWidth( page, texto ) col += ( ( fim - col ) / 2 ) - ( tw / 2 ) endif if direita tw := HPDF_Page_TextWidth( page, texto ) col -= tw + 4 endif HPDF_Page_TextOut( page, col, lin, texto ) return NIL



полная версия страницы