Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2010, 11:56   #1
XerSon
Форумчанин
 
Аватар для XerSon
 
Регистрация: 21.01.2008
Сообщений: 211
По умолчанию TNPdf+Delphi 2009 (перелаб)

Всем привет,
Есть компонент для работы с PDF
(TNPDF - PDF VCL for Delphi 1,2,3,4,5...
Copyright (c) 2002, K. Nishita)
Единственный в своём роде фриварный компонет! Но есть одно Но, не пашет он в Delphi 2009.

С Уважением обращаюсь к Вам ПРОфессионалы, кто смог бы адаптировать его под Delphi 2009, не только я буду вам признателен!
Вложения
Тип файла: rar PDF.rar (98.4 Кб, 67 просмотров)
XerSon вне форума Ответить с цитированием
Старый 11.03.2010, 12:36   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...не пашет, в смысле установить не можете? если так, то создаете пустой dpk и указываете ему Tnpdf.pas
Цитата:
File-New-Package, далее в правом самом окне project-manager выбрать добавить и выбрать (*.pas) файлы компоненты...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 11.03.2010, 19:01   #3
XerSon
Форумчанин
 
Аватар для XerSon
 
Регистрация: 21.01.2008
Сообщений: 211
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
...не пашет, в смысле установить не можете? если так, то создаете пустой dpk и указываете ему Tnpdf.pas
В архиве есть демка, так вот она работает не выпадая, и есть исходник, + сами компоненты, проект в 2009 компилируется норм, не считая 17 хинтов, но при сохранении в pdf программа вылетает! Просьба не пинать, но ответы желательно по Сабжу! С Уважением!
XerSon вне форума Ответить с цитированием
Старый 11.03.2010, 20:19   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...это же элементарно, ставишь брекпоинт и смотришь где возникает ...кстати как раз в pdf сохраняет нормально, проблема при конвертации картинки, измените процедуру SetBitmap так как ниже и все будет работать
Код:
procedure TPrintPDF.SetBitmap(ABitmap:TImage);
TYPE pRGBArray = ^TRGBArray;
     TRGBArray = ARRAY[0..0] OF TRGBTriple;
var pTempStream:TMemoryStream;
tmpBitmap:TBitmap;
InfoSize: {$IFNDEF WIN32}Integer{$ELSE}DWORD{$ENDIF};
ImageSize: {$IFNDEF WIN32}LongInt{$ELSE}DWORD{$ENDIF};
x, y: integer;
pb: PByteArray;
b: TRGBTriple;

bits :Pointer;
Info: PBitmapInfo;
BitmapInfo   :  TBitmapInfo;
DeviceContext:  hDC;
i            :  INTEGER;
j            :  INTEGER;
ScanLine     :  pRGBArray;
begin
tmpBitmap:=ABitmap.Picture.Bitmap;

GetDIBSizes(tmpBitmap.Handle, InfoSize, ImageSize);
ImageStream.Clear;

      tmpBitmap.PixelFormat := pf24Bit;
      for y := 0 to tmpBitmap.Height-1 do
      begin
        pb := tmpBitmap.ScanLine[y];
        ImageStream.Write(pb^, tmpBitmap.Width*3);
      end;

GetDIBSizes(tmpBitmap.Handle, InfoSize, ImageSize);

pTempStream:=TMemoryStream.Create;
StreamWriteStr(pTempStream,'<< /Type /XObject');
StreamWriteStr(pTempStream,'/Subtype /Image');
StreamWriteStr(pTempStream,'/Width '+IntToStr(tmpBitmap.Width));
StreamWriteStr(pTempStream,'/Height '+IntToStr(tmpBitmap.Height));
StreamWriteStr(pTempStream,'/ColorSpace /DeviceRGB');
StreamWriteStr(pTempStream,'/BitsPerComponent 8');
StreamWriteStr(pTempStream,'/Length '+IntToStr(ImageSize));
StreamWriteStr(pTempStream,'/Name /Im'+IntToStr(NumberofImages));
StreamWriteStr(pTempStream,'>>');
StreamWriteStr(pTempStream,'stream');
pTempStream.Seek(0, soFromEnd);

