2016-06-06 11 views
13

के साथ पेज ब्रेक पीडीएफएसएचपी और एचटीएमएल रेन्डरर का उपयोग करके एचटीएमएल को पीडीएफ में बदलने की कोशिश करता हूं। यह कोड का हिस्सा है:पीडीएफ से पीडीएफ - पीडीएफशर्प और एचटीएमएल रेंडरर

private byte[] CreateHtmlContent() 
{ 
    string htmlContent = File.ReadAllText(@"htmlExample.txt"); 

    using (MemoryStream ms = new MemoryStream()) 
    { 
     PdfDocument pdfDocument = new PdfDocument(); 
     PdfDocument pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4, 60); 
     pdf.Save(ms); 
     res = ms.ToArray(); 
    } 
    return res; 
} 

पेज ब्रेक को छोड़कर सब कुछ ठीक काम करता है। कुछ पृष्ठों पर मैं इस छवि

HTML page break

पर की तरह परिणाम है यह इसे ठीक करना संभव है? एचटीएमएल सामग्री सरल एचटीएमएल है जिसमें केवल शीर्षलेख और पैराग्राफ और कोई अन्य टैग नहीं है। मुझे iTextSharp के साथ कोई समस्या नहीं थी लेकिन इस परियोजना पर मुझे पीडीएफशर्प और माइग्राडोक का उपयोग करना होगा।

+0

मुझे एक समान समस्या का सामना करना पड़ रहा है। क्या आपको इसके लिए एक फिक्स मिला? – user1071979

+0

मुझे 2 दिनों से इसी तरह की समस्या का सामना करना पड़ रहा है .. क्या आपने इसे ठीक किया ??? – Mallikarjun

+0

मैं (वास्तव में काम से एक सहयोगी) इस मुद्दे पर था और उसे कोई समाधान नहीं मिला। उन्होंने HTML को लोड करने के लिए HtmlAgilityPack लाइब्रेरी स्थापित करके और MigraDoc का उपयोग करके तत्व द्वारा बनाए गए तत्व से "हल" किया। – kiriz

उत्तर

11

मैं इसी तरह की चुनौती थी और यह हल के रूप में मैं GitHub पर इस पुल अनुरोध मिला: https://github.com/ArthurHub/HTML-Renderer/pull/41

आप सभी तत्वों या चयनकर्ताओं आप चाहते हैं पर कस्टम सीएसएस-संपत्ति

td { page-break-inside: avoid; } 

सेट कर सकते हैं (टीडी, पी, .my-class, आदि) पेज तोड़ने को नियंत्रित करने के लिए।

आप मूल्य "ऑटो" का उपयोग आप पुस्तकालय कुछ तत्वों

td { page-break-inside: auto; } 

पर अपने पेज को तोड़ने को नियंत्रित करने के वहाँ भी पाठ चलाने में पेज तोड़ने के लिए एक उदाहरण है चाहते हैं, तो कर सकते हैं।

+0

सीएसएस के संदर्भ में कैसे शामिल करें? मैं पीडीएफ उत्पन्न करने में सक्षम हूं लेकिन यह किसी भी सीएसएस शैलियों पर विचार नहीं करता है। (मेरा सीएसएस अलग-अलग फाइल में है - इनलाइन नहीं) – TechTurtle

+0

यह मेरे लिए काम करता है, या कम से कम ऐसा लगता है। \t <शैली का प्रकार = "टेक्स्ट/सीएसएस"> \t \t टीडी, एच 1, एच 2, एच 3, पी {पृष्ठ-ब्रेक-इन: से बचें; } \t –

5

यह थोड़ा देर हो चुकी है, लेकिन मैं एक ही मुद्दे में भाग गया। समस्या जेनरेट पीडीएफ कॉल पर मार्जिन सेट है। इसे हटा दें और यह ठीक है।

PdfDocument pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4); 
संबंधित मुद्दे