purebasic.info

PureBasic forum
Текущее время: Вс окт 21, 2018 5:47 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Чт апр 30, 2015 8:56 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Занимался я PDF форматом и вот чего нарыл (PurePDF меня не устроил)
Выкладываю, может кому пригодится, кста, библа бесплатная
P.S. Когда-то но сайте был разговор про баснословную стоимость подобной библиотеки, сейчас не могу найти
P.P.S. Отпишусь в "Обнаруженные ошибки компилятора PB" , т.к. заметил неприятный глюк PB


Вложения:
PDF.rar [325.17 KiB]
Скачиваний: 204

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт апр 30, 2015 9:27 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Мельком глянул - компилировал без поддержки utf8, в примере кракозяблы на русском.
А вообще как обстоят дела с поддержкой юникода и кириллицей в частности?

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт апр 30, 2015 10:30 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
kvitaliy писал(а):
Мельком глянул - компилировал без поддержки utf8, в примере кракозяблы на русском.
А вообще как обстоят дела с поддержкой юникода и кириллицей в частности?

Есть похоже, судя
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
* << Haru Free PDF Library 2.0.0 >> -- outline_demo.c
 *
* Copyright (c) 1999-2006 Takeshi Kanno <takeshi_kanno@est.hi-ho.ne.jp>
 *
* Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.
 * It is provided "as is" without express or implied warranty.
 *
*/
 
#include <stdlib.h>;
#include <stdio.h>;
#include <string.h>;
#include <setjmp.h>;
#include "hpdf.h"
 
jmp_buf env;
 
#ifdef HPDF_DLL
void  __stdcall
#else
void
#endif
error_handler  (HPDF_STATUS   error_no,
                HPDF_STATUS   detail_no,
                void         *user_data)
{
    printf ("ERROR: error_no=%04X, detail_no=%u\n", (HPDF_UINT)error_no,
                (HPDF_UINT)detail_no);
    longjmp(env, 1);
}
 
 
void
print_page  (HPDF_Page   page,  int page_num)
{
    char buf[50];
 
    HPDF_Page_SetWidth (page, 800);
    HPDF_Page_SetHeight (page, 800);
 
    HPDF_Page_BeginText (page);
    HPDF_Page_MoveTextPos (page, 30, 740);
#ifdef __WIN32__
    _snprintf(buf, 50, "Page:%d", page_num);
#else
    snprintf(buf, 50, "Page:%d", page_num);
#endif
    HPDF_Page_ShowText (page, buf);
    HPDF_Page_EndText (page);
}
 
int main(int argc, char **argv)
{
    HPDF_Doc  pdf;
    HPDF_Font font;
    HPDF_Page page[4];
    HPDF_Outline root;
    HPDF_Outline outline[4];
    HPDF_Destination dst;
    char fname[256];
 
    strcpy (fname, argv[0]);
    strcat (fname, ".pdf");
 
    pdf = HPDF_New (error_handler, NULL);
    if (!pdf) {
        printf ("error: cannot create PdfDoc object\n");
        return 1;
    }
 
    if (setjmp(env)) {
        HPDF_Free (pdf);
        return 1;
    }
 
    /* create default-font */
    font = HPDF_GetFont (pdf, "Helvetica", NULL);
 
    /* Set page mode to use outlines. */
    HPDF_SetPageMode(pdf, HPDF_PAGE_MODE_USE_OUTLINE);
 
    /* Add 3 pages to the document. */
    page[0] = HPDF_AddPage (pdf);
    HPDF_Page_SetFontAndSize (page[0], font, 30);
    print_page(page[0], 1);
 
    page[1] = HPDF_AddPage (pdf);
    HPDF_Page_SetFontAndSize (page[1], font, 30);
    print_page(page[1], 2);
 
    page[2] = HPDF_AddPage (pdf);
    HPDF_Page_SetFontAndSize (page[2], font, 30);
    print_page(page[2], 3);
 
    /* create outline root. */
    root = HPDF_CreateOutline (pdf, NULL, "OutlineRoot", NULL);
    HPDF_Outline_SetOpened (root, HPDF_TRUE);
 
    outline[0] = HPDF_CreateOutline (pdf, root, "page1", NULL);
    outline[1] = HPDF_CreateOutline (pdf, root, "page2", NULL);
 
    /* create outline with test which is ISO8859-2 encoding */
    outline[2] = HPDF_CreateOutline (pdf, root, "ISO8859-2 text УФХЦЧШЩ",
                    HPDF_GetEncoder (pdf, "ISO8859-2"));
 
    /* create destination objects on each pages
     * and link it to outline items.
     */
    dst = HPDF_Page_CreateDestination (page[0]);
    HPDF_Destination_SetXYZ(dst, 0, HPDF_Page_GetHeight(page[0]), 1);
    HPDF_Outline_SetDestination(outline[0], dst);
  //  HPDF_Catalog_SetOpenAction(dst);
 
    dst = HPDF_Page_CreateDestination (page[1]);
    HPDF_Destination_SetXYZ(dst, 0, HPDF_Page_GetHeight(page[1]), 1);
    HPDF_Outline_SetDestination(outline[1], dst);
 
    dst = HPDF_Page_CreateDestination (page[2]);
    HPDF_Destination_SetXYZ(dst, 0, HPDF_Page_GetHeight(page[2]), 1);
    HPDF_Outline_SetDestination(outline[2], dst);
 
    /* save the document to a file */
    HPDF_SaveToFile (pdf, fname);
 
    /* clean up */
    HPDF_Free (pdf);
 
    return 0;
}


