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

Вниз

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

Наверх




Память: 0.5 MB
Время: 0.055 c
2-1267297747
Первокурсница
2010-02-27 22:09
2010.08.27
Две задачи для первого курса,Delphi


3-1242282590
Sairex
2009-05-14 10:29
2010.08.27
Подскажите как узнать тип записи в DBF файле?


15-1273509185
stas
2010-05-10 20:33
2010.08.27
Рантайм пакеты


15-1274077724
12
2010-05-17 10:28
2010.08.27
и я спрошу. Писалка DVD + CDchanger


11-1215738337
Jon
2008-07-11 05:05
2010.08.27
KOLMediaPlayer - OnNotify





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский