IRONSOFTWAREHOME
视频

如何在 C# | IronPDF 中将 QR 码转换为 PDF

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

PDFmyURL 是一项基于云的 API 服务,旨在将 URL 和 HTML 内容转换为 PDF 文档。 该服务在外部服务器上处理所有转换,提供了一个直接的集成路径,只需最少的本地基础设施。 然而,对于处理敏感数据、需要离线功能或需要避免持续订阅成本的生产应用程序来说,这种依赖云的架构会带来很大的问题。

本指南提供了从PDFmyURL到IronPDF的完整迁移路径,为评估这一过渡的 .NET 专业开发人员提供了分步说明、代码比较和实用示例。

为什么要从PDFmyURL迁移

PDFmyURL 的云处理模式带来了开发团队必须考虑的几个挑战:

**隐私和数据安全:**您转换的每个文档都会传输到PDFmyURL的服务器并经过其服务器——敏感合同、财务报告和个人数据都在外部进行处理。

**持续订阅费用:**计划起价为$20/月(Starter,500 PDFs)、$40/月(Professional,2000 PDFs)和$70/月(Advanced,5000 PDFs),各层级不提供所有权。 这种订阅模式意味着无论使用情况如何都要持续支出。

**互联网依赖性:**每次转换都需要网络连接。 应用程序不能离线或在网络中断时处理 PDF。

**速率限制和节流:**在高峰使用期间,API 调用可能会受到节流,这可能会影响应用程序的性能。

**服务可用性:**您的应用程序依赖于第三方服务在线且功能正常。

供应商锁定: API 变更可能会在未事先通知的情况下破坏您的集成,需要被动地更新代码。

##IronPDF与 PDFmyURL:功能比较

了解架构差异有助于技术决策者评估迁移投资:

方面PDFmyURLIronPDF
处理地点外部服务器本地(您的服务器)
类型应用程序接口封装.NET 库
身份验证每次请求的 API 密钥一次性许可证密钥
网络要求每次转换仅初始设置
定价模式月度订阅($20–$70+)提供永久许可证
费用限制是(取决于计划)None
数据隐私外部发送的数据数据保持本地化
HTML/CSS/JS 支持服务器端渲染(W3C合规)完整的 Chromium 引擎
同步模式HTTP请求(网络绑定)同步和异步选项
PDF 操作有限的全套(合并、拆分、编辑)
使用案例少量应用大批量和企业

快速入门:PDFmyURL 到IronPDF的迁移

迁移工作可以通过以下基本步骤立即开始。

步骤1:安装IronPDF

PDFmyURL没有NuGet包——该服务是一个REST API,并且可选的PDFmyURL.NET.dll组件作为直接DLL下载(不在nuget.org上)。 大多数集成通过WebClient / HttpClient调用API,因此迁移主要涉及代码,而不是包引用。 如果您使用了PDFmyURL.NET.dll程序集,请在迁移后从您的项目中删除引用。

# Install IronPDF
dotnet add package IronPdf
SHELL

步骤 2:更新命名空间

用IronPDF替换PDFmyURL导入:

// Before:PDFmyURL— either plain HttpClient/WebClient against pdfmyurl.com/api,
// or the optional .NET component:
using PDFmyURLdotNET;          // only if you used PDFmyURL.NET.dll
using System.Net;               // WebClient / HttpClient

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
C#

步骤 3:初始化许可证

在应用程序启动时添加许可证初始化:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

代码迁移示例

将 URL 转换为 PDF

URL-to-PDF 操作演示了PDFmyURL和IronPDF之间基本的 API 差异。

PDFmyURL 方法:

//PDFmyURLREST API — no NuGet SDK. Docs: https://pdfmyurl.com/html-to-pdf-api
using System;
using System.Net;

class Example
{
    static void Main()
    {
        string license = "your-license-key";
        string url = "https://example.com";

        try
        {
            using (var client = new WebClient())
            {
                client.QueryString.Add("license", license);
                client.QueryString.Add("url", url);
                // PDF binary is returned in the response body
                client.DownloadFile("https://pdfmyurl.com/api", "output.pdf");
            }
        }
        catch (WebException ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}
C#

IronPDF 方法:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Example
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("output.pdf");
    }
}

PDFmyURL要求在每次转换时打开到url作为查询(或表单)参数,并将响应体写入磁盘。 错误根据HTTP状态码作为WebException浮现。

IronPDF简化为三行:创建一个SaveAs()方法。 不需要每次请求的凭据——许可证在应用程序启动时设置一次。

有关高级 URL-to-PDF 场景,请参阅 URL to PDF 文档

将HTML字符串转换为PDF

HTML 字符串转换清楚地显示了模式差异。

PDFmyURL 方法:

