(10-04-2023, Saat: 15:27)sadoal351 Adlı Kullanıcıdan Alıntı: Merhabalar,
Delphi de tasarladığım arayüz ile siteye giriş yapıyorum.
WebBrowser1 de bunu gösteriyorum. Gelen Sayfayı Pdf olarak Bilgisayara kayıt etmek istiyorum.
Şu anda ekran resmini alıp kayıt yapabiliyorum. ( jpeg ) formatında. Buradaki sorun ekrana sığmayan liste tarzı bilgi olursa alt tarafını göremiyorum. Bunun için WebBrowser1 deki gelen bilgileri pdf olarak kayıt edersem ekrandaki bilgiler tam kayıt altına alınmış olur.
Şimdiden Teşekkürler
Evet, WebBrowser'daki gelen bilgileri PDF olarak kaydetmek, ekrana sığmayan bilgilerin tamamını kaydedebilmenizi sağlayabilir.
Bunun için Delphi'de PDF dönüştürme işlemini gerçekleştirebilecek üçüncü taraf bir kütüphane kullanabilirsiniz. Daha spesifik olarak, iTextSharp veya PDFSharp gibi açık kaynak kodlu kütüphaneler kullanılabilir. Bu kütüphaneler, HTML dosyalarını PDF olarak dönüştürmek için kullanılabilir.
Aşağıdaki adımları takip ederek WebBrowser'daki sayfayı PDF olarak kaydetmek için PDFSharp kütüphanesini kullanabilirsiniz:
1. PDFSharp nuget paketini yükleyin.
2. PDF dönüştürme işlemini gerçekleştirecek ayrı bir fonksiyon tanımlayın. Bu fonksiyon, WebBrowser'ın DocumentCompleted olayında çağrılmalıdır ve oluşturulan PDF dosyasını belirtilen yola kaydeder.
uses
PdfSharp, PdfSharp.Pdf, PdfSharp.Drawing, PdfSharp.Forms;
procedure HtmlToPdf(html:String; fileName:String);
var
tmpFile : string;
pdf: PdfDocument;
page: PdfPage;
gfx: XGraphics;
htmlRenderer: HtmlRenderer;
ms : TMemoryStream;
begin
tmpFile := ChangeFileExt(fileName, '.html');
// Html dosyası oluştur
TFile.WriteAllText(tmpFile, html);
// Pdf dosyası oluştur
pdf := new PdfDocument();
page := pdf.AddPage();
gfx := XGraphics.FromPdfPage(page);
XFontResolver.SetFontResolver(New MyFontResolver());
htmlRenderer := new HtmlRenderer();
// Html dosyasını PDF olarak dönüştür
htmlRenderer.Render(HtmlLoader.Load(tmpFile), gfx);
// PDF dosyasını kaydet
ms := new TMemoryStream;
pdf.Save(ms);
ms.Seek(0, TSeekOrigin.soBeginning);
ms.SaveToFile(fileName);
pdf := nil;
ms := nil;
TFile.(tmpFile);
end;
3. WebBrowser'ın DocumentCompleted olayında HtmlToPdf fonksiyonunu çağırın ve PDF dosyasının kaydedileceği yolu belirtin.
procedure TForm1.WebBrowser1DocumentCompleted(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
begin
HtmlToPdf(WebBrowser1.DocumentText, 'C:\Temp\MyPdfFile.pdf');
end;
Bu adımları izleyerek, WebBrowser'da görüntülenen sayfayı PDF olarak kaydedebilirsiniz. Böylece ekranın sığmadığı bilgileri de kaydederek tam bir görüntüye sahip olabilirsiniz.