Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Export iz QuickReporta u QRPDFDocumentFilter

[es] :: Pascal / Delphi / Kylix :: Export iz QuickReporta u QRPDFDocumentFilter

[ Pregleda: 1958 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.gs1hr.org.



+1 Profil

icon Export iz QuickReporta u QRPDFDocumentFilter29.04.2010. u 12:38 - pre 170 meseci
Koristim D2007 i QR 5. i Win 7 - 64 bitni.
U programu koristim automatsko kreiranje PDF-a pri ispisu računa tako da qickreport exportiram u filter.
Cijela stvar je dobro radila do nedavno...
Sada je sljedeće:
- na mom kompu radi i dalje sve kako treba, u svim kombinacijama: kreiranje PDF-a lokano, preko VPN-a na njihovom serveru, u mreži na njihovom serveru
- na kompu kod klijenta, (cliet - server, u domeni) više ne radi.
Kreira PDF ali isti nije čitljiv
Stara verzija programa radi dobro i kod njih.

U novoj verziji su mijnjani ispisi, dodavane slikice...
Kod za kreiranje PDF-a nije mijenjan.
Pokušao sam vratiti stari ispis, iz verzije koja radi, nakon kompajliranja - opet ne radi, naći da nije kriv sam report.

Na mom kompu su Win 7 - 64 bitni, kod njih Vista - 32 bitna. Ranije sam i ja imao Vistu 32. Može li to biti problem?

slijedi kod metode klase koja kreira PDF

Code:

procedure tMyPdf.CreatePDF;
var
  aPDFFilt: TQRPDFDocumentFilter;
  s: string;
begin
  if self.KreirajPDFLocal then
    s := ExtractFilePath(Application.ExeName)
  else
    s := DDPath;
   
  if s[Length(s)] <> '\' then
      s := s + '\';
  if not FileExists(s + self.BarCode + '.pdf') then begin
    aPDFFilt := TQRPDFDocumentFilter.Create(s + self.BarCode + '.pdf');
    try
    // set filter properties
      aPDFFilt.CompressionOn := True;
      aPDFFilt.TextOnTop := true;
      aPDFFilt.LeftMargin := -10;
      aPDFFilt.SetDocumentInfo('MojaFirma', userN, 'MOJPDF', self.Opis);
      aPDFFilt.AddFontMap('Bookman-Old-Style:Times');
      aPDFFilt.AddFontMap('Bookman-Old-Style:Times New Roman');
      if QRComposit <> nil then
        self.QRComposit.ExportToFilter(aPDFFilt)
      else  
        self.QR.ExportToFilter(aPDFFilt);
    finally  
      aPDFFilt.free;
    end;    
  end;  
end;

 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.gs1hr.org.



+1 Profil

icon Re: Export iz QuickReporta u QRPDFDocumentFilter29.04.2010. u 15:04 - pre 170 meseci
Otkrio sam u čemu je problem, pa ako će još nekome trebati...

Na ispisu koristim korisnički font u kom je digitaliziran potpis odgovorne osobe.
Pri kreiranju PDF-a, kontrolira se širina fonta i tu najstaje problem.

u QRPDFFilt.pas je potrebno komentriati linije koje generiraju error.

dobivanje dužine fonta:
Code:

          wResult:=GetCharABCWidths(TmpCanvas.Handle, PDFFont.FirstChar, PDFFont.LastChar, ABCWidths^);


linje koje treba komentirati:
Code:

          if not wResult then
          begin
            raise ERangeError.CreateFmt('Font widths for "%s" not obtainable (%s)', [FontName, SysErrorMessage
                                        (GetLastError)]);
          end;


U 64 bit-nim windowsima se greška ne pojavljue.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Export iz QuickReporta u QRPDFDocumentFilter29.04.2010. u 17:46 - pre 170 meseci
> wResult:=GetCharABCWidths(TmpCanvas.Handle, PDFFont.FirstChar, PDFFont.LastChar, ABCWidths^);

Da li je TmpCanvas, canvas PDF dokumenta, deluje da nije a možda bi trebalo biti.
BTW razmisli o upotrebi GetCharWidth, u jednom mom programu za štampu sam prvo koristio GetCharABCWidths i nisam dobijao dobre rezultate (grešku mislim da nikada nisam dobio) i na kraju sam prešao na GetCharWidth.

> linje koje treba komentirati:
> raise ERangeError.CreateFmt('Font widths for "%s" not obtainable (%s)', [FontName,
> SysErrorMessage (GetLastError)]);

Koju tačno grešku dobijaš? Savetujem ti da ostaviš upis greške u neki log, kasnije može dosta pomoći ako nešto ne radi...

> U 64 bit-nim windowsima se greška ne pojavljue.

Mislim da greška nema veze sa time, pre da je nešto vezano za prava pristupa u tom sistemu ili do tvog koda.
 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: Export iz QuickReporta u QRPDFDocumentFilter03.05.2010. u 08:02 - pre 170 meseci
Funkcioniranje programa sam ranije opisao:
Generira se qr za račune, rješenja itd., koji se, ovisi o postavkama programa, prilikom ispisa exportira se u PDF.

Grešku generira dio koda qr-a, u file-u: QRPDFFilt.pas tako da nije moj izbor korištenje funkcije GetCharABCWidths.

Font koji generira grešku koristi parove slova za potpise, žigove itd. Tako da dva slova sadrže cijeli rukom pisani potpis odgovorne osobe, dužine cca 5-6 cm. Ovo je korišteno zbog vektorske grafike fontova.

Program je kompajliran na 64-bitnim windowsima.

bez komentiranja koda u QRPDFFilt.pas situacija je sljedeća:

1. na 64-bitnim windowsima radi sve ok. Znaći, generiranje PDF-a ne javlja nikakvu grešku. PDF-ovi koji su generirano su OK.
2. na 32-bitnim windowsima program javlja grešku koju generira QRPDFFilt.pas sa jedne od 2 raise error ... 'Font widths for "%s" not obtainable (%s)' gdje ispiše korisnički font s potpisima.

Nakon komentiranja koda i kompajlilranja na 64-bitnim windowsima, program radi na 32-bitnim i 64-bitnim windowsima.
Na 32-bitnim windowsima je situacija sljedeća:
- PDF se generira OK, program ne javlja grešku
- PDFReader pri otvaranju tako generiranog PDF-a (na 32-bitnim windowsima s komentiranim dijelom koda) javlja: "A number is out of range", nakon potvrde - PDF je uredno čitljiv i izgleda potpuno normalno.

Program je dobro testiran i jedina razlika je u 32 - 64 bitnim windowsima na kojima se ne ponaša identično.
Pratio sam u dubinu taj dio koda, pri generiranju PDF-a upisuje se u PDF širina fonta. Da li je integer na 32-bitnim i 64-bitnim windowsima isti ili je problem u samim win funkcijama za dobijanje širine fonta.
Kada ulovim malo vremena, pkušat ću izmjenjati funkcije GetCharABCWidths <-> GetCharWidth da vidim da li postoje razlike.

Eto, da netko drugi ne mora izgubiti dva dana na traženju greške... još mi je raise error bio zamaskiran u mom try ... except koji je obuhvaćao veći dio koda... Sumljao sam na sve osim na bug (ako to je) u D2007 :)


 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Export iz QuickReporta u QRPDFDocumentFilter03.05.2010. u 10:54 - pre 170 meseci
> 1. na 64-bitnim windowsima radi sve ok. Znaći, generiranje PDF-a ne javlja nikakvu grešku. PDF-ovi koji su generirano su OK.
> 2. na 32-bitnim windowsima program javlja grešku koju generira QRPDFFilt.pas sa jedne od 2 raise error ... 'Font widths for "%s" not obtainable (%s)' gdje ispiše korisnički font s potpisima.

Kako glasi pun tekst greške, tj. koja je windows greška?

 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Export iz QuickReporta u QRPDFDocumentFilter

[ Pregleda: 1958 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.