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

Вниз

Проблема с изменением pdf файла   Найти похожие ветки 

 
Lowlander ©   (2010-03-09 14:29) [0]

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


 
oldman ©   (2010-03-09 16:29) [1]

Делай это акробатом и не изобретай суперпупервелосипедища...


 
абизяна   (2010-03-09 16:51) [2]

Ну если уже редактировать получается, то дальше всё просто: нужно установить драйвер для печати в PDF и далее, просто, печатать в PDF файл.


 
Lowlander ©   (2010-03-10 10:07) [3]


> Делай это акробатом и не изобретай суперпупервелосипедища.
> ..

Весь смысл что я могу добавлять ватермарку через структуру, но еще у пдф есть такое свойство как printstate и его мне тоже нужно изменять. Через акробат просто нереально, т.к. таких документов бывает по 50-600 штук внушительных размеров и подкачиваются они из локалки, и если делать это вручную, то будешь этим заниматься сутками, уже пробывал, на 50 документов уходит около 1,5 часов бездумного кликанья в акробате

> Ну если уже редактировать получается, то дальше всё просто:
>  нужно установить драйвер для печати в PDF и далее, просто,
>  печатать в PDF файл.

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


 
brother ©   (2010-03-10 10:13) [4]

1. PDF это формат, значит, эли ты знаешь все о его структкре и можещь ее читать, то что мешает сохранить в pdf?
2. а теперь подробненько: как считываешь структуру файла, куда, как изменяешь? что значит:

> не хочет сохранятся как pdf

и с чего ты взял это:

> не записывает элементы структуры самого документа

в общем больше вопросов...


 
Lowlander ©   (2010-03-10 10:20) [5]

Действую просто - потоком копирую из пдф в текстовый(структура копируется вместе с текстом), там ищу строку и заменяю ее(тоже все нормально), сохраняю в пдф(а тут уже все плохо..) - файлы после это не открываются с ошибкой - нарушена структура файла. Если открывать напрямую пдф - читает только часть файла..


 
Lowlander ©   (2010-03-10 10:36) [6]

Просто хоть предложите какой нибудь другой подход или подскажите что я упускаю, почему сохраняемый пдф теряет структуру и текст..


 
Плохиш ©   (2010-03-10 11:11) [7]


> Действую просто - потоком копирую из пдф в текстовый(структура
> копируется вместе с текстом), там ищу строку и заменяю ее(тоже
> все нормально)

Изменять надо побайтно, чтобы длина потока/строки не изменилась.


 
Anatoly Podgoretsky ©   (2010-03-10 11:13) [8]

> Lowlander  (10.03.2010 10:07:03)  [3]

Acrobat это СОМ сервер, поэтому кликать ничего не надо, он хорошо подается автоматизации.


 
Anatoly Podgoretsky ©   (2010-03-10 11:19) [9]

> Lowlander  (10.03.2010 10:36:06)  [6]

У тебя ошибка в программе.


 
Lowlander ©   (2010-03-10 11:41) [10]

Вот таким образом я передаю в акробат текст ватермарки, но я не в курсе как заставить акробат самостоятельно добавлять ее в документы и изменять принтстейт на нужный мне..
procedure CreateWaterSet(CustName, DatOn, NumZak, NameText: string);
var FS: TFileStream;
   MS: TMemoryStream;
   B: Byte;
   s: string;
begin
{UTF-8    EF BB BF; UTF-16BE FE FF; UTF-16LE FF FE}
//%SystemRoot%\system32\charmap.exe
 s:="<?xml version = "1.0" encoding = "UTF-8" ?>";
 s:=s+"<WatermarkSettings version = "8.0">";
 s:=s+"<Font name="Arial" size="24.0"/>";
 s:=s+"Копия официального электронного издания"#13#10;
 s:=s+"("+CustName+" от "+DatOn+" № "+NumZak+")";
 s:=s+"<Scale value="-0.5"/>";
 s:=s+"<Rotation value="90"/>";
 s:=s+"<Opacity value="0.5"/>";
 s:=s+"<Location ontop="0"/>";
 s:=s+"<Color b="0.0" r="0.0" g="0.0"/>";
 s:=s+"<Alignment unit="1" horizvalue="0.0" vertvalue="0.0" horizalign="0" vertalign="1"/>";
 s:=s+"<Appearance onscreen="0" onprint="1" fixedprint="1"/>";
 s:=s+"<PageRange end="-1" start="-1" even="1" odd="1"/>";
 s:=s+"</WatermarkSettings>";
 s:=Chr(65279)+AnsiToUtf8(trim(s));
 MS:=TMemoryStream.Create;
 MS.WriteBuffer(PChar(s)^, length(s));
 MS.Position:=0;
 MS.ReadBuffer(B, 1);
 FS:=TFileStream.Create(NameText, fmCreate);
 FS.CopyFrom(MS, MS.Size-1);
 MS.Free;
 FS.Free;
end;

//C:\Program Files\Adobe\Acrobat 8.0\Acrobat\


 
brother ©   (2010-03-10 11:57) [11]

У, все, я пас...


 
Плохиш ©   (2010-03-10 13:28) [12]


> Lowlander ©   (10.03.10 11:41) [10]
>
> Вот таким образом я передаю в акробат текст ватермарки

И где там упоминается акробат, кроме как в комментарии?

Какой смысл в этих манипуляциях, кроме как выкидывания первого символа в собранной строке и записывания получившегося в итоге мусора в файл?


 
абизяна   (2010-03-10 17:10) [13]

Попробуйте этот компонент: http://codingrus.ru/infusions/pro_download_panel/download.php?did=356

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


 
QAZ   (2010-03-12 10:11) [14]

по ходу видно,что афтар вообще понятия не имеет о спецификации файла и открывает его тупо как текст
и уш темболее не в курсе, что целостность любый вменяемых форматов проверяется контрольными суммами
которые при тупом изменении букафф,естесственно не будут несовпадать


 
Lowlander ©   (2010-03-12 10:39) [15]


> И где там упоминается акробат, кроме как в комментарии?

пардон, не ту процедуру вставил
> по ходу видно,что афтар вообще понятия не имеет о спецификации
> файла и открывает его тупо как текст
> и уш темболее не в курсе, что целостность любый вменяемых
> форматов проверяется контрольными суммами
> которые при тупом изменении букафф,естесственно не будут
> несовпадать
>
>

Товарисч, проведите эксперимент на досуге,вставте в пдф файл вотермарку откройте любым редактором и измените количество "букафф" в вотермарке на произвольное - вы будете удивлены, но целостность структуры сохраняется.


 
QAZ   (2010-03-12 12:26) [16]


> Товарисч, проведите эксперимент на досуге,вставте в пдф
> файл вотермарку откройте любым редактором и измените количество
> "букафф" в вотермарке на произвольное - вы будете удивлены,
>  но целостность структуры сохраняется.

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


 
Anatoly Podgoretsky ©   (2010-03-12 13:32) [17]

> QAZ  (12.03.2010 12:26:16)  [16]

Никакие форматы знать не надо, для этого есть DOM, а акробат является СОМ сервером. Не надо в него тупо писать, им рулить нужно.


 
Lowlander ©   (2010-03-15 11:08) [18]


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

Вот именно, об этом я и спрашиваю! Ну не получается у меня делать это программно, я все таки начинающий, но это совершенно не значит что я не разбирался с структурой пдф. Просто прошу подсказать как это сделать правильно если уж у меня совсем труба с исполнением..  
> Никакие форматы знать не надо, для этого есть DOM, а акробат
> является СОМ сервером. Не надо в него тупо писать, им рулить
> нужно.

Анатолий, подскажите, пожалуйста, КАК это сделать или где почитать об этом.


 
Lowlander ©   (2010-03-15 11:19) [19]

Когда я использую сторонние компоненты то вотермарку я делаю спокойно и без запуска акробата, но вот как изменить свойство принтстайт? изменение этого свойства не обнаружил ни в одном компоненте, поэтому и приходится пользоваться акробатом



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

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

Наверх




Память: 0.52 MB
Время: 0.049 c
2-1272016997
SSD
2010-04-23 14:03
2010.08.27
Как зделать чтобы при входе в программу запршивал логин и пароль


15-1265562991
Stranger1308
2010-02-07 20:16
2010.08.27
Импорт библиотеки


3-1231747273
Ольга
2009-01-12 11:01
2010.08.27
Долго выполняется DELETE


6-1222066908
Michael
2008-09-22 11:01
2010.08.27
Именованые каналы - сетевое использование


2-1266257727
lamer6666
2010-02-15 21:15
2010.08.27
ZQuery1AfterScroll работает долго