ASP.NET Core 可编辑的 PDF 保存
创始人
2024-09-15 05:31:13
0

要实现ASP.NET Core中可编辑的PDF保存功能,可以使用iTextSharp库来处理PDF文件。以下是一个简单的代码示例:

  1. 首先,确保您已安装iTextSharp库。可以通过NuGet包管理器控制台或在项目的.csproj文件中添加以下行来安装它:

  

  1. 创建一个名为"PdfService.cs"的类,并添加以下代码:
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;

public class PdfService
{
    public void SaveEditablePdf(string sourceFilePath, string targetFilePath)
    {
        using (var reader = new PdfReader(sourceFilePath))
        {
            using (var outputStream = new FileStream(targetFilePath, FileMode.Create))
            {
                var stamper = new PdfStamper(reader, outputStream);

                var form = stamper.AcroFields;
                var fieldNames = form.Fields.Keys;

                foreach (var fieldName in fieldNames)
                {
                    form.SetField(fieldName, "Your Value"); // 设置字段的值
                    form.SetFieldProperty(fieldName, "setfflags", PdfFormField.FF_READ_ONLY, null); // 设置字段为只读
                }

                stamper.FormFlattening = false; // 保留表单编辑功能

                stamper.Close();
            }
        }
    }
}
  1. 在需要保存可编辑PDF的控制器或页面中,使用以下代码调用上述服务:
public IActionResult SaveEditablePdf()
{
    var sourceFilePath = "path/to/source.pdf"; // 源PDF文件路径
    var targetFilePath = "path/to/target.pdf"; // 保存的目标PDF文件路径

    var pdfService = new PdfService();
    pdfService.SaveEditablePdf(sourceFilePath, targetFilePath);

    return Content("Editable PDF saved successfully!");
}

请注意,上述代码示例仅涵盖了基本的操作。您可以根据自己的需求进行更改和扩展。

相关内容

热门资讯

避免在粘贴双引号时向VS 20... 在粘贴双引号时向VS 2022添加反斜杠的问题通常是由于编辑器的自动转义功能引起的。为了避免这个问题...
安装apache-beam==... 出现此错误可能是因为用户的Python版本太低,而apache-beam==2.34.0需要更高的P...
Android Recycle... 要在Android RecyclerView中实现滑动卡片效果,可以按照以下步骤进行操作:首先,在项...
安装了Anaconda之后找不... 在安装Anaconda后,如果找不到Jupyter Notebook,可以尝试以下解决方法:检查环境...
omi系统和安卓系统哪个好,揭... OMI系统和安卓系统哪个好?这个问题就像是在问“苹果和橘子哪个更甜”,每个人都有自己的答案。今天,我...
原生ios和安卓系统,原生对比... 亲爱的读者们,你是否曾好奇过,为什么你的iPhone和安卓手机在操作体验上有着天壤之别?今天,就让我...
Android - 无法确定任... 这个错误通常发生在Android项目中,表示编译Debug版本的Java代码时出现了依赖关系问题。下...
Android - NDK 预... 在Android NDK的构建过程中,LOCAL_SRC_FILES只能包含一个项目。如果需要在ND...
Akka生成Actor问题 在Akka框架中,可以使用ActorSystem对象生成Actor。但是,当我们在Actor类中尝试...
Agora-RTC-React... 出现这个错误原因是因为在 React 组件中使用,import AgoraRTC from “ago...