الموقف المطلق عند تحويل HTML إلى PDF مع ITEXTSHARP

StackOverflow https://stackoverflow.com/questions/713961

  •  23-08-2019
  •  | 
  •  

سؤال

أنا أستخدم ITEXTSHARP لتحويل HTML إلى PDF ولا يبدو أنه يعمل مع عناصر موضعية تماما. على سبيل المثال، لدي ملف HTML هذا:

<html>
<body>
    <p style="position: absolute; left: 10px; top: 100px; width: 50px;">Hello World</p>
</body>
</html>

لا يتم وضع النص بشكل صحيح في ملف PDF الناتج. هل تعرف إذا كان من الممكن أن يكون لديك عناصر موضعية مطلقة عند تحويل HTML إلى PDF؟ أي حل حر (ITEXTSHARP أو غيرها) يتيح ذلك سيكون موضع تقدير كبير.

إليك الرمز الذي أستخدمه لأداء التحويل باستخدام ITEXTSHARP:

class Program
{
    static void Main(string[] args)
    {
        Document document = new Document(PageSize.A4);
        using (Stream output = new FileStream("out.pdf", FileMode.Create, FileAccess.Write, FileShare.None))
        using (Stream htmlStream = new FileStream("input.htm", FileMode.Open, FileAccess.Read, FileShare.Read))
        using (XmlTextReader reader = new XmlTextReader(htmlStream))
        {
            PdfWriter.GetInstance(document, output);
            HtmlParser.Parse(document, reader);
        }
        Process.Start(@"C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe", "out.pdf");
    }
}        

تعديل:

بعد إجراء مزيد من التحقيق، يبدو أن HTML HTML ل ITEXTSHARP لتحويل تحويل PDF يقتصر على بعض مستندات HTML بسيطة للغاية. هناك مشروع جافا لطيف يسمى الصحن الطائر الذي يتعامل مع مستندات HTML المعقدة. لذلك حاولت استخدامها مع ikvm وقد عملت بشكل جيد للغاية. المشكلة الوحيدة هي أنه يشعر بحل قذر بطريقة أو بأخرى. يبدو إضافة رمز التجميع 31 ميغابايت ل HTML لتحويل PDF كثيرا. هل هناك أي بدائل أفضل و "مجانا" للتعامل مع هذا السيناريو.

هل كانت مفيدة؟

المحلول

قررت أخيرا استخدام xhtmlorenderer.. وبعد إنه يناسب احتياجاتي تماما، وله العديد من الميزات وكان قادرا على تقديم أي من ملفات HTML الخاصة بي بشكل صحيح.

كما هو الحال حاليا لديها فقط نسخة Java اضطررت لتحويل الجرار إلى مجموعة .NET مع ikvm.

نصائح أخرى

على افتراض أنك على Windows، ماذا عن أتمتة الحرة محرر ملفات بي دي إف من خلال COM أو سطر الأوامر تقديم HTML إلى PDF عبر محرك تقديم Internet Explorer؟

هناك الكثير من أمثلة الأتمتة في المجلد Pdfcreator Com Com Com Com Com program

باستخدام IKVMC على الجرار في التوزيع الثنائي أظهر لي الكثير من التحذيرات من الفصول التي لا يمكن إجراؤها. بعد بما في ذلك المكتبات الأساسية IKVM للتعامل مع حقيقة أن Saucer Flying يستهدف كائنات Java، فقد ران في الاستثناء التالي:

`Cannot load AWT toolkit: ikvm.awt.NetToolkit, IKVM.AWT.WinForms, Version=0.40.0.1, Culture=neutral, PublicKeyToken=13235d27fcbfff58`

وكان ذلك فقط من المنفذة:

`ITextRenderer toRender = new ITextRenderer();`

الذي يبدو أن الكائن الرئيسي المستخدم من قبل الصحون الطائرة. هل يمكنك تقديم بعض المصدر لكيفية استخدامه؟

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