//PDFmyURLREST API — no NuGet SDK. Send the raw HTML in the `html` parameter.
// Docs: https://pdfmyurl.com/html-to-pdf-api
using System;
using System.Collections.Specialized;
using System.IO;
using System.Net;

class Example
{
    static void Main()
    {
        string license = "your-license-key";
        string html = "<html><body><h1>Hello World</h1></body></html>";

        try
        {
            using (var client = new WebClient())
            {
                var values = new NameValueCollection
                {
                    { "license", license },
                    { "html", html }
                };
                // POST form-encoded; response body is the PDF binary
                byte[] pdfBytes = client.UploadValues("https://pdfmyurl.com/api", "POST", values);
                File.WriteAllBytes("output.pdf", pdfBytes);
            }
        }
        catch (WebException ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}
C#

IronPDF 方法:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Example
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}

PDFmyURL在html表单参数中发送原始HTML到其API端点,并以响应体的形式返回渲染的PDF。 IronPDF的RenderHtmlAsPdf()使用Chromium渲染引擎本地处理所有内容。

探索 HTML 至 PDF 转换指南,了解更多选项。

带页面设置的 HTML 文件转换

配置纸张大小、方向和页边距需要在每个库中采用不同的方法。

PDFmyURL 方法:

//PDFmyURLREST API — no NuGet SDK. Page settings are sent as query/form parameters.
// Parameter reference: https://pdfmyurl.com/html-to-pdf-api
using System;
using System.Collections.Specialized;
using System.IO;
using System.Net;

class Example
{
    static void Main()
    {
        string license = "your-license-key";
        string html = File.ReadAllText("input.html");

        try
        {
            using (var client = new WebClient())
            {
                var values = new NameValueCollection
                {
                    { "license",     license },
                    { "html",        html },
                    { "page_size",   "A4" },
                    { "orientation", "landscape" },
                    { "top",         "10" },
                    { "unit",        "mm" }
                };
                byte[] pdfBytes = client.UploadValues("https://pdfmyurl.com/api", "POST", values);
                File.WriteAllBytes("output.pdf", pdfBytes);
            }
        }
        catch (WebException ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}
C#

IronPDF 方法:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Example
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");
        pdf.SaveAs("output.pdf");
    }
}

PDFmyURL通过添加类似于in)来配置页面。 IronPDF通过PdfPaperSize.A4的枚举以及以毫米为单位的整数边距值提供强类型属性。

##PDFmyURLAPI 到IronPDF映射参考

这种映射通过显示直接的 API 对应关系来加速迁移:

核心类/入口点

PDFmyURLIronPDF
WebClient / https://pdfmyurl.com/apiChromePdfRenderer
PDFmyURL.NET.dll的可选.NET组件)ChromePdfRenderer
表单/查询参数ChromePdfRenderOptions
HTTP响应体字节PdfDocument

方法

PDFmyURLIronPDF
WebClient.DownloadFile(".../api?license=...&url=...", file)renderer.RenderUrlAsPdf(url).SaveAs(file)
带有html=参数的POST请求renderer.RenderHtmlAsPdf(html)
File.ReadAllText("input.html")然后POST html=renderer.RenderHtmlFileAsPdf(path)
pdf.ConvertURL(url, file) (PDFmyURL.NET.dll)renderer.RenderUrlAsPdf(url).SaveAs(file)
pdf.ConvertHTML(html, file) (PDFmyURL.NET.dll)renderer.RenderHtmlAsPdf(html).SaveAs(file)
HTTP响应体(byte[]pdf.BinaryData
HTTP响应流new MemoryStream(pdf.BinaryData)

配置选项

PDFmyURL设置以表单/查询参数的形式在HTTP请求中传递。下表将真实的PDFmyURL参数名称映射到IronPDF的RenderingOptions

PDFmyURL参数IronPDF (渲染选项)
page_size=A4.PaperSize = PdfPaperSize.A4
page_size=Letter.PaperSize = PdfPaperSize.Letter
orientation=landscape.PaperOrientation = PdfPaperOrientation.Landscape
orientation=portrait.PaperOrientation = PdfPaperOrientation.Portrait
top=10&unit=mm.MarginTop = 10
bottom=10&unit=mm.MarginBottom = 10
left=10&unit=mm.MarginLeft = 10
right=10&unit=mm.MarginRight = 10
header=<html>.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = html }
footer=<html>.HtmlFooter = new HtmlHeaderFooter { HtmlFragment = html }
javascript_time=500.RenderDelay = 500
no_javascript=true.EnableJavaScript = false
css_media_type=print.CssMediaType = PdfCssMediaType.Print

身份验证比较

PDFmyURLIronPDF
每个API请求上的license=<key>查询/表单参数IronPdf.License.LicenseKey = "LICENSE-KEY"
每次请求的许可令牌启动时一次性
每次通话都需要全球设置一次

