Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];

Вниз

Как програмно сшить несколько 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.004 c
3-1269357337
dima_q
2010-03-23 18:15
2012.01.01
Информирование клиентов базы.


1-1278968008
Oleg
2010-07-13 00:53
2012.01.01
Закладки PageControl


2-1316683686
pavor
2011-09-22 13:28
2012.01.01
Длина поля String в ClientDataSet


2-1316690831
Laguna
2011-09-22 15:27
2012.01.01
Позиционирование в Combobox по значению объекта


15-1316145972
vajo
2011-09-16 08:06
2012.01.01
Win XP. Проблема входа в систему.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский