Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Экспорт pdf файла 
:(
    Опции темы
Jonnik
Дата 31.1.2011, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 9.2.2006

Репутация: нет
Всего: нет



Здравствуйте. Подскажите насчет следующего:
У меня есть множество файлов в pdf формате. Из этих файлов надо вытащить текст и рисунки, а затем это необходимо поместить в любую бд. Почитав форум наткнулся на использование компонента TAcroPDF, но я не нашел примера его использования. Может у кого то есть пример как можно вытащить текст и рисунки с использованием этого компонента или может кто то может предложить другой вариант?
Заранее спасибо.
PM MAIL   Вверх
bagos
Дата 2.2.2011, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 17.6.2006

Репутация: 1
Всего: 1



вот методы:
Код

  TOLEBOOL        __fastcall LoadFile(BSTR fileName/*[in]*/); 
  void            __fastcall setShowToolbar(VARIANT_BOOL On/*[in]*/); 
  void            __fastcall gotoFirstPage(void); 
  void            __fastcall gotoLastPage(void); 
  void            __fastcall gotoNextPage(void); 
  void            __fastcall gotoPreviousPage(void); 
  void            __fastcall setCurrentPage(long n/*[in]*/); 
  void            __fastcall goForwardStack(void); 
  void            __fastcall goBackwardStack(void); 
  void            __fastcall setPageMode(BSTR pageMode/*[in]*/); 
  void            __fastcall setLayoutMode(BSTR layoutMode/*[in]*/); 
  void            __fastcall setNamedDest(BSTR namedDest/*[in]*/); 
  void            __fastcall Print(void); 
  void            __fastcall printWithDialog(void); 
  void            __fastcall setZoom(float percent/*[in]*/); 
  void            __fastcall setZoomScroll(float percent/*[in]*/, float left/*[in]*/, 
                                           float top/*[in]*/); 
  void            __fastcall setView(BSTR viewMode/*[in]*/); 
  void            __fastcall setViewScroll(BSTR viewMode/*[in]*/, float offset/*[in]*/); 
  void            __fastcall setViewRect(float left/*[in]*/, float top/*[in]*/, float width/*[in]*/, 
                                         float height/*[in]*/); 
  void            __fastcall printPages(long from/*[in]*/, long to/*[in]*/); 
  void            __fastcall printPagesFit(long from/*[in]*/, long to/*[in]*/, 
                                           VARIANT_BOOL shrinkToFit/*[in]*/); 
  void            __fastcall printAll(void); 
  void            __fastcall printAllFit(VARIANT_BOOL shrinkToFit/*[in]*/); 
  void            __fastcall setShowScrollbars(VARIANT_BOOL On/*[in]*/); 
  TVariant        __fastcall GetVersions(void); 
  void            __fastcall setCurrentHightlight(long a/*[in]*/, long b/*[in]*/, long c/*[in]*/, 
                                                  long d/*[in]*/); 
  void            __fastcall setCurrentHighlight(long a/*[in]*/, long b/*[in]*/, long c/*[in]*/, 
                                                 long d/*[in]*/); 



PM MAIL   Вверх
Данкинг
Дата 2.2.2011, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



bagos, эти методы я видел в свойствах AcroPDF. Но как ими вытащить текст из .pdf? Просто у меня как раз вчера тоже был такой вопрос.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
bagos
Дата 2.2.2011, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 17.6.2006

Репутация: 1
Всего: 1



Данкинг, вы уверены что этот компонент впринципе позволяет выдирать текст и картинки?

Добавлено через 5 минут и 16 секунд
нашел в инете, может поможет
Код

var
  FH: Integer;
  PR: Integer;
  SL: TStringList;
  Data: string;
  Font: string;
  Color: string;
  Size: string;
  X1, Y1, X2, Y2, X3, Y3, X4, Y4: string;
  Text: string;
  X: Integer;
  IL: Integer;
  TextBlockLeft: Double;
  TextBlockTop: Double;
  PageNum: Integer;
  ImageData: string;
  ImageLeft, ImageTop, ImageWidth, ImageHeight: Double;

// Open the file in direct access mode and store the file handle
FH := QP.DAOpenFile('Xpod1228090001.pdf', '');

// Loop through all the pages
for PageNum := 1 to QP.DAGetPageCount(FH) do
begin
  // Start a new document
  QP.NewDocument;

  // Specify that images should be compressed
  QP.CompressImages(1);

  // Get a page reference to the current page
  PR := QP.DAFindPage(FH, PageNum);

  // Create a string list to hold the text data
  SL := TStringList.Create;
  try

    // Extract the text from the current page
    SL.Text := QP.DAExtractPageText(FH, PR, 4);

    // Add each block of text to the new documen
    for X := 0 to SL.Count - 1 do
    begin
      Data := SL[X];

      Font := Copy(Data, 1, Pos(',', Data) - 1);
      Delete(Data, 1, Length(Font) + 1);
      Color := Copy(Data, 1, Pos(',', Data) - 1);
      Delete(Data, 1, Length(Color) + 1);
      Size := Copy(Data, 1, Pos(',', Data) - 1);
      Delete(Data, 1, Length(Size) + 1);

      X1 := Copy(Data, 1, Pos(',', Data) - 1);
      Delete(Data, 1, Length(X1) + 1);
      Y1 := Copy(Data, 1, Pos(',', Data) - 1);
      Delete(Data, 1, Length(Y1) + 1);
      X2 := Copy(Data, 1, Pos(',', Data) - 1);
      Delete(Data, 1, Length(X2) + 1);
      Y2 := Copy(Data, 1, Pos(',', Data) - 1);
      Delete(Data, 1, Length(Y2) + 1);
      X3 := Copy(Data, 1, Pos(',', Data) - 1);
      Delete(Data, 1, Length(X3) + 1);
      Y3 := Copy(Data, 1, Pos(',', Data) - 1);
      Delete(Data, 1, Length(Y3) + 1);
      X4 := Copy(Data, 1, Pos(',', Data) - 1);
      Delete(Data, 1, Length(X4) + 1);
      Y4 := Copy(Data, 1, Pos(',', Data) - 1);
      Delete(Data, 1, Length(Y4) + 1);

      Text := Copy(Data, 2, Length(Data) - 2);

      // Replace the utf-8 encoded TM symbol with the
      // PDF WinAnsi character code
      if Pos(#226#132#162, Text) > 0 then
        Text := StringReplace(Text, #226#132#162, #153,
          [rfReplaceAll]);

      // Set the text size
      QP.SetTextSize(StrToFloat(Size));

      // Draw the text, shift up by the font's "descent" value
      QP.DrawText(StrToFloat(X1),
        StrToFloat(Y1) - QP.GetTextDescent,
        Text);
    end;
  finally
    SL.Free;
  end;

  // Find all the images on the page
  IL := QP.DAGetPageImageList(FH, PR);

  // Loop through all the images
  for X := 1 to QP.DAGetImageListCount(FH, IL) do
  begin

    // Read the image data
    ImageData := QP.DAGetImageDataToString(FH, IL, X);

    // Add the image data to the new document
    QP.AddImageFromString(ImageData, 0);

    // Determine the location and size of the image on the page
    ImageLeft := QP.DAGetImageDblProperty(FH, IL, X, 501);
    ImageTop := QP.DAGetImageDblProperty(FH, IL, X, 502);
    ImageWidth := QP.DAGetImageDblProperty(FH, IL, X, 503) -
      QP.DAGetImageDblProperty(FH, IL, X, 501);
    ImageHeight := QP.DAGetImageDblProperty(FH, IL, X, 502) -
      QP.DAGetImageDblProperty(FH, IL, X, 508);

    // Draw the image onto the new document's page
    QP.DrawImage(ImageLeft, ImageTop, ImageWidth, ImageHeight);

  end;  // End image loop

  // Compress the page description commands
  QP.CompressContent;

  // Save the file
  QP.SaveToFile('XPod-' + IntToStr(PageNum) + '.pdf');

  // Remove the document
  QP.RemoveDocument(QP.SelectedDocument);

end;  // End page loop


Добавлено через 7 минут и 23 секунды
компонент Quick PDF Library

Добавлено через 9 минут и 50 секунд
и если есть возможность то рекомендую использовать OCR Transym, только там ограничение, нельзя распознавать русский текст :(
PM MAIL   Вверх
Данкинг
Дата 2.2.2011, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(bagos @  2.2.2011,  12:11 Найти цитируемый пост)
Данкинг, вы уверены что этот компонент впринципе позволяет выдирать текст и картинки?

Нет, я потому и спросил. smile 
Цитата(bagos @  2.2.2011,  12:11 Найти цитируемый пост)
компонент Quick PDF Library

Поищу, спасибо. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.6515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.