แปลง HTML เป็น PDF ใน. NET


425

ฉันต้องการสร้าง PDF โดยส่งเนื้อหา HTML ไปยังฟังก์ชัน ฉันใช้ iTextSharp สำหรับสิ่งนี้ แต่มันทำงานได้ไม่ดีเมื่อพบกับตารางและเลย์เอาต์ก็ยุ่งเหยิง

มีวิธีที่ดีกว่า?


คุณสามารถใช้GemBox.Documentสำหรับสิ่งนี้ นอกจากนี้ที่นี่คุณสามารถค้นหาโค้ดตัวอย่างสำหรับการแปลงไฟล์ HTML เป็นไฟล์ PDF
Mario Z

iTextSharp เวอร์ชั่นใดที่คุณใช้และคุณสามารถแบ่งปัน html ของคุณได้หรือไม่
Amedee Van Gasse

ยังไม่มีคำตอบสำหรับคำขอของฉันสำหรับข้อมูลเพิ่มเติม โปรดเพิ่มถ้าคุณใช้ HTMLWorker หรือ XMLWorker
Amedee Van Gasse

แล้ว. net core ล่ะ?
Piero Alberto

กันยายน 2019: ฉันได้เพิ่มคำตอบใหม่บางตัวเลือกที่ระบุไว้เป็นฟรีอื่น ๆ ที่จ่ายเงินและไม่กี่มีเป็น. net core stackoverflow.com/questions/564650/ …
Mauricio Gracia Gutierrez

คำตอบ:


198

แก้ไข: ข้อเสนอแนะ HTML Renderer ใหม่สำหรับ PDF โดยใช้ PdfSharp

(หลังจากลอง wkhtmltopdf และแนะนำให้หลีกเลี่ยง)

HtmlRenderer.PdfSharp เป็น100% ได้อย่างเต็มที่ C # การจัดการรหัส , ง่ายต่อการใช้งานที่ปลอดภัยด้ายและที่สำคัญที่สุดฟรี ( ใหม่ BSD ใบอนุญาต )วิธีการแก้ปัญหา

การใช้

  1. ดาวน์โหลดHtmlRenderer.PdfSharp nuget แพ็คเกจ
  2. ใช้วิธีการตัวอย่าง

    public static Byte[] PdfSharpConvert(String html)
    {
        Byte[] res = null;
        using (MemoryStream ms = new MemoryStream())
        {
            var pdf = TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator.GeneratePdf(html, PdfSharp.PageSize.A4);
            pdf.Save(ms);
            res = ms.ToArray();
        }
        return res;
    }
    

A ใช้ดีสลับกันเป็นรุ่นฟรีของiTextSharp

จนกว่าเวอร์ชั่น 4.1.6 iTextSharp จะได้รับอนุญาตภายใต้ใบอนุญาต LGPL และเวอร์ชันจนกว่าจะมี 4.16 (หรืออาจมีส้อม) เป็นแพ็คเกจและสามารถใช้ได้อย่างอิสระ แน่นอนคนที่สามารถใช้ต่อเนื่อง 5 + รุ่นจ่าย

ฉันพยายามรวมโซลูชันwkhtmltopdfในโครงการของฉันและมีอุปสรรคมากมาย

ส่วนตัวฉันจะหลีกเลี่ยงการใช้wkhtmltopdf บนโซลูชันของแอปพลิเคชันที่โฮสต์ด้วยเหตุผลต่อไปนี้

  1. ก่อนอื่น wkhtmltopdf คือการใช้งาน C ++ ไม่ใช่ C # และคุณจะพบปัญหาหลายอย่างที่ฝังอยู่ในรหัส C # ของคุณโดยเฉพาะอย่างยิ่งในขณะที่สลับระหว่างการสร้าง 32 บิตและ 64 บิตการสร้างโครงการของคุณ ต้องลองวิธีแก้ปัญหาหลายประการรวมถึงการสร้างโครงการแบบมีเงื่อนไข ฯลฯ เพื่อหลีกเลี่ยง "ข้อยกเว้นการจัดรูปแบบที่ไม่ถูกต้อง" ในเครื่องที่แตกต่างกัน
  2. หากคุณจัดการเครื่องเสมือนของคุณเองมันก็โอเค แต่ถ้าโครงการของคุณกำลังทำงานอยู่ในสภาพแวดล้อมที่ จำกัด เช่น ( Azure (ที่จริงแล้วเป็นไปไม่ได้ที่จะมีสีฟ้าตามที่ผู้เขียนวันอังคารที่กล่าวถึง ), Elastic Beanstalk และอื่น ๆ ) มันเป็นฝันร้ายที่จะกำหนดค่าสภาพแวดล้อมนั้น
  3. wkhtmltopdf กำลังสร้างไฟล์ภายในเซิร์ฟเวอร์ของคุณดังนั้นคุณต้องจัดการสิทธิ์ผู้ใช้และให้สิทธิ์การเข้าถึง "เขียน" ในที่ที่ wkhtmltopdf ทำงาน
  4. Wkhtmltopdf ทำงานเป็นโปรแกรมเดี่ยวดังนั้นมันไม่ได้รับการจัดการโดยแอพลิเคชันของคุณ IIS ดังนั้นคุณต้องโฮสต์มันเป็นบริการบนเครื่องอื่นหรือคุณจะได้สัมผัสกับการประมวลผลและการใช้หน่วยความจำภายในเซิร์ฟเวอร์การผลิตของคุณ
  5. มันใช้ไฟล์ temp เพื่อสร้างไฟล์ pdf และในกรณีเช่นAWS EC2ซึ่งมีดิสก์ที่ช้ามาก ๆ i / o มันเป็นปัญหาด้านประสิทธิภาพที่ยิ่งใหญ่
  6. ข้อผิดพลาด "ไม่สามารถโหลด DLL" wkhtmltox.dll "ที่เกลียดที่สุดที่รายงานโดยผู้ใช้หลายคน

--- ก่อนแก้ไขมาตรา ---

สำหรับใครก็ตามที่ต้องการสร้าง PDF จาก html ในแอปพลิเคชั่น / สภาพแวดล้อมที่เรียบง่ายฉันจะโพสต์ข้อความเก่าไว้เป็นคำแนะนำ

TuesPechkin

https://www.nuget.org/packages/TuesPechkin/

หรือโดยเฉพาะอย่างยิ่งสำหรับแอปพลิเคชันเว็บ MVC (แต่ฉันคิดว่าคุณสามารถใช้กับแอปพลิเคชัน. net ใดก็ได้)

rotativa

https://www.nuget.org/packages/Rotativa/

พวกเขาทั้งสองใช้ ไบนารีwkhtmtopdfสำหรับการแปลง html เป็น pdf ซึ่งใช้เครื่องยนต์ WebKit สำหรับการแสดงผลหน้าจึงยังสามารถแยกแผ่นสไตล์ CSS

พวกเขาให้ใช้งานง่ายต่อเนื่องรวมกับ C #

Rotativa ยังสามารถสร้าง PDF ได้โดยตรงจากRazor View

นอกจากนี้สำหรับเว็บแอปพลิเคชันในโลกแห่งความจริงพวกเขายังจัดการความปลอดภัยของเธรด ฯลฯ ...


2
ขอบคุณสำหรับการอัปเดตโพสต์ของคุณ ฉันจะลอง PdfSharp คุณช่วยฉันมากเวลา
John Henckel

1
PdfSharp นั้นดีในแง่ของประสิทธิภาพ แต่มันก็ไม่ได้ทำให้ฉันลอยได้ โชคดีที่ฉันสามารถเปลี่ยนมาร์กอัปเพื่อใช้ตารางเก่าที่ดี PdfSharp จัดการได้ดี
Gebb

3
เราลองใช้ HtmlRenderer แล้ว มันเร็วจริงๆเมื่อไม่โหลด CSS ใด ๆ แต่เมื่อเราพยายามใช้ CSS (Bootstrap บวกกับ bespoke บางส่วน) การแยกวิเคราะห์ CSS ใช้เวลาสักครู่ (ซึ่งเราอาจจะลดน้อยลง) และการแสดงผลแตกต่างจากหน้าเว็บอย่างสิ้นเชิง
ดีเด่นเรียกเก็บเงิน

1
@ user2347528 - ดูแหล่งที่มาของ HtmlRenderer.PdfSharp ไม่มีวิธีแก้ไขสิ่งนี้ - ใช้ความสูงของหน้าและคลิปทั้งหมดในหน้า PDF แต่ละหน้าซึ่งโชคร้ายจริงๆ - หมายความว่า PDF หลายหน้าพร้อมห้องสมุดนี้สามารถ ' ไม่ต้องทำ
นาย Bungle

3
BS สิ่งนี้จะสร้างภาพของ HTML และเพิ่มภาพลงในไฟล์ pdf นี่ไม่ใช่ PDF จริงทั้งหมด นอกจากนี้ PDF ยังเป็นรูปแบบกราฟิกแบบเวกเตอร์ซึ่งคุณสามารถเลื่อนดูใกล้ ๆ อย่างไม่ จำกัด ยกเว้นในกรณีที่ PDF ประกอบด้วยกราฟิกแรสเตอร์ซึ่งเป็นสิ่งที่ไลบรารีนี้สร้างขึ้น
Stefan Steiger

191

อัปเดต:ตอนนี้ฉันจะแนะนำPupeteerSharpผ่าน wkhtmltopdf

ลองwkhtmtopdf มันเป็นเครื่องมือที่ดีที่สุดที่ฉันค้นพบ

สำหรับ. NET คุณสามารถใช้ไลบรารี่ขนาดเล็กนี้เพื่อเรียกใช้ยูทิลิตี้บรรทัดคำสั่ง wkhtmtopdf ได้อย่างง่ายดาย


17
รองรับ. NET?
Kiquenet

6
มันเป็นปฏิบัติการแบบสแตนด์อโลน คุณสามารถเปิดใช้งานเป็นกระบวนการผ่าน URL ของเอกสาร HTML เป็นอาร์กิวเมนต์
Marek

46
@bamccaig ฉันได้รับแล้ว =) github.com/gmanny/Pechkinมันทำให้ฟังก์ชั่นการใช้งานทุกอย่างของห้องสมุดและยังมีกระดาษห่อสำหรับใช้ในหลายกระทู้ และมันก็อยู่บน NuGet
Gman

7
หากต้องการใช้สิ่งนี้ใน C # stackoverflow.com/questions/4651373/…
Daniel Little

7
@ AdamMoszczyński: จาก Wikipedia : LGPL ช่วยให้นักพัฒนาและ บริษัท สามารถใช้และรวมซอฟต์แวร์ LGPL เข้ากับซอฟต์แวร์ของตัวเอง (แม้เป็นกรรมสิทธิ์) โดยไม่จำเป็นต้องใช้ (ตามเงื่อนไขของ copyleft ที่แข็งแกร่ง) เพื่อเผยแพร่ซอร์สโค้ดของชิ้นส่วนซอฟต์แวร์ของตนเอง
Oliver

34

ฉันเพิ่งดำเนินการ PoC เกี่ยวกับการแปลง HTML เป็น PDF และต้องการแบ่งปันผลลัพธ์ของฉัน

สิ่งที่ฉันชอบที่สุดคือOpenHtmlToPdf

ข้อดีของเครื่องมือนี้:

  • HTML เข้ากันได้ดีมาก (เช่นเป็นเครื่องมือเดียวในตัวอย่างของฉันที่ทำซ้ำส่วนหัวตารางอย่างถูกต้องเมื่อตารางขยายหลายหน้า)
  • API ที่คล่องแคล่ว
  • ฟรีและ OpenSource ( ใบอนุญาตครีเอทีฟคอมมอนส์แสดงที่มา 3.0 )
  • วางจำหน่ายผ่าน NuGet

เครื่องมืออื่น ๆ ผ่านการทดสอบ:


+1 สำหรับสิ่งนี้ฉันทดสอบ HtmlRenderer สำหรับ PdfSharp แต่พบปัญหามากเกินไปกับตัวแบ่งหน้า ฉันสามารถใช้ชีวิตอยู่กับการพึ่งพา wkHtmlToPdf ในโครงการนี้ดังนั้นวิธีนี้จึงยอดเยี่ยม - มันทำให้ HTML สวยงาม
jmdon

ดูสวยงาม แต่ว้าวมันใช้เวลานานมาก 30 วินาทีพร้อมด้วยธีมบู๊ตสแตรปและอื่น ๆ หน้าเว็บที่ค่อนข้างเรียบง่าย แต่อย่างไรก็ตาม
Nicholas Petersen

สเตฟานีจาก IronPDF ที่นี่ นี่คือตัวอย่างโค้ดเกี่ยวกับวิธีใช้ IronPDF เพื่อแปลง html เป็น PDF ใน C # พบมากในhtmlของเราเป็น PDF กวดวิชาในเว็บไซต์ของเรา using IronPdf; IronPdf.HtmlToPdf Renderer = new IronPdf.HtmlToPdf(); // Render an HTML document or snippet as a string Renderer.RenderHtmlAsPdf("<h1>Hello World</h1>").SaveAs("html-string.pdf");
สเตฟานี

ผมใช้ iText pdfHtml background-colorแต่ก็ไม่สนับสนุน OpenHtmlToPdf ทำงานได้อย่างสมบูรณ์แบบฟรี
Hp93

ฉันเห็นด้วยกับความเหนือกว่าของ OpenHtmlToPdf นอกจากนี้ยังรองรับ. exe และ. dll ที่รวมเข้ากับ ILMerge
saygley

30

อัพเดตล่าสุด: มีนาคม 2563

นี่คือรายการตัวเลือกสำหรับการแปลง HTML เป็น PDF ใน. NET ที่ฉันได้รวบรวมไว้ (บางฟรีจ่ายบางส่วน)

หากไม่มีตัวเลือกใด ๆ ด้านบนช่วยให้คุณสามารถค้นหาแพ็คเกจ NuGet ได้ตลอดเวลา https://www.nuget.org/packages?q=html+pdf


1
คุณเคยทดสอบประสิทธิภาพบ้างไหม? เรากำลังมองหาที่จะปรับปรุงการแปลงครั้งในปัจจุบันและมีการสำรวจห้องสมุดอื่น ๆ สำหรับผลประโยชน์เหล่านี้
frno

ฉันยังไม่ได้ทำการเปรียบเทียบประสิทธิภาพโดยเฉพาะอย่างยิ่งเพราะเป็นรายการที่มีขนาดยาว - อาจมีบางคนได้ทำ "การสร้าง PDF การตรวจสอบประสิทธิภาพห้องสมุดสุทธิ. NET" หรือที่คล้ายกัน
Mauricio Gracia Gutierrez

28

โปรแกรมแปลง HTML เป็น PDF ส่วนใหญ่ใช้ IE ในการแยกวิเคราะห์และแสดงผล HTML สิ่งนี้อาจแตกเมื่อผู้ใช้อัปเดต IE นี่คือสิ่งที่ไม่ต้องพึ่งพา IE

รหัสเป็นดังนี้:

EO.Pdf.HtmlToPdf.ConvertHtml(htmlText, pdfFileName);

เช่นเดียวกับตัวแปลงอื่น ๆ คุณสามารถส่งข้อความชื่อไฟล์หรือ URL ได้ ผลลัพธ์สามารถบันทึกลงในไฟล์หรือสตรีมได้


35
มันไม่มีประโยชน์เพราะคุณต้องซื้อห้องสมุด
d1jhoni1b

47
d1jhoni1b สิ่งนี้ทำให้มีประโยชน์อย่างไร หากเป็นเครื่องมือแบบจ่ายค่าตอบแทนอาจมีการกล่าวว่ามีราคาแพง แต่ไม่ไร้ประโยชน์สำหรับเกณฑ์นั้นเพียงอย่างเดียว
Don Rolling

3
เป็นจริง EO.Pdf ไม่ได้ใช้ IE แต่ดูเหมือนว่าจะวางไข่อินสแตนซ์ 32 บิตของเบราว์เซอร์ webkit ในพื้นหลัง ตรวจสอบรายการกระบวนการของคุณและคุณจะเห็นพวกเขาเป็นอินสแตนซ์ rundll32.exe ที่ชี้ไปที่ EO.PDF dll ในความคิดของฉันก็ยังคงเป็นบิต
แมตต์

1
ไม่รองรับ media = "print" ซึ่งเจ็บปวดจริงๆ
Marat Faskhiev

15
ใบอนุญาตผู้พัฒนารายเดียวราคา $ 650 นั่นเป็นค่าใช้จ่ายสูง
Abhijeet Nagre

25

ฉันขอแนะนำNRecoอย่างจริงจัง มันมีรุ่นฟรีและจ่ายเงินและคุ้มค่าจริงๆ มันใช้ wkhtmtopdf ในพื้นหลัง แต่คุณเพียงแค่ต้องการหนึ่งการชุมนุม น่าอัศจรรย์

ตัวอย่างการใช้งาน:

ติดตั้งผ่านทางNuGet

var htmlContent = String.Format("<body>Hello world: {0}</body>", DateTime.Now);
var pdfBytes = (new NReco.PdfGenerator.HtmlToPdfConverter()).GeneratePdf(htmlContent);

คำเตือน: ฉันไม่ใช่นักพัฒนาเพียงแค่เป็นแฟนของโครงการ :)


3
ดูมีประโยชน์ทีเดียว น่าสังเกตว่า ณ วันนี้ (05/10/15) มันเป็น. wrapper สุทธิที่ดาวน์โหลดมากที่สุดสำหรับ wkhtmtopdf (เป็นแพคเกจ Nuget)
ken2k

3
พยายามมันโชคไม่ดีที่ฉันไม่สามารถทำให้มันทำงานบนหน้าเว็บของสีฟ้า
gabriel14

ห้องสมุดนี้ทำงานได้ดีเมื่อฉันเรียกใช้ภายในเครื่องของฉัน แต่บนเซิร์ฟเวอร์การโฮสต์ฉันเห็นข้อผิดพลาดต่อไปนี้แบบสุ่ม Pdf ได้รับการสร้างขึ้นในบางครั้ง แต่บางครั้งก็เกิดข้อผิดพลาดต่อไปนี้ "ข้อผิดพลาดเกิดข้อผิดพลาดขณะประมวลผลคำขอของคุณไม่สามารถสร้าง PDF: (รหัสทางออก: 1)"
2347528

wkhtmtopdf ขึ้นอยู่กับ GDI + หรือ x-server หากคุณใช้งานบน Mono / Linux ดังนั้นนี่คือไม่ได้มีประโยชน์สำหรับสภาพแวดล้อมเซิร์ฟเวอร์ ...
nuzzolilo

มันดีและทำงานได้ตามที่คาดไว้ แต่ปัญหาคุณภาพบิตที่ฉันเห็นใน pdf ของฉันเราสามารถปรับปรุงได้ไหม
สาธารณรัฐอินเดีย

13

Winnovativeนำเสนอไลบรารี. Net PDF ที่รองรับอินพุต HTML พวกเขามีไม่ จำกัดทดลองใช้ฟรี ขึ้นอยู่กับว่าคุณต้องการปรับใช้โครงการของคุณอย่างไรอาจเพียงพอ


4
โปรดจำไว้ว่าเมื่อเราตรวจสอบ winnovative ครั้งล่าสุดนั้นไม่เข้ากันกับ IE9 (เนื่องจากใช้เครื่องมือการแสดงผล IE GDI ซึ่งถูกลบออกใน IE9) ดังนั้นหากคุณติดตั้ง IE9 บนเครื่องที่คุณใช้อยู่การแปลงจะไม่ทำงาน พวกเขาอาจแก้ไขได้ตามเวลาที่คุณอ่าน แต่ส่วนประกอบเชิงพาณิชย์จำนวนมากใช้ IE เครื่องมือเอ็นจิ้นการแสดงผลและไม่ติดขัดกับ IE9 ดังนั้นจึงคุ้มค่าที่จะตรวจสอบ
fubaar

Winnovative เป็นวิธีที่ง่ายที่สุดในการตั้งค่าและเพิ่งจะหมดไป แต่: 1. มันไม่ทำงานบนเว็บไซต์ Azure เพียง CloudApp 2. มันช้ามันใช้เวลา 8 วินาทีในการสร้าง PDF อย่างง่ายบน Azure D1 VM
jsgoupil

ยืนยัน. มันช้ามาก ฉันเปรียบเทียบกับ wkhtmltopdf
Marat Faskhiev

Winnovative Library มีค่าใช้จ่ายสูงมาก ประมาณ $ 650 สำหรับใบอนุญาตนักพัฒนาและอีก $ 1,200 สำหรับใบอนุญาตอื่น ๆ
Abhijeet Nagre

Winnovative HTML เป็น PDF Converter ใช้งานได้ในเว็บไซต์ Azure และไม่ได้ขึ้นอยู่กับ IE ตามที่แนะนำในข้อคิดเห็น โปรดตรวจสอบ HTML Winnovative ไป PDF สำหรับการแก้ปัญหา Azure ในเว็บไซต์: winnovative-software.com/html-to-pdf-converter-azure.aspx เพื่อปรับปรุงการตั้งเวลาการแปลง HtmlToPdf.ConversionDelay = 0 ตัวแปลงนั้นใช้การหน่วงเวลาเริ่มต้นเพื่อจัดการกับหน้า HTML ที่อัปเดตเนื้อหาของพวกเขาหลังจากโหลดหน้าเว็บแล้ว
EvoPdf

9

ที่สำคัญรูปแบบไฟล์ PDFสามารถใช้ในการแปลง HTML เป็น PDF : ตัวอย่าง C # ตัวอย่างที่เชื่อมโยงถึงที่นี่เป็นแบบ ASP.NET แต่สามารถใช้ไลบรารีจากแบบฟอร์ม Windows, WPF, ASP.NET Webforms และ ASP.NET MVC ไลบรารีมีตัวเลือกในการใช้เอ็นจินการเรนเดอร์ HTML ต่าง ๆ : Internet Explorer (ค่าเริ่มต้น) และ WebKit (เอาต์พุตที่ดีที่สุด)

ชุดควบคุมทั้งหมดมีให้บริการฟรี (แอพพลิเคชั่นเชิงพาณิชย์) ผ่านโปรแกรมใบอนุญาตชุมชนหากคุณมีคุณสมบัติ สิทธิ์ใช้งานชุมชนเป็นผลิตภัณฑ์แบบเต็มโดยไม่มีข้อ จำกัด หรือลายน้ำ

หมายเหตุ: ฉันทำงานเพื่อ Syncfusion


8

หากคุณไม่ต้องการไลบรารี. Net PDF ที่แท้จริงมีเครื่องมือ HTML เป็น PDF ฟรีจำนวนมากซึ่งส่วนใหญ่สามารถเรียกใช้จากบรรทัดคำสั่ง

ทางออกหนึ่งคือเลือกหนึ่งในนั้นแล้วเขียนเสื้อคลุมบาง ๆ รอบ ๆ ใน C # เช่นทำในบทช่วยสอนนี้


บทช่วยสอนใช้ส่วนประกอบจากเว็บไซต์ที่ไม่มีอยู่อีกต่อไป
Tom Winter

7

ผมใช้ ExpertPDF Html เป็น PDF Converter ทำงานได้ดี น่าเสียดายที่มันไม่ฟรี


ExpertPDf มีตัวเลือกสำหรับการทำเครื่องหมายด้วยน้ำหรือไม่?
user1799214

@ user1799214 - ใช่ ExpertPDF รองรับลายน้ำ ดูที่นี่สำหรับโค้ดตัวอย่าง ฉันใช้ลายน้ำกับเว็บไซต์ของฉันได้สำเร็จ
Theophilus

มันใช้งานได้ค่อนข้างดี แต่พวกเขาไม่ตอบคำถามสนับสนุน
Michael Freidgeim

7

นอกจากนี้ยังมีบนเว็บแอปการสร้างเอกสารใหม่ - DocRaptor.com ดูเหมือนจะใช้งานง่ายและมีตัวเลือกฟรี


7

อัปเดตในปี 2018 และลองใช้ HTML + CSS = สมการมาตรฐาน!

มีข่าวดีสำหรับความต้องการ HTML เป็น PDF ในฐานะที่เป็นคำตอบนี้แสดงให้เห็น , ของ W3C มาตรฐานCSS แบ่ง-3จะแก้ปัญหา ... มันเป็นคำแนะนำผู้สมัครที่มีแผนจะเปลี่ยนเป็นคำแนะนำที่ชัดเจนในปี 2017 หรือปี 2018 หลังจากการทดสอบ

ในฐานะที่ไม่ให้ได้มาตรฐานมีโซลูชั่นที่มีปลั๊กอินสำหรับ C # เป็นแสดงให้เห็นโดยprint-css.rocks


1
โซลูชันที่เชื่อมโยงโดย print-css.rocks มีราคา $ 2,950.00 สำหรับ PDFreactor, $ 3800 สำหรับ Prince และ $ 5,000.00 สำหรับเสาอากาศ House Formatter V7 และ Weasyprint สำหรับ Python
MDave

6

คุณสามารถใช้คุณลักษณะการพิมพ์เป็น PDF ของ Google Chrome ได้จากโหมดหัวขาด ฉันพบว่านี่เป็นวิธีที่ง่ายที่สุด แต่แข็งแกร่งที่สุด

var url = "/programming/564650/convert-html-to-pdf-in-net";
var chromePath = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe";
var output = Path.Combine(Environment.CurrentDirectory, "printout.pdf");
using (var p = new Process())
    {
        p.StartInfo.FileName = chromePath;
        p.StartInfo.Arguments = $"--headless --disable-gpu --print-to-pdf={output} {url}";
        p.Start();
        p.WaitForExit();
    }

นี่มันเจ๋งจริงๆสำหรับเซิร์ฟเวอร์และ vps ที่เป็นเจ้าของ ขอบคุณสำหรับการแบ่งปัน.
mjb

เพื่อให้ ASP.NET ใน IIS สามารถรันโปรแกรมภายนอกที่มีสิทธิ์การเข้าถึงการเขียนแอพพลิเคชั่น> การตั้งค่าล่วงหน้า> identity> ตั้งค่าเป็น "LocalSystem"
mjb

4

ABCpdf.NET (http://www.websupergoo.com/abcpdf-5.htm)

เราใช้และแนะนำ

องค์ประกอบที่ดีมากมันไม่เพียง แต่แปลงหน้าเว็บเป็น PDF เหมือนรูปภาพ แต่แปลงข้อความรูปภาพการจัดรูปแบบและอื่น ๆ ...

มันไม่ฟรี แต่มันราคาถูก


10
เราใช้มันมาสองสามปีแล้วและพบว่ามันค่อนข้างเจ็บปวดที่จะใช้ การสนับสนุนที่ไม่ดีเป็นผลมาจาก wrapper รอบ ๆ เครื่องมือการเรนเดอร์ IE คุณภาพของภาพและการบีบอัดที่ จำกัด ความสามารถในการปรับแต่งการร้องขอที่ทำขึ้นเพื่อจัดการกับสถานการณ์การใช้งานขั้นสูง (เช่นการจัดหาคุกกี้และส่วนหัวคำขอ) ฉันคิดว่ามันทำงานได้ดีขึ้นอยู่กับสิ่งที่คุณต้องการให้ทำ
moribvndvs

3
+1 สำหรับ ABCPdf ผู้แสดงความคิดเห็นคนก่อนหน้านี้จะต้องไม่พูดคุยกับกลุ่มสนับสนุนเดียวกันกับที่ฉันทำ - พวกเขาเขียนฉันเสมอและมักจะมีทางออกสำหรับปัญหาใด ๆ ที่เรามีอยู่เสมอ ตอนนี้พวกเขาสนับสนุนการใช้ Gecko เป็นเอ็นจิ้นการแสดงผลแทน IE คุณสามารถเลือกสิ่งที่คุณต้องการในเวลาทำงาน ABC ให้คุณทำทุกอย่างที่ PDF อนุญาต
Steve

12
การสนับสนุนแพงเกินไปและไม่ดี ฉันไม่แนะนำ abcPDF เลย
Vivek

ฉันใช้มันมากเกินไปในช่วง 6 ปีที่ผ่านมาและเพื่อความเป็นธรรม
toepoke.co.uk

ไม่ใช่คำตอบนี้ใช่หรือไม่เป็นคำสั่งที่ซ้อนทับอีกครั้งของ ฉันหมายถึงคนอื่น ๆ ที่มีส่วนเกี่ยวข้องกับโปรแกรมอย่างน้อยก็ให้โค้ดตัวอย่างสองสามบรรทัด
usr-local-ΕΨΗΕΛΩΝ

4

ฉันเป็นผู้เขียนแพ็คเกจ Rotativa อนุญาตให้สร้างไฟล์ PDF โดยตรงจากมุมมองมีดโกน:

https://www.nuget.org/packages/Rotativa/

ใช้งานได้เล็กน้อยและคุณสามารถควบคุมเค้าโครงได้อย่างเต็มที่เนื่องจากคุณสามารถใช้มุมมองมีดโกนกับข้อมูลจาก Model และ ViewBag container ของคุณ

ฉันพัฒนาเวอร์ชัน SaaS บน Azure มันช่วยให้ใช้งานได้ง่ายขึ้นจาก WebApi หรือแอป. สุทธิ, บริการ, เว็บไซต์ Azure, Azure webjob ทุกอย่างที่ทำงาน. Net

http://www.rotativahq.com/

บัญชีฟรีใช้ได้


สิ่งนี้พึ่งพา Itextsharp หรือไม่และคุณจำเป็นต้องมีใบอนุญาตสำหรับ itextsharp เพื่อใช้งานหรือไม่
คาห์ Armantrout

2
@MicahArmantrout ไม่ไม่ มันใช้ wkhtmltopdf.exe เพื่อสร้างไฟล์ PDF ไม่ต้องมีใบอนุญาต
Giorgio Bozio

@MicahArmantrout, iTextSharp ไม่ใช่ GNU GPL หรือไม่ gnu.org/licenses/agpl.html
ซิงห์

เราไม่แนะนำให้ใช้เวอร์ชันก่อนหน้า iText (Sharp) 5 ทั้งทางด้านเทคนิคและเหตุผลทางกฎหมาย stackoverflow.com/questions/8517776/itexsharp-license
Micah Armantrout

4

ด้านล่างคือตัวอย่างของการแปลง html + css เป็น PDF โดยใช้ iTextSharp (iTextSharp + itextsharp.xmlworker)

using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;


byte[] pdf; // result will be here

var cssText = File.ReadAllText(MapPath("~/css/test.css"));
var html = File.ReadAllText(MapPath("~/css/test.html"));

using (var memoryStream = new MemoryStream())
{
        var document = new Document(PageSize.A4, 50, 50, 60, 60);
        var writer = PdfWriter.GetInstance(document, memoryStream);
        document.Open();

        using (var cssMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(cssText)))
        {
            using (var htmlMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)))
            {
                XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, htmlMemoryStream, cssMemoryStream);
            }
        }

        document.Close();

        pdf = memoryStream.ToArray();
}

โปรดทราบว่า iTextSharp ทำงานร่วมกับ XHtml และค่อนข้างไวต่อคุณภาพของ html ของคุณ มันจะแตกที่ SelectPdf และ HiqPdf จะไม่
โหด

3

ขึ้นอยู่กับข้อกำหนดอื่น ๆ ที่คุณมี

วิธีแก้ปัญหาที่เรียบง่าย แต่ไม่สามารถนำไปใช้ได้อย่างง่ายดายคือการใช้การควบคุมเว็บเบราเซอร์เพื่อโหลด Html จากนั้นใช้การพิมพ์วิธีการพิมพ์ไปยังเครื่องพิมพ์ PDF ที่ติดตั้งภายในเครื่อง มีเครื่องพิมพ์ PDF ฟรีมากมายและตัวควบคุมเว็บเบราว์เซอร์เป็นส่วนหนึ่งของกรอบงาน. Net

แก้ไข: ถ้าคุณ Html เป็น XHtml คุณสามารถใช้PDFizerในการทำงาน


3

PDF Visionดีมาก อย่างไรก็ตามคุณต้องมี Full Trust เพื่อใช้งาน ฉันส่งอีเมลแล้วและถามว่าทำไม HTML ของฉันจึงไม่ถูกแปลงบนเซิร์ฟเวอร์ แต่ทำงานได้ดีบน localhost



2

ฉันกำลังมองหาสิ่งนี้อยู่พักหนึ่ง ฉันวิ่งเข้าไปใน HTMLDOC http://www.easysw.com/htmldoc/ซึ่งเป็นแอปเปิดบรรทัดคำสั่งฟรีที่ใช้ไฟล์ HTML เป็นอาร์กิวเมนต์และแยก PDF ออกมา มันใช้งานได้สำหรับฉันค่อนข้างดีสำหรับโครงการด้านข้างของฉัน แต่ทุกอย่างขึ้นอยู่กับสิ่งที่คุณต้องการจริงๆ

บริษัท ที่ขายไบนารีที่รวบรวมไว้ แต่คุณมีอิสระในการดาวน์โหลดและรวบรวมจากแหล่งต่างๆและใช้งานได้ฟรี ฉันจัดการเพื่อรวบรวมการแก้ไขล่าสุดสวย (สำหรับรุ่น 1.9) และฉันตั้งใจที่จะปล่อยตัวติดตั้งไบนารีในสองสามวันดังนั้นถ้าคุณสนใจฉันสามารถให้ลิงค์ไปทันทีที่ฉันโพสต์มัน

แก้ไข (2/25/2014): ดูเหมือนว่าเอกสารและไซต์ถูกย้ายไปที่http://www.msweet.org/projects.php?Z1


สวัสดีคุณสามารถให้ลิงค์และคำแนะนำเกี่ยวกับวิธีการใช้กับ c # asp.net ขอบคุณ
user287745

static.persisted butts.com/htmldoc_1.9.1586-setup.exe โปรดระวังว่านี่เป็นโปรแกรมบรรทัดคำสั่ง คุณต้องดำเนินการจากภายในแอปพลิเคชันของคุณเพื่อให้ทำงานได้ คุณสามารถค้นหาเอกสารประกอบการโต้แย้งและคำเตือนได้จากบทที่ 4 เมื่อ: easysw.com/htmldoc/documentation.php
enriquein

ฉันไม่แน่ใจว่าสิ่งนี้มีประโยชน์เพียงใดในทุกวันนี้ แต่ถ้ามันช่วยคุณได้: dropbox.com/s/9kfn3ttoxs0fiar/htmldoc_1.9.1586-setup.exe
enriquein

เว็บไซต์ไม่ทำงานอีกต่อไป
Tom Winter

2

คุณต้องใช้ไลบรารีเชิงพาณิชย์หากคุณต้องการการแสดงผล html ที่สมบูรณ์แบบในรูปแบบ pdf

ExpertPdf Html เป็น Pdf Converterนั้นใช้งานง่ายมากและรองรับ html5 / css3 ล่าสุด คุณสามารถแปลง URL ทั้งหมดเป็น pdf:

using ExpertPdf.HtmlToPdf; 
byte[] pdfBytes = new PdfConverter().GetPdfBytesFromUrl(url);

หรือสตริง html:

using ExpertPdf.HtmlToPdf; 
byte[] pdfBytes = new PdfConverter().GetPdfBytesFromHtmlString(html, baseUrl);

คุณยังมีทางเลือกอื่นในการบันทึกเอกสาร pdf ที่สร้างโดยตรงไปยังสตรีมของไฟล์บนดิสก์


คุณไม่จำเป็นต้องใช้ห้องสมุดเชิงพาณิชย์หากคุณต้องการการแสดงผล html ที่สมบูรณ์แบบในรูปแบบ pdf
obayhan

ฉันเริ่มเชื่อเรื่องนี้ ฉันได้ลองของฟรี 5 อย่างและพวกเขาทั้งหมดมีสิ่งหนึ่งที่ทำลายมันให้ฉัน ตั้งแต่การสำลักไปจนถึงเพจที่อยู่นอกเหนือโลกสวัสดีที่เรียบง่ายไปจนถึงการดูแย่มาก - ฉันคิดว่าฉันจะต้องใช้เงินในการแปลงจริง ตัวอย่างของผลิตภัณฑ์เชิงพาณิชย์แต่ละตัวนั้นใช้งานได้จริงตามที่คุณคาดหวังว่า PDF จะออกมา
สมุนไพรฮัน

@obayhan - ฉันอยากจะเชื่อคุณ บางทีคุณอาจแบ่งปันลิงค์ไปยังเครื่องมืออะไรก็ได้ที่คุณกำลังหาอยู่
Peter Wone

@ PeterWone ด้านบนมีตัวเลือกโอเพนซอร์สมากมายที่คุณสามารถดูได้อย่างง่ายดาย การขอให้ใครบางคนแบ่งปันสิ่งเดียวกันเป็นเพียงการขโมยเวลา แต่ถ้าคุณลองพวกเขาทั้งหมดและไม่พอใจฉันหวังว่าคุณจะแบ่งปันความคิดเห็นของคุณเกี่ยวกับสิ่งที่คุณไม่พอใจและบางทีมันอาจช่วยพัฒนาความรู้ให้มากขึ้น
obayhan

@obayhan - ทำซ้ำสิ่งที่คนอื่นทำไปแล้วทำไม? พวกเขาแบ่งออกเป็นสามประเภท: ไม่ฟรีจริงๆพึ่งพาไม่ได้ยอมรับเช่น wkhtmltopdf หรือ IE9 และ HTML Renderer สำหรับ PDFSharp HR สำหรับ PDF # เป็น C บริสุทธิ์เพียงตัวเดียวและทำงานได้อย่างน่ากลัวในการให้เลขหน้า - มันแสดงผลหน้ายาวหนึ่งหน้าและตัดมันบ่อยครั้งที่ตัดผ่านบรรทัดข้อความ ถ้าฉันสามารถหาเวลาเขียนตัวแปลใหม่ได้อย่างสมบูรณ์ HR สำหรับ PDF # จะชนะด้วย: มันรวดเร็วฟรีและไม่มีการพึ่งพา แต่นั่นจะเป็นตัวแสดงผลใหม่ทั้งหมดฉันกลัว
Peter Wone

2

นี่เป็นห้องสมุดฟรีและทำงานได้ง่ายมาก: OpenHtmlToPdf

string timeStampForPdfName = DateTime.Now.ToString("yyMMddHHmmssff");

string serverPath = System.Web.Hosting.HostingEnvironment.MapPath("~/FolderName");
string pdfSavePath = Path.Combine(@serverPath, "FileName" + timeStampForPdfName + ".FileExtension");


//OpenHtmlToPdf Library used for Performing PDF Conversion
var pdf = Pdf.From(HTML_String).Content();

//FOr writing to file from a ByteArray
 File.WriteAllBytes(pdfSavePath, pdf.ToArray()); // Requires System.Linq


2

ดูเหมือนว่าจนถึงตอนนี้ทางออกที่ดีที่สุดของ. NET ฟรีคือไลบรารีทำลายความเสียหายซึ่งเป็นตัวล้อมรอบไลบรารีดั้งเดิมของwkhtmltopdf

ตอนนี้ฉันใช้เวอร์ชันแบบเธรดเดียวเพื่อแปลงสตริง HTML สองสามพันเป็นไฟล์ PDF และดูเหมือนว่าจะใช้งานได้ดี มันควรที่จะทำงานในสภาพแวดล้อมแบบมัลติเธรด (เช่น IIS) แต่ฉันยังไม่ได้ทดสอบ

นอกจากนี้เนื่องจากฉันต้องการใช้รุ่นล่าสุดของwkhtmltopdf (0.12.5 ในขณะที่เขียน) ฉันจึงดาวน์โหลด DLL จากเว็บไซต์ทางการคัดลอกไปยังรูทโปรเจคของฉันตั้งค่าคัดลอกเป็นเอาท์พุทเป็นจริงและเริ่มต้นไลบรารีเช่น ดังนั้น:

var dllDir = AppDomain.CurrentDomain.BaseDirectory;
Converter = new StandardConverter(new PdfToolset(new StaticDeployment(dllDir)));

รหัสด้านบนจะมีลักษณะเหมือนกันกับ "wkhtmltox.dll" ดังนั้นอย่าเปลี่ยนชื่อไฟล์ ฉันใช้ DLL รุ่น 64 บิต

ตรวจสอบให้แน่ใจว่าคุณอ่านคำแนะนำสำหรับสภาพแวดล้อมแบบมัลติเธรดเนื่องจากคุณจะต้องเริ่มต้นเพียงครั้งเดียวต่อวงจรชีวิตของแอปดังนั้นคุณจะต้องใส่ไว้ในรูปแบบซิงเกิลหรืออะไรบางอย่าง


1

นี่คือเสื้อคลุมสำหรับ wkhtmltopdf.dll โดย pruiz

และwrapperสำหรับ wkhtmltopdf.exe โดย Codaxy
- บน nugetด้วย


มีเอกสารหรือแบบฝึกหัดใดที่ใช้งานอย่างไร มีซอร์สโค้ดเพียงอย่างเดียวโดยไม่มีเอกสารใด ๆ
Burjua

1
ดาวน์โหลดรหัสและดูการทดสอบหน่วย นั่นควรให้ตัวอย่างการใช้งานที่ดีแก่คุณ
Garfield

ไม่ได้ช่วยจริง ๆ แล้วที่จริงฉันไม่สามารถแม้แต่จะทำการทดสอบวิธีการทำงานของ pruiz มันก็บอกว่าNo tests are run because no tests are loaded or the selected tests are disabledgoogling ก็ไม่ได้ช่วยอะไรเช่นกัน
บูร์จัว

@Burjua สิ่งนี้เกี่ยวข้องกับเวอร์ชันของนักวิ่งทดสอบที่คุณใช้อยู่ อย่างไรก็ตามลองเปิดปัญหาที่ไซต์โครงการ github ของฉันและฉันจะพยายามช่วยคุณ ..
Pablo Ruiz García

สวัสดี wrapper นี้ใช้งานได้ แต่ไม่แสดงแผนภูมิวงกลมของ Google ของฉัน ดังนั้นจนกว่าฉันจะได้รับการแก้ไขนี้ฉันจะต้องหาทางออกอื่น
Andre Lombaard

1

เครื่องมือที่ดีที่สุดฉันได้พบและใช้สำหรับการสร้างรูปแบบไฟล์ PDF ของ JavaScript และรูปแบบการแสดงผลมุมมองหรือหน้า html เป็นphantomJS

ดาวน์โหลดไฟล์. exe พร้อมฟังก์ชั่น rasterize.js ที่อยู่ในรูทของ exe ของโฟลเดอร์ตัวอย่างและใส่เข้าไปในโซลูชัน

มันยังช่วยให้คุณสามารถดาวน์โหลดไฟล์ในรหัสใด ๆ โดยไม่ต้องเปิดไฟล์นั้นและยังอนุญาตให้ดาวน์โหลดไฟล์เมื่อมีการใช้สไตล์และ jquery พิเศษ

รหัสต่อไปนี้สร้างไฟล์ PDF:

public ActionResult DownloadHighChartHtml()
{
    string serverPath = Server.MapPath("~/phantomjs/");
    string filename = DateTime.Now.ToString("ddMMyyyy_hhmmss") + ".pdf";
    string Url = "http://wwwabc.com";

    new Thread(new ParameterizedThreadStart(x =>
    {
        ExecuteCommand(string.Format("cd {0} & E: & phantomjs rasterize.js {1} {2} \"A4\"", serverPath, Url, filename));
                           //E: is the drive for server.mappath
    })).Start();

    var filePath = Path.Combine(Server.MapPath("~/phantomjs/"), filename);

    var stream = new MemoryStream();
    byte[] bytes = DoWhile(filePath);

    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=Image.pdf");
    Response.OutputStream.Write(bytes, 0, bytes.Length);
    Response.End();
    return RedirectToAction("HighChart");
}



private void ExecuteCommand(string Command)
{
    try
    {
        ProcessStartInfo ProcessInfo;
        Process Process;

        ProcessInfo = new ProcessStartInfo("cmd.exe", "/K " + Command);

        ProcessInfo.CreateNoWindow = true;
        ProcessInfo.UseShellExecute = false;

        Process = Process.Start(ProcessInfo);
    }
    catch { }
}


private byte[] DoWhile(string filePath)
{
    byte[] bytes = new byte[0];
    bool fail = true;

    while (fail)
    {
        try
        {
            using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                bytes = new byte[file.Length];
                file.Read(bytes, 0, (int)file.Length);
            }

            fail = false;
        }
        catch
        {
            Thread.Sleep(1000);
        }
    }

    System.IO.File.Delete(filePath);
    return bytes;
}

คุณสามารถแบ่งปันซอร์สโค้ดแบบเต็มของคุณได้หรือไม่? ฉันยังใหม่กับ C # ดังนั้นฉันจึงติดอยู่แม้ในการนำเข้า
Sibi John

1

นอกจากนี้คุณยังสามารถตรวจสอบSpire ได้ด้วยซึ่งจะช่วยให้คุณสร้างHTML to PDFรหัสง่ายๆได้

 string htmlCode = "<p>This is a p tag</p>";

//use single thread to generate the pdf from above html code
Thread thread = new Thread(() =>
{ pdf.LoadFromHTML(htmlCode, false, setting, htmlLayoutFormat); });
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();

// Save the file to PDF and preview it.
pdf.SaveToFile("output.pdf");
System.Diagnostics.Process.Start("output.pdf");

บทความโดยละเอียด: วิธีการแปลง HTML เป็น PDF ใน asp.net C #


Spire สร้างไฟล์ PDF ที่เป็นเพียงภาพ css บางตัวไม่ถูกต้องเช่นละเว้นฟอนต์ตัวหนา
โหด

ดูคำตอบสำหรับคำถามของฉันเกี่ยวกับการสร้าง PDF เป็นรูปภาพ: e-iceblue.com/forum/nuget-pdf-as-non-image-t6710.html
Savage

สไปร์เป็นอันดับ 4 ที่ฉันได้ลองจากหน้านี้และฉันคิดว่ามันดีที่สุดขอบคุณ
MDave

1

ในฐานะตัวแทนของซอฟต์แวร์ HiQPdf ฉันเชื่อว่าทางออกที่ดีที่สุดคือ HiQPdf HTML เพื่อแปลง PDF สำหรับ NET มันมีเครื่องมือแสดงผล HTML5, CSS3, SVG และ JavaScript ที่ทันสมัยที่สุดในตลาด นอกจากนี้ยังมีไลบรารี HTML เป็น PDF รุ่นฟรีซึ่งคุณสามารถใช้สร้างหน้า PDF ได้ฟรีสูงสุด 3 หน้า รหัส C # ขั้นต่ำในการสร้าง PDF เป็นไบต์ [] จากหน้า HTML คือ:

HtmlToPdf htmlToPdfConverter = new HtmlToPdf();

// set PDF page size, orientation and margins
htmlToPdfConverter.Document.PageSize = PdfPageSize.A4;
htmlToPdfConverter.Document.PageOrientation = PdfPageOrientation.Portrait;
htmlToPdfConverter.Document.Margins = new PdfMargins(0);

// convert HTML to PDF 
byte[] pdfBuffer = htmlToPdfConverter.ConvertUrlToMemory(url);

คุณสามารถค้นหาตัวอย่างโดยละเอียดเพิ่มเติมทั้งสำหรับ ASP.NET และ MVC HiQPdf HTML เพื่อแปลงไฟล์ PDF ที่เก็บตัวอย่าง


1
สร้างผลลัพธ์ที่ดี แต่เช่น SelectPdf คุณสามารถสร้างเวลาสร้างและปรับขนาดแพ็คเกจได้ มันเกือบเป็นสองเท่าในการสร้าง Visual Studio ของฉัน ฉันยังมีเวลายากที่จะเติมหน้าของฉัน - html เล็กเกินไปตรงกลาง - ในแง่นั้น SelectPdf ทำงานได้ดีขึ้น
โหด

1
การเติมหน้าเว็บที่มีเนื้อหา HTML ขึ้นอยู่กับคุณสมบัติ HtmlToPdf.BrowserWidth โดยค่าเริ่มต้นคือ 1200 พิกเซล แต่คุณสามารถตั้งค่าเป็น 800 พิกเซลและ HTML ควรเติมทั้งหน้า PDF ให้สมบูรณ์ คุณสามารถค้นหาตัวอย่างสดและรหัสตัวอย่างได้ที่hiqpdf.com/demo/HtmlFittingAndScalingOptions.aspx
HiQPdf

1
ไม่มี. NET Core รองรับเช่นกัน
Taylor Buchanan

1

เป็นไปได้ว่าโครงการส่วนใหญ่จะใช้โปรแกรม C / C ++ แทนการใช้โซลูชัน C # ตั้งแต่เริ่มต้น ลองโครงการGotenberg

เพื่อทำการทดสอบ

docker run --rm -p 3000:3000 thecodingmachine/gotenberg:6

ตัวอย่าง Curl

curl --request POST \
    --url http://localhost:3000/convert/url \
    --header 'Content-Type: multipart/form-data' \
    --form remoteURL=https://brave.com \
    --form marginTop=0 \
    --form marginBottom=0 \
    --form marginLeft=0 \
    --form marginRight=0 \
    -o result.pdf

C # sample.cs

using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.IO;
using static System.Console;

namespace HelloWorld
{
    class Program
    {
        public static async Task Main(string[] args)
        {
            try
            {
                var client = new HttpClient();            
                var formContent = new MultipartFormDataContent
                    {
                        {new StringContent("https://duckduckgo.com/"), "remoteURL"},
                        {new StringContent("0"), "marginTop" }
                    };
                var result = await client.PostAsync(new Uri("http://localhost:3000/convert/url"), formContent);
                await File.WriteAllBytesAsync("duckduck.com.pdf", await result.Content.ReadAsByteArrayAsync());
            }
            catch (Exception ex)
            {
                WriteLine(ex);
            }
        }
    }
}

เพื่อรวบรวม

csc sample.cs -langversion:latest -reference:System.Net.Http.dll && mono ./sample.exe

0

ลองใช้PDF Duo .Netการแปลงองค์ประกอบสำหรับการแปลงHTML เป็น PDF จากแอปพลิเคชันASP.NETโดยไม่ต้องใช้ DLLs เพิ่มเติม

คุณสามารถส่งสตริงหรือไฟล์ HTML หรือสตรีมเพื่อสร้าง PDF ใช้รหัสด้านล่าง (ตัวอย่าง C #):

string file_html = @"K:\hdoc.html";   
string file_pdf = @"K:\new.pdf";   
try   
{   
    DuoDimension.HtmlToPdf conv = new DuoDimension.HtmlToPdf();   
    conv.OpenHTML(file_html);   
    conv.SavePDF(file_pdf);   
    textBox4.Text = "C# Example: Converting succeeded";   
}   

ตัวอย่างข้อมูล + C # / VB คุณสามารถดูได้ที่: http://www.duodimension.com/html_pdf_asp.net/component_html_pdf.aspx


1
รายงาน BitDefender: "ตรวจพบมัลแวร์! การเข้าถึงหน้านี้ถูกบล็อก" ฉันไม่มีความเห็นว่ารายงานนี้เป็นของแท้หรือไม่ก็ตาม
GeoffM

0

การแปลง HTML เป็น PDF ใน C # ใช้ ABCpdf

ABCpdf สามารถใช้ประโยชน์จากเอ็นจิ้นการแสดงผล Gecko หรือ Trident ดังนั้นตาราง HTML ของคุณจะมีลักษณะเหมือนที่ปรากฏใน FireFox และ Internet Explorer

มีตัวอย่างออนไลน์ของ ABCpdf ที่ www.abcpdfeditor.com คุณสามารถใช้สิ่งนี้เพื่อตรวจสอบว่าตารางของคุณจะแสดงผลเป็นอย่างไรก่อนโดยไม่จำเป็นต้องดาวน์โหลดและติดตั้งซอฟต์แวร์

สำหรับการแสดงผลหน้าเว็บทั้งหมดคุณจะต้องใช้ฟังก์ชัน AddImageUrl หรือ AddImageHtml แต่ถ้าสิ่งที่คุณต้องทำคือเพียงเพิ่มข้อความสไตล์ HTML จากนั้นคุณสามารถลองใช้ฟังก์ชัน AddHtml ดังต่อไปนี้:

Doc theDoc = new Doc();
theDoc.FontSize = 72;
theDoc.AddHtml("<b>Some HTML styled text</b>");
theDoc.Save(Server.MapPath("docaddhtml.pdf"));
theDoc.Clear();

ABCpdf เป็นชื่อซอฟต์แวร์เชิงพาณิชย์อย่างไรก็ตามรุ่นมาตรฐานสามารถขอรับได้ฟรีภายใต้ข้อเสนอพิเศษ


91
คุณควรเขียนคำตอบทั้งหมดที่คุณทำงานให้กับ websupergoo จากคำถามที่พบบ่อย: However, you must disclose your affiliation with the product in your answers. Also, if a huge percentage of your posts include a mention of your product, you're clearly here for the wrong reasons. คำตอบทั้งหมดของคุณเกี่ยวกับ ABCpdf
jgauffin

12
อุ๊ย! ฉันแนะนำ ABCpdf เพราะเป็นส่วนประกอบที่ฉันคุ้นเคย หากโพสต์ของฉันเกี่ยวข้องกับ PDF เป็นจำนวนมากมีเพียงเพราะฉันไม่สนับสนุนหัวข้อที่อยู่นอกพื้นที่ที่ฉันสนใจ ขอโทษ.
AffineMesh

ในการป้องกันโปสเตอร์เว็บไซต์ทำออกมาเป็นผลิตภัณฑ์ที่ค่อนข้างดี
Tom Winter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.