Article View: pl.comp.lang.delphi
Article #345853Re: Rozwój złożonego projektu.
From: konsul41
Date: Wed, 21 Jun 2017 06:18
Date: Wed, 21 Jun 2017 06:18
84 lines
3411 bytes
3411 bytes
W dniu 20-06-2017 o 22:16, krolikbest pisze:
>
>>
>> FFile := TMemoryStream.Create();
>> FFile.LoadFromFile(FFileName);
>> PFile := PAnsiChar(FFile.Memory);
>> pend := PAnsiChar(FFile.Memory) + FFile.Size-5;
>>
>
> To mnie zaciekawiło. Nigdy nie musiałem zajmować się rozbiórka pdfów.
> Przybliżysz temat? Nie chodzi też oczywiście o zewn. biblioteki do
> rozbiórki tych dokumentów.
>
> Pozdr
> krolikbest
>
To jest kolejny projekt/pomysł na obróbkę e-deklaracji.
Pdfy można zapisywać z XML i chcę podłożyć XML w PDF i wyświetlić go w
Acrobat Reader i za jego pomocą wysłać. Ma być to przezroczyste dla
użytkownika.
Cały pdf to drzewo "obj" w każdym obj mogą być odwołania do kolejnych obj.
drzewo wygląda mniej więcej tak:
roo--- pages --- page
--- page
--- fonts
--- fonts
--- XForms
--- files
to tylko przykład
Ogólnie kod nie jest mój, Ja go tylko dostosowuje do swoich potrzeb
i jestem na etapie rozszyfrowywania objstream.
Nie pamiętam gdzie ale znalazłem w necie kod kogoś kto zrobił większość
roboty. Większość kodu polega na przeglądaniu znaków i traktowanie
całego PDF jako PAnsiChar.
function TPDFClass.FindStrInDict(const str: ansistring): boolean;
var
nestLvl: integer;
str1: AnsiChar;
begin
//nb: PDF 'dictionaries' start with '<<' and terminate with '>>'
result := false;
nestLvl := 0;
str1 := str[1];
while not result do
begin
while not (p^ in ['>','<',str1]) do inc(p);
if (p^ = '<') then
begin
if (p+1)^ = '<' then begin inc(nestLvl); inc(p); end;
end
else if (p^ = '>') then
begin
if (p+1)^ = '>' then
begin
dec(nestLvl);
inc(p);
if nestLvl <= 0 then exit; //Continue;//
end
end else
begin
result := (nestLvl < 2) and IsString(str);
if result then exit;
end;
inc(p);
end;
end;
użyte tak
if not FindStrInDict('/Filter') then exit;
przesuwa wskaźnik za szukany ciąg.
Mogę na priv podesłać cały spakowany projekt który rozbiera e-deklaracje
na obiekty i sobie możesz popatrzeć jak to jest zbudowane.
Ostrzegam kod to swobodna twórczość.
Technical Details
Message-ID:
<oid342$rdj$1@portraits.wsisiz.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!.POSTED.jue163.internetdsl.tpnet.pl!not-for-mailReferences:
<oi81jv$gcf$1@portraits.wsisiz.edu.pl> <3121b1d5-eadc-4911-a6c6-f1b76b9b088d@googlegroups.com> <oi86et$jr4$1@portraits.wsisiz.edu.pl> <59498277$0$15194$65785112@news.neostrada.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!.POSTED.jue163.internetdsl.tpnet.pl!not-for-mail From: "konsul41@wp.pl" <konsul41@wp.pl> Newsgroups: pl.comp.lang.delphi Subject: Re: Rozwój złożonego projektu. Date: Wed, 21 Jun 2017 08:18:42 +0200 Organization: http://www.wit.edu.pl Message-ID: <oid342$rdj$1@portraits.wsisiz.edu.pl> References: <oi81jv$gcf$1@portraits.wsisiz.edu.pl> <3121b1d5-eadc-4911-a6c6-f1b76b9b088d@googlegroups.com> <oi86et$jr4$1@portraits.wsisiz.edu.pl> <59498277$0$15194$65785112@news.neostrada.pl> Mime-Version: 1.0 Injection-Date: Wed, 21 Jun 2017 06:18:43 -0000 (UTC) Injection-Info: portraits.wsisiz.edu.pl; posting-host="jue163.internetdsl.tpnet.pl:95.48.160.163"; logging-data="28083"; mail-complaints-to="abuse@wsisiz.edu.pl" User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 In-Reply-To: <59498277$0$15194$65785112@news.neostrada.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit