将pdf内容嵌入pdf层

问题描述

我刚刚注册。我尝试解决以下情况:

给出一个基本的pdf(一个简单的单一光栅图像),我想知道:

  • 创建一个pdf文件(最初为空),在其中创建一个图层,在其中嵌入input_pdf的栅格图像,并将该图层标记为可见且不可打印。
  • @H_404_7@

    有工具吗?

    感谢提示

    解决方法

    由于您未指定使用的语言或库,因此这是C#中的解决方案:

    // Extract the page content from the source file.
    FileStream stream = File.OpenRead("input.pdf");
    PDFFile source = new PDFFile(stream);
    PDFPageContent pageContent = source.ExtractPageContent(0);
    stream.Close();
    
    PDFFixedDocument document = new PDFFixedDocument();
    document.OptionalContentProperties = new PDFOptionalContentProperties();
    PDFPage page = document.Pages.Add();
    
    // Create an optional content group (layer) for the extracted page content.
    PDFOptionalContentGroup ocg = new PDFOptionalContentGroup();
    ocg.Name = "Embedded page";
    ocg.VisibilityState = PDFOptionalContentGroupVisibilityState.AlwaysVisible;
    ocg.PrintState = PDFOptionalContentGroupPrintState.NeverPrint;
    
    // Draw the extracted page content in the layer
    page.Canvas.BeginOptionalContentGroup(ocg);
    page.Canvas.DrawFormXObject(pageContent,page.Width,page.Height);
    page.Canvas.EndOptionalContentGroup();
    
    // Build the display tree for the optional content
    PDFOptionalContentDisplayTreeNode ocgNode = new PDFOptionalContentDisplayTreeNode(ocg);
    document.OptionalContentProperties.DisplayTree.Nodes.Add(ocgNode);
    
    using (FileStream output = File.Create("EmbedPageAsLayer.pdf"))
    {
        document.Save(output); 
    }
    

    可在此处找到输出的PDF文件:https://github.com/o2solutions/pdf4net/blob/master/GettingStarted/EmbedPageAsLayer/EmbedPageAsLayer.pdf