سؤال

أي أفكار عن كيفية عرض ملف PDF في WPF ويندوز التطبيق ؟


أنا باستخدام التعليمات البرمجية التالية إلى تشغيل المتصفح ولكن Browser.Navigate الطريقة لا تفعل أي شيء!

WebBrowser browser = new WebBrowser();
browser.Navigate("http://www.google.com");
this.AddChild(browser); // this is the System.Windows.Window
هل كانت مفيدة؟

المحلول

عفوا.هذا هو winforms التطبيق.لا WPF.أنا سيتم نشر هذا على أي حال.

جرب هذا

private AxAcroPDFLib.AxAcroPDF axAcroPDF1;
this.axAcroPDF1 = new AxAcroPDFLib.AxAcroPDF();
this.axAcroPDF1.Dock = System.Windows.Forms.DockStyle.Fill;
this.axAcroPDF1.Enabled = true;
this.axAcroPDF1.Name = "axAcroPDF1";
this.axAcroPDF1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axAcroPDF1.OcxState")));
axAcroPDF1.LoadFile(DownloadedFullFileName);
axAcroPDF1.Visible = true;

نصائح أخرى

يمكنك الحصول على برنامج Acrobat Reader تحكم العمل في WPF التطبيق باستخدام WindowsFormHost التحكم.لدي بلوق وظيفة حول هذا الموضوع هنا:

http://hugeonion.com/2009/04/06/displaying-a-pdf-file-within-a-wpf-application/

لدي أيضا على بعد 5 دقائق سكرينكست كيف وصلت إلى هنا:

http://www.screencast.com/t/JXRhGvzvB

ببساطة يمكن أن تستضيف عنصر تحكم مستعرض ويب على شكل واستخدامها لفتح PDF.

هناك جديد الأصلي WPF "WebBrowser" التحكم في .صافي 3.51 أو يمكنك استضافة ويندوز.أشكال المتصفح الخاص بك في التطبيق WPF.

التعليمة البرمجية التالية تتوقع Adobe Reader ليتم تثبيتها Pdf الإرشاد إلى أن تكون متصلا إلى هذا.ببساطة تشغيله في ذلك:

String fileName = "FileName.pdf";
System.Diagnostics.Process process = new System.Diagnostics.Process(); 
process.StartInfo.FileName = fileName;
process.Start();
process.WaitForExit();

مجرد استخدام الإطار webbrowser مثل ذلك

Frame frame = new Frame();
WebBrowserbrowser = new WebBrowser();
browser.Navigate(new Uri(filename));
frame.Content = browser;

ثم عندما كنت لا حاجة إليها بعد الآن تفعل هذا تنظيفه:

WebBrowser browser = frame.Content as WebBrowser;
browser.Dispose();
frame.Content = null;

إذا كنت لا تنظيفه ثم قد يكون لديك تسرب الذاكرة المشاكل اعتمادا على إصدار .صافي الخاص بك باستخدام.رأيت سيء تسرب الذاكرة في .NET framework 3.5 إذا لم تنظف.

الإفصاح:هنا هو واحد التجارية و أنا أعمل في هذه الشركة.

وأنا أدرك أن الجواب قد تم بالفعل قبول ولكن التالية لا يتطلب برنامج Adobe Reader/Acrobat وهو WPF حل بدلا من Winforms.كما أنني أدرك أن هذا هو السؤال القديم ولكن فقط تم تحديث لذا أعتقد أنه لا يزال الفعلية.

PDFRasterizer.NET 3.0 يسمح لك أن تجعل إلى WPF FixedDocument.فإنه يحافظ على جميع ناقلات الرسومات (PDF الرسومات يتم تحويلها إلى أكثر أو أقل من ما يعادل عناصر WPF.وربما هذا هو الأقرب إلى ما تحتاج إليه.

using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
  pdfDoc = new Document(file);

  ConvertToWpfOptions convertOptions = new ConvertToWpfOptions();
  RenderSettings renderSettings = new RenderSettings();
  ...

  FixedDocument wpfDoc = pdfDoc.ConvertToWpf(renderSettings, convertOptions, 0, 9, summary);
}

يمكنك تمرير wpfDoc مثلاWPF DocumentViewer بسرعة تنفيذ المشاهد.

يمكنك أيضا استخدام FoxitReader.انها حرة و يأتي مع عنصر تحكم ActiveX التي تسجل في متصفحات الويب (IE وغيرها) بعد تثبيت FoxitReader التطبيق.حتى بعد تثبيت FoxitReader على النظام وضع عنصر التحكم WebBrowser ووضع المصدر الملكية للإشارة إلى مسار الملف من ملف PDF.

التحقق من ذلك: http://itextsharp.sourceforge.net/ قد تضطر إلى استخدام WindowsFormsHost ، ولكن نظرا لأنها مفتوحة المصدر ، قد تكون قادرة على جعله قليلا أكثر أناقة في WPF.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top