常见迁移问题和解决方案

问题1:许可令牌vs许可密钥

**PDFmyURL:**每个API请求需要license令牌。

**解决方案:**在应用程序启动时设置一次IronPDF许可证:

// PDFmyURL: license token per request
client.QueryString.Add("license", "your-license-key");

// IronPDF: One-time license at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Set once, typically in Program.cs or Startup.cs

问题 2:页眉/页脚中的占位符语法

**PDFmyURL:**在header / [topage]等令牌(请咨询实时API参考以获取规范的令牌列表)。

**解决方案:**在HtmlHeaderFooter.HtmlFragment内更新到IronPDF的占位符格式:

// PDFmyURL: "Page [page] of [topage]"
// IronPDF: "Page {page} of {total-pages}"

第 3 期:异步模式

PDFmyURL: 是一次远程HTTP调用; 通常使用pdfmyurl.com/api调用。

解决方案: IronPDF默认是进程内和同步的; 如有需要,请对 async 进行包装:

// PDFmyURL: HTTP request to the public endpoint
var response = await http.PostAsync("https://pdfmyurl.com/api", form);

// IronPDF: Sync by default, wrap for async
var pdf = await Task.Run(() => renderer.RenderUrlAsPdf(url));

问题 4:错误处理

PDFmyURL: HTTP级别的故障(无效许可、速率限制、网络错误、服务不可用)作为WebException / 非成功状态代码浮现。

解决方案: 更新处理IronPDF类型化异常的catch块:

// PDFmyURL: WebException from the HTTP call
catch (WebException e) { ... }

// IronPDF: Typed exceptions
catch (IronPdf.Exceptions.IronPdfRenderingException e) { ... }

第 5 期:配置模式

PDFmyURL: 配置作为表单/查询参数传递在HTTP请求中。

**解决方案:**使用强类型的 RenderingOptions 属性:

// PDFmyURL: form/query parameters
values.Add("page_size", "A4");
values.Add("orientation", "landscape");

// IronPDF: Properties with enums
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;

PDFmyURL迁移清单

迁移前任务

审核您的代码库,以确定PDFmyURL的所有使用情况:

# FindPDFmyURLendpoint and component usage
grep -r "pdfmyurl.com/api\|PDFmyURLdotNET\|new PDFmyURL(" --include="*.cs" .

# Find license-token references
grep -r "license=\|licensekey" --include="*.cs" --include="*.json" --include="*.config" .

# Find placeholder patterns to migrate
grep -r "\[page\]\|\[topage\]" --include="*.cs" .
SHELL

记录当前使用的配置参数(页面大小、方向、边距、页眉/页脚等)。 使用环境变量规划许可证密钥存储。

代码更新任务

  1. 如果使用过,请移除可选的PDFmyURL.NET.dll引用(没有要卸载的NuGet包)
  2. 安装IronPDF NuGet包 3.更新所有命名空间导入
  3. 将每次请求的IronPdf.License.LicenseKey
  4. 将表单/查询参数转换为RenderingOptions属性
  5. 更新页眉/页脚中的占位符语法(例如[page][topage]{total-pages}
  6. 更新错误处理代码(WebException → 类型化的IronPDF异常) 8.在启动时添加IronPDF许可证初始化功能

迁移后测试

迁移后,验证这些方面:

  • 测试 PDF 输出质量是否符合预期
  • 验证异步模式是否正常工作
  • 将渲染保真度与以前的输出进行比较
  • 测试所有模板变体是否能正确呈现
  • 验证页面设置(大小、方向、页边距)
  • 如果部署到 Linux 服务器,请安装 Linux 依赖项

迁移到IronPDF的主要优势

从PDFmyURL迁移到IronPDF有几个关键优势:

**完全隐私:**文档绝不会离开您的服务器。 所有处理都在本地进行,消除了敏感内容的数据安全顾虑。

**一次性费用:**永久授权选项免除定期订阅费用。 无论使用量多少,都不再需要每月付款。

**离线功能:**完成初始设置后,无需网络连接即可工作。网络中断不会影响 PDF 生成。

**无速率限制:**处理无限量文档,无需担心限速问题。

**更低的延迟:**没有网络开销意味着更快的转换速度,尤其适用于高容量应用。

**完全控制:**您控制处理环境,而不是第三方服务。

**现代 Chromium 引擎:**完全支持 CSS3 和 JavaScript,采用与 Chrome 浏览器相同的渲染引擎。

**活跃开发:**IronPDF的定期更新确保与现代.NET版本兼容。

请注意: PDFmyURL是其各自所有者的注册商标。 本网站与PDFmyURL无关联、认可或赞助。 所有产品名称、徽标和品牌均为各自所有者的财产。 比较仅供参考,反映撰写时公开可用的信息。
Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户