ImageStream.SaveToStream(pTempStream);

pTempStream.SaveToFile('~tmpim'+IntToStr(NumberofImages));

pTempStream.Free;
end;
...а демка работает потому-что уже скомпилирована, видимо сказывается различие в версиях delphi
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 11.03.2010, 21:44   #5
XerSon
Форумчанин
 
Аватар для XerSon
 
Регистрация: 21.01.2008
Сообщений: 211
По умолчанию

raxp,
Благодарю за Ваш труд, респект!

Цитата:
Сообщение от raxp Посмотреть сообщение
...измените процедуру SetBitmap так как ниже и все будет работать ...
Изменил процедуру как вы написали, итог тот же, программа не вылетает но и при открытии пэдээфки Акробат пишет сие:



Не могли бы вы выложить свой рабочий пример, мне важно для Delphi 2009.

Последний раз редактировалось Stilet; 15.03.2010 в 08:22.
XerSon вне форума Ответить с цитированием
Старый 15.03.2010, 10:37   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

у меня все ок ...тут дело уже не в delphi, а в версии самого pdf ...скачайте foxit pdf reader (бесплатная, маленькая, шустрая), он открывает все или почти все версии pdf/

...можно конечно покопаться в тегах при создании, но времени на это нет и желания тоже
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.03.2010, 11:13   #7
XerSon
Форумчанин
 
Аватар для XerSon
 
Регистрация: 21.01.2008
Сообщений: 211
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
у меня все ок ...тут дело уже не в delphi, а в версии самого pdf ...скачайте foxit pdf reader (бесплатная, маленькая, шустрая), он открывает все или почти все версии pdf/

...можно конечно покопаться в тегах при создании, но времени на это нет и желания тоже
Естественно я подумал об том же, НО и foxit pdf reader не открывает документ! Таже мессага прёть! Покажите пож ваш пример, рабочий!!!
XerSon вне форума Ответить с цитированием
Старый 15.03.2010, 11:31   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...не доверяете значит ...ок, прилагаю
- скрин открытого сгенерированного PDF
- скрин программы генерации
- сам сгенерированный PDF
- компоненту и компиляцию утилиты
Изображения
Тип файла: jpg скрин открытого сгенерированного PDF.jpg (83.4 Кб, 156 просмотров)
Тип файла: jpg скрин программы генерации.jpg (100.7 Кб, 181 просмотров)
Вложения
Тип файла: pdf сгенерированный PDF.pdf (548.2 Кб, 23 просмотров)
Тип файла: zip tpdf_компонент и компиляция.zip (176.9 Кб, 59 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.03.2010, 12:04   #9
XerSon
Форумчанин
 
Аватар для XerSon
 
Регистрация: 21.01.2008
Сообщений: 211
По умолчанию

Вижу что компилировали в D7
Не сомневался ни минуты, но в D2009 ошибка открытия документа та же!
А теперь откройте мой, скомпилировал ваш сорц!
Вложения
Тип файла: pdf 123.pdf (548.2 Кб, 131 просмотров)

Последний раз редактировалось XerSon; 15.03.2010 в 12:08.
XerSon вне форума Ответить с цитированием
Старый 15.03.2010, 12:36   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

мдя-я-я... размеры одинаковые, кодировка разная... ваш 123.pdf (2009-то юникодный)
Цитата:
% P D F - 1 0 o< < / P r o d u c e r ( K / A u t h o r ( K . / C r e a t i o n D a t e ( D : / C r e a t o r ( K ./ K e y w o r / S u b j e c/ T i t l e ( T
мой в ansi
Цитата:
%PDF-1.4
1 0 obj
<<
/Producer (K. Nishita)
/Author (K. Nishita)
/CreationDate (D:20100315112537)
/Creator (K. Nishita)
/Keywords ()
/Subject
попробуйте в процедурах procedure StreamWriteStr(var ms: TMemoryStream; s: string); - вместо string записать как ansistring
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi 2009 guffer Софт 10 25.08.2009 17:32
Delphi 2009 Yar Свободное общение 1 22.06.2009 20:15