_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср май 06, 2015 12:41 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 619
Благодарил (а): 2 раз.
Поблагодарили: 34 раз.
Пункты репутации: 9
Вот ещё какая то библиотека http://www.pdflib.com/download/free-sof ... ib-lite-7/


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср май 06, 2015 8:22 am 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Сергейчик писал(а):
Вот ещё какая то библиотека http://www.pdflib.com/download/free-sof ... ib-lite-7/

Видел я это. Не нашел скомпилированного варианта ни в виде стат. либы ни в виде dll. Если скомпилишь - респект и уважуха :)

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср май 06, 2015 8:49 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
pablov писал(а):
Есть похоже, судя


Нет поддержки в режиме utf8+ Unicode. Вылетает ошибка 4143, и ваше "Вот жеж блин"
PDF без юникода - это всё равно, что любовь в резинке: движение есть, прогресса нет. (с)

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср май 06, 2015 9:03 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
pablov писал(а):
Не нашел скомпилированного варианта ни в виде стат. либы


Попытался в виде стат. либы, там много их вышло, в частности есть\libs\pdflib\Release\pdflib.lib


Вложения:
libs.zip [5.6 MiB]
Скачиваний: 134

_________________
read-only
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср май 06, 2015 7:05 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 619
Благодарил (а): 2 раз.
Поблагодарили: 34 раз.
Пункты репутации: 9
Я вот не пойму можно ли сначала как то выводить текст и его редактировать а после уже сохранять в pdf или сначала он создаётся и всё в него пишется?
kvitaliy
Вы либу скомпилили или готовую нашли? :roll:


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср май 06, 2015 7:09 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Сергейчик писал(а):
Вы либу скомпилили или готовую нашли? :roll:

Компилировал в C++ из исходников с указанного тобою сайта.
Но как она работает и работает ли вообще я не в курсе, просто тупо кнопку нажал.

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср май 06, 2015 7:48 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 619
Благодарил (а): 2 раз.
Поблагодарили: 34 раз.
Пункты репутации: 9
kvitaliy писал(а):
Сергейчик писал(а):
Вы либу скомпилили или готовую нашли? :roll:

Компилировал в C++ из исходников с указанного тобою сайта.
Но как она работает и работает ли вообще я не в курсе, просто тупо кнопку нажал.

А эти можешь скомпилить? https://gmplib.org
http://glm.g-truc.net/0.9.6/index.html


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср май 06, 2015 8:56 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Сергейчик писал(а):
,
А эти можешь скомпилить? https://gmplib.org
http://glm.g-truc.net/0.9.6/index.html

А ты уверен, что это можно скомпилировать в отдельную либу?
Там нет проекта и рабочего пространства, в основном заголовочные файлы. По всей видимости это надо включать в свой проект на Си в виде исходников.
Если и возможно из этого создать отдельную либу, то надо её программировать, создать соответствующий проект и включить туда нужные файлы из этого комплекта. На С++ я на такой подвиг не готов.

