簡體   English   中英

使用 iText7 C# 將 Javascript 添加到 PDF 文件

[英]Add Javascript to PDF file using iText7 C#

我正在嘗試使用 iText7 庫和 C# 將 javascript 添加到我的 PDF 文件中

目前,這是我的代碼......到目前為止還沒有完成

public FileResult Download(string id)
    {
        var fileSelect = _context.FileStores.SingleOrDefault(c => c.File_Id == id);
        
        string base64string = Convert.ToBase64String(fileSelect.File_Content, 0, fileSelect.File_Content.Length);


        using (MemoryStream stream = new System.IO.MemoryStream())
        {

            MemoryStream memory = new MemoryStream(fileSelect.File_Content);
            BinaryReader BRreader = new BinaryReader(memory);
            StringBuilder text = new StringBuilder();


            PdfReader reader = new PdfReader(memory);
            //FileStream output = new FileStream(@"Manual.pdf", FileMode.Create);

            PdfDocument Pdfdoc = new PdfDocument(reader);
            Document doc = new Document(Pdfdoc);
            PdfAction action = PdfAction.CreateJavaScript("var rightNow = new Date(); " +
                                                          "var endDate = new Date('May 03, 2021 10:00:00');" +
                                                          "if(rightNow.getTime() > endDate){" +
                                                          "app.alert('This Document has expired, please contact us for a new one');" +
                                                          "this.closeDoc();}");
            reader.Close();

            return File(memory, "application/pdf", "ExportData.pdf");
        }

我想將這個 javascript 添加到我的 PDF 並在完成添加 Javascript 后下載文件。有沒有人知道如何將 Javascript 添加到 pdf? 謝謝

您可以將 Javascript 片段添加為文檔級OpenAction ,以便在打開文檔時執行:

PdfReader reader = new PdfReader("input.pdf");
PdfWriter writer = new PdfWriter("output.pdf");

PdfDocument Pdfdoc = new PdfDocument(reader, writer);
PdfAction action = PdfAction.CreateJavaScript(
    "var rightNow = new Date(); " +
    "var endDate = new Date('May 03, 2021 10:00:00');" +
    "if(rightNow.getTime() > endDate){" +
    "app.alert('This Document has expired, please contact us for a new one');" +
    "this.closeDoc();}"
);
Pdfdoc.getCatalog().SetOpenAction(action);
Pdfdoc.Close();

Javascript 彈出窗口

以下代碼對我有用。 可以通過這種方式將多個腳本添加到同一個文檔中。

using var pdfReader = new PdfReader("input.pdf");
using var outputStream = new FileStream("output.pdf", FileMode.Create);
using var pdfWriter = new PdfWriter(outputStream);
using var outputPdfDocument = new PdfDocument(pdfReader, pdfWriter);

var outputJavaScriptNameTree = outputPdfDocument.GetCatalog().GetNameTree(PdfName.JavaScript);
outputJavaScriptNameTree.AddEntry(
    "Script1",
    PdfAction.CreateJavaScript("app.alert('Hello world!');").GetPdfObject());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM