迁移指南
如何用 C# 从 BitMiracle Docotic PDF 迁移到 IronPDF
从BitMiracle Docotic PDF迁移到 IronPDF:完整的 C# 迁移指南
BitMiracle Docotic PDF 是一个广受好评的 .NET PDF 库,以其 100% 的托管代码架构和广泛的 PDF 编程操作能力而闻名。 然而,其模块化附加结构--需要单独的软件包来实现 HTML 到 PDF 的转换、布局功能和其他功能--增加了项目管理和许可的复杂性。 本综合指南提供了从BitMiracle Docotic PDF逐步迁移到IronPDF的路径--IronPDF 是一个统一的 .NET PDF 库,内置基于 Chromium 的 HTML 渲染功能,所有功能都包含在一个 NuGet 包中。
为什么要从BitMiracle Docotic PDF迁移到 IronPDF? 虽然BitMiracle Docotic PDF提供了强大的 PDF 操作功能,但有几个因素促使开发团队寻求具有更精简架构的替代产品。 ### 软件包架构比较 BitMiracle Docotic PDF 采用模块化附加方法,需要多个软件包才能实现全部功能: |方面|BitMiracle Docotic PDF|IronPDF| |--------|-------------|---------| |**HTML-to-PDF**|需要单独的插件 (HtmlToPdf)|内置核心功能| |**软件包结构**|核心 + 多个附加组件|单个 NuGet 软件包| |**许可模式**|按次许可|所有功能包括| |**API 复杂性**|每个附加组件都有独立的命名空间|统一 API| |**HTML 引擎**|Chromium (通过附加组件)|Chromium (内置)| |**社区规模**|较小|规模更大、资源更多| |**文档**|技术参考|广泛的教程| ### 功能对等 这两个库都支持全面的 PDF 功能: | 特征 |BitMiracle Docotic PDF|IronPDF| |---------|-------------|---------| |从零开始创建 PDF|✅|✅| |HTML 至 PDF|✅(需要插件)|✅(内置)| |URL 至 PDF|✅(需要插件)|✅(内置)| |PDF 操作|✅|✅| |文本提取|✅|✅| |合并/拆分|✅|✅| |数字签名|✅|✅| |加密|✅|✅| |表格填写|✅|✅| |符合 PDF/A 标准|✅|✅| ### 方法上的主要差异 BitMiracle Docotic PDF 使用基于画布的绘图和坐标定位(`canvas.DrawString(x, y, text)`),而IronPDF则利用 HTML/CSS 进行布局和定位。 这代表了一种模式的转变,简化了熟悉网络技术的开发人员的内容创建。 ## 迁移前准备 ### 前提条件 确保您的环境符合这些要求: - .NET Framework 4.6.2+ 或 .NET Core 3.1 / .NET 5-9 - Visual Studio 2019+ 或带有 C# 扩展的 VS Code - 访问 NuGet 包管理器 -IronPDF许可证密钥(可在[ironpdf.com](https://ironpdf.com/licensing/)免费试用) ### 审计BitMiracle Docotic PDF的使用情况 在解决方案目录中运行这些命令,以识别所有 Docotic.Pdf 引用: ```bash # Find all Docotic.Pdf usages in your codebase grep -r "using BitMiracle.Docotic" --include="*.cs" . grep -r "PdfDocument\|PdfPage\|PdfCanvas" --include="*.cs" . # Find NuGet package references grep -r "Docotic.Pdf" --include="*.csproj" . ``` ### 值得期待的重大变化 |变更|BitMiracle Docotic PDF|IronPDF|影响| |--------|-------------|---------|--------| |**HTML 渲染**|需要 HtmlToPdf 附加组件| 内置 |删除附加软件包| |**页面索引**|基于 0 (`Pages[0]`)|基于 0 (`Pages[0]`)|无需改动| |**坐标系**|左下方原点|HTML/CSS 流程|使用 CSS 进行定位| |**画布绘图**|<代码>PdfCanvas.DrawText()代码>page.GetText()pdf.ExtractAllText()新建 PdfDocument(path)PdfDocument.FromFile(路径)document.Save(路径)pdf.SaveAs(路径)new PdfDocument()new PdfDocument()新建 PdfDocument(path)PdfDocument.FromFile(路径)PdfDocument.Load(stream)PdfDocument.FromStream(流)PdfDocument.Load(bytes)PdfDocument.FromBinaryData(字节)document.Save(路径)pdf.SaveAs(路径)document.PageCountpdf.PageCountdocument.Dispose()HtmlConverter.Create(html).ToPdf()renderer.RenderHtmlAsPdf(html)HtmlConverter.Create(new Uri(filePath)).ToPdf()renderer.RenderHtmlFileAsPdf(path)HtmlConverter.Create(new Uri(url)).ToPdf()renderer.RenderUrlAsPdf(url)options.PageSize = PageSize.A4renderer.RenderingOptions.PaperSize = PdfPaperSize.A4options.PageMargins = new Margins(20)renderer.RenderingOptions.MarginTop = 20doc1.Append(doc2)PdfDocument.Merge(pdf1, pdf2)document.CopyPage(index)到新文档|<代码>pdf.CopyPages(start, end)代码>Hello World
This isHTML 至 PDFconversion.