Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.01.01;
Скачать: CL | DM;

Вниз

Как програмно сшить несколько pdf-файлов в один?   Найти похожие ветки 

 
>|<   (2011-09-13 10:42) [0]

У кого есть опыт, поделитесь.
Все pdf-файлы генерятся программно путем экспорта из QReporta.
Получается около 500 файлов, их нужно склеить в один pdf.
Кто знает, как это можно сделать.


 
Dimka Maslov ©   (2011-09-13 10:52) [1]

Adobe Acrobat (стоит денег)
Adobe Reader + PDFCreator (оба бесплатны)


 
Компромисс   (2011-09-13 10:58) [2]

Я это на Java делал с помощью библиотеки iText. Вроде как есть аналог на .Net iTextSharp, который можно использовать из Delphi. Только будет похоже на вырывание гланд через задний проход.


 
>|<   (2011-09-13 11:03) [3]


> Adobe Acrobat (стоит денег)
> Adobe Reader + PDFCreator (оба бесплатны)

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


 
RWolf ©   (2011-09-13 11:05) [4]

не такой уж и сложный формат у файла PDF.
вполне можно склеить самостоятельно, без сторонних библиотек.


 
Медвежонок Пятачок ©   (2011-09-13 11:06) [5]

Все pdf-файлы генерятся программно путем экспорта из QReporta.
Получается около 500 файлов, их нужно склеить в один pdf.
Кто знает, как это можно сделать.


сделать еще один qreport внутри которого все 500 репортов.
выгрузить в пдф.


 
И. Павел ©   (2011-09-13 11:08) [6]

Как вариант - использовать какую-нибудь стороннюю программу, предоставляющую API. Например:
http://www.coolutils.com/ru/PDFCombine - есть командная строка


 
>|<   (2011-09-13 11:11) [7]

Нашел пример на вижуал бейсике:
" Данная процедура создает один  .pdf файл из нескольких исходных .pdf файлов
Sub pdf_plus_pdf(ByVal pathItog As String, ByRef arr_files() As String)
"pathItog - полное имя результирующего файла
"arr_files() массив, содержащий полные имена файлов, которые нужно склеивать
 
   Dim numPages As Integer
   Dim AcroApp As Acrobat.CAcroApp "
   Dim i As Integer
   
   Dim NewDocument As Acrobat.CAcroPDDoc
   Dim OldDocument As Acrobat.CAcroPDDoc
   
   Set AcroApp = CreateObject("AcroExch.App")
   Set NewDocument = CreateObject("AcroExch.PDDoc")
   Set OldDocument = CreateObject("AcroExch.PDDoc")
       
   NewDocument.Open (arr_files(1))
   For i = 2 To UBound(arr_files())
       Debug.Print arr_files(i)
       OldDocument.Open (arr_files(i))
         numPages = NewDocument.GetNumPages()
       If NewDocument.InsertPages(numPages - 1, OldDocument, 0, OldDocument.GetNumPages(), True) = False Then
           MsgBox "Невозможно вставить страницы"
       End If
       OldDocument.Close
   Next i
   
   If NewDocument.Save(PDSaveFull, pathItog) = False Then
       MsgBox "Невозможно сохранить измененный документ"
   End If
   
   NewDocument.Close
   AcroApp.Exit
   Set AcroApp = Nothing
End Sub

Помогите перевести на Delphi.


 
Inovet ©   (2011-09-13 11:22) [8]

А что в QReport нельзя одним отчётом сделать?


 
Anatoly Podgoretsky ©   (2011-09-13 11:29) [9]

> >|<  (13.09.2011 11:03:03)  [3]

Тогда надо иметь правильные компоненты


 
Anatoly Podgoretsky ©   (2011-09-13 11:31) [10]

> >|<  (13.09.2011 11:11:07)  [7]

Это требует Акробата, по твоим условиям это нельзя.


 
>|<   (2011-09-13 11:32) [11]


> сделать еще один qreport внутри которого все 500 репортов.
>
> выгрузить в пдф.

а как сделать отчет в отчете? и количество может быть разным...


 
>|<   (2011-09-13 11:35) [12]


> Это требует Акробата, по твоим условиям это нельзя.

почему нельзя? у меня весь софт лицензионный


 
>|<   (2011-09-13 11:36) [13]


> Тогда надо иметь правильные компоненты

может название подскажите?


 
Inovet ©   (2011-09-13 11:38) [14]

> [11] >|<   (13.09.11 11:32)
> а как сделать отчет в отчете? и количество может быть разным...

Что-то мне подсказывает, что отчёты у тебя по одному шаблону делаются. Так тогда вообще странная проблема - группировка даже в самых примитивных генераторах есть, иначе и генератором не назвать.


 
>|<   (2011-09-13 11:47) [15]


>
> Что-то мне подсказывает, что отчёты у тебя по одному шаблону
> делаются. Так тогда вообще странная проблема - группировка
> даже в самых примитивных генераторах есть, иначе и генератором
> не назвать.

каждый отчет формируется из двух источников - список оборудования на объекте и сверочная опись с другой системой.
То есть использую CompositeReport.ExportToFilter(pdfFilter);
так что каждый отчет получается из двух шаблонов.


 
Inovet ©   (2011-09-13 12:06) [16]

> [15] >|<   (13.09.11 11:47)
> из двух источников - список оборудования на объекте и сверочная
> опись с другой системой

Криво как-то. В одну систему из другой экспортировать на момент генерации отчёта, и делать с этим уже что хочешь.


 
>|<   (2011-09-13 12:29) [17]

вообщем, пробовал неоднократно вызывать
CompositeReport.ExportToFilter(pdfFilter);
и он таки дописывает в уже существующий файл
но файл невозможно открыть
октрыл блокнотом, там визуально все в порядке, похоже на формат пдф
но похоже где-то вставляется лишний тег конца файла или что-то в структуре
осталось выяснить формат пдфа и поправить необходимые места в коде.


 
Anatoly Podgoretsky ©   (2011-09-13 12:30) [18]


> почему нельзя? у меня весь софт лицензионный

Ты вообще при чем?

> у меня компоненты сами генерят pdf, а будет ли у пользователя
> купленный акробат - это ни на что не влияет


 
>|<   (2011-09-13 14:11) [19]


> Ты вообще при чем?

мопед не мой, я просто разместил объяву...


 
Inovet ©   (2011-09-13 14:21) [20]

> [19] >|<   (13.09.11 14:11)
> мопед не мой

И я не я, и мопед не мой.



Страницы: 1 вся ветка

Текущий архив: 2012.01.01;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.012 c
1-1278308829
HikTronic
2010-07-05 09:47
2012.01.01
формы, потоки и TWebBrowser


8-1221793304
Cout
2008-09-19 07:01
2012.01.01
горизонтальный курсор


3-1269350767
12
2010-03-23 16:26
2012.01.01
ODAC/ запомнить и восстановить текущее положение в dataset


2-1316667091
JamesQ
2011-09-22 08:51
2012.01.01
Word+Delphi


2-1316800223
HF-Trade
2011-09-23 21:50
2012.01.01
Как узнать, позицию горизонтальной полосы прокрутки TListView