а с gmp-6.0.0a.tar.lz вообще не понял, это не для Винды по моему.

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср май 06, 2015 10:18 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 619
Благодарил (а): 2 раз.
Поблагодарили: 34 раз.
Пункты репутации: 9
kvitaliy писал(а):
Сергейчик писал(а):
,
а с gmp-6.0.0a.tar.lz вообще не понял, это не для Винды по моему.

Вот посмотри может из этого содержимого можно.
https://yadi.sk/d/PgENrYosgVkeg


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн май 18, 2015 2:12 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
kvitaliy писал(а):
А вообще как обстоят дела с поддержкой юникода и кириллицей в частности?

Хорошо обстоят Изображение через encodings
Поддержка кирилицы
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
; Доки
; http://fossies.org/dox/rose-0.9.5a-without-EDG-20584/hpdf__error_8h_source.html
 
 
IncludeFile "libhpdf.pbi"
IncludeFile "libhpdfConst.pbi"
 
Enumeration
  #Window_0
EndEnumeration
Enumeration
  #Button_0
EndEnumeration
 
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
 
Procedure ErrorHandler(error_no, detail_no, *user_data)
  MessageRequester("Test PDF", "ERROR: error_# = " + error_no + ", detail_# = " + PeekS(*user_data)+"." + Chr(10) + "The app will be closed")
  End
EndProcedure
 
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 450, 200, 200, 100, "Create PDF doc", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    ButtonGadget(#Button_0, 50, 50, 100, 22, "Create PDF")
  EndIf
EndProcedure
 
Procedure draw_image (pdf, filename.s, x.f, y.f, text.s)
  Protected filename1.s = Space(#MAX_PATH)
  Protected page, image
 
    page = HPDF_GetCurrentPage (pdf);
 
    filename1 = "images\" + filename
    image = HPDF_LoadJpegImageFromFile(pdf, @filename1)
    ;/* Draw image To the canvas. */
    HPDF_Page_DrawImage(page, image, x, y, HPDF_Image_GetWidth (image), HPDF_Image_GetHeight(image))
    ;/* Print the text. */
    HPDF_Page_BeginText(page)
    HPDF_Page_SetTextLeading(page, 26)
    HPDF_Page_MoveTextPos(page, x, y)
   ; HPDF_Page_ShowTextNextLine(page, @filename)
    HPDF_Page_ShowTextNextLine(page, @text)
    HPDF_Page_EndText(page)
EndProcedure
 
Procedure print_page(page,  page_num)
    Protected buf.s
    HPDF_Page_SetWidth(page, 1000)
    HPDF_Page_SetHeight(page, 800)
    HPDF_Page_BeginText(page)
    HPDF_Page_MoveTextPos(page, 40, 745)
   
    buf = "Страница №: " + Str(page_num)
    HPDF_Page_ShowText(page, @buf)
   
    If page_num = 1
      HPDF_Page_TextOut(page, 40, 720, @"     - А я видела воров, - сказала Нава. - Молчун бил их палкой,  а  потом")
      HPDF_Page_TextOut(page, 40, 700, @"они гнались за нами, но мы убежали, мы очень быстро  бежали,  прямо  через")
      HPDF_Page_TextOut(page, 40, 680, @"болото, хорошо, что Колченог показал мне,  где  тропа,  а  то  нам  бы  не")
      HPDF_Page_TextOut(page, 40, 660, @"убежать. Молчун совсем из сил выбился, пока мы  бежали,  он  совсем  плохо")
      HPDF_Page_TextOut(page, 40, 640, @"бегает... Молчун, ты не отставай, ты за нами иди!..")
    EndIf
   
    If page_num = 2
      HPDF_Page_TextOut(page, 40, 720, @"   - Чего, шерсть на носу, касаешься? -  прохрипел  он,  глядя  Кандиду  в")
      HPDF_Page_TextOut(page, 40, 700, @"ноги. - Один вот тоже, шерсть на носу, касался, так его взяли за руки и за")
      HPDF_Page_TextOut(page, 40, 680, @"ноги и на дерево закинули, там он до сих пор и висит, а когда его  снимут,")
      HPDF_Page_TextOut(page, 40, 660, @"так больше, небось, касаться не будет, шерсть на носу...")
    EndIf
 
    HPDF_Page_EndText(page)
EndProcedure
 
Procedure make_pdf ()
 
    Protected.i *pdf, font, root, dst
    Protected Dim page(4)
    Protected Dim outline(4)
    Protected fname.s = Space(#MAX_PATH)      
    *pdf = HPDF_New(@ErrorHandler(), @"Вот жеж блин")
   
    If *pdf = 0
      MessageRequester("error", "cannot create PdfDoc")
        End
    EndIf
     
    fname = GetCurrentDirectory() + "text_multi.pdf"
    HPDF_SetCompressionMode(*pdf, #HPDF_COMP_ALL)
    font = HPDF_GetFont(*pdf, @"Courier", @"CP1251")    ; Берем шрифт с русской кодировкой (кодировку можно выбрать любую, см. хелп)
                                                               ; http://libharu.sourceforge.net/fonts.html
    ;/* Set page mode To use outlines. */
    HPDF_SetPageMode(*pdf, #HPDF_PAGE_MODE_USE_OUTLINE);
    ;/* Add 3 pages To the document. */
    page(0) = HPDF_AddPage(*pdf)
    HPDF_Page_SetFontAndSize(page(0), font, 18)
    print_page(page(0), 1)
   ; draw_image (*pdf, "PICT0045.JPEG", 80, 150, "Картинка 1")
    page(1) = HPDF_AddPage(*pdf)
    HPDF_Page_SetFontAndSize (page(1), font, 18)
    print_page(page(1), 2)
   ; draw_image (*pdf, "PICT0052.JPEG", 80, 150, "Картинка 2")
    page(2) = HPDF_AddPage(*pdf)
    HPDF_Page_SetFontAndSize(page(2), font, 30)
    print_page(page(2), 3)
    ;/* create outline root. */
    root = HPDF_CreateOutline (*pdf, #Null, @"Оглавление", HPDF_GetEncoder(*pdf, @"CP1251"));
   ; HPDF_Outline_SetOpened (root, #HPDF_TRUE);
    outline(0) = HPDF_CreateOutline(*pdf, root, @"Страница 1", HPDF_GetEncoder(*pdf, @"CP1251"));
    outline(1) = HPDF_CreateOutline(*pdf, root, @"Страница 2", HPDF_GetEncoder(*pdf, @"CP1251"));
    ;/* create outline with test which is CP1251 encoding */
    outline(2) = HPDF_CreateOutline (*pdf, outline(1), @"CP1251 текст Я ЖЫЛ ЭзЪУ ФХЦЧШЩ", HPDF_GetEncoder(*pdf, @"CP1251"))
   
    ;/* create destination objects on each pages
    ; * and link it to outline items.
    dst = HPDF_Page_CreateDestination(page(0))
    HPDF_Destination_SetXYZ(dst, 0, HPDF_Page_GetHeight(page(0)), 1)
    HPDF_Outline_SetDestination(outline(0), dst)
    ;//  HPDF_Catalog_SetOpenAction(dst)
    dst = HPDF_Page_CreateDestination (page(1));
    HPDF_Destination_SetXYZ(dst, 0, HPDF_Page_GetHeight(page(1)), 1)
    HPDF_Outline_SetDestination(outline(1), dst)
    dst = HPDF_Page_CreateDestination (page(2));
    HPDF_Destination_SetXYZ(dst, 0, HPDF_Page_GetHeight(page(2)), 1)
    HPDF_Outline_SetDestination(outline(2), dst)
;     ;/* save the document to a file */
    If OpenFile(0, fname)
       CloseFile(0)
       HPDF_SaveToFile(*pdf, @fname)
       RunProgram(fname)
    Else
       MessageRequester("Error", "Don&#39;t create file " + "&#39;"+fname+"&#39;")
    EndIf  
    ;/* clean up */
    HPDF_Free(*pdf)    
EndProcedure
 
  OpenWindow_Window_0()
 
Repeat
  Event = WaitWindowEvent()
  Select Event
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #Button_0
        make_pdf ()
      EndIf
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
ForEver
 


_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн май 18, 2015 3:17 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6384
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
pablov писал(а):
Хорошо обстоят Изображение через encodings


Это с поддержкой Юникода - не компилирует.

Изображение

Это без поддержки Юникода, компилирует, но не читаемый текст


Изображение


Дайте готовый проект в виде архива со всеми вашими файлами, сам не могу сладить с этим чудом.

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн май 18, 2015 4:26 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
У меня нормально компилит

ИзображениеИзображение

Прикрепляю полный набор


Вложения:
libHaru.rar [248.81 KiB]
Скачиваний: 179

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение
Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB