使用 iText7 和 htmlpdf 设置应用程序/创建者元数据

问题描述

我一直在使用 iText(在 .Net 上)一段时间,但最近才开始使用 htmlpdf 而不是手动构建文档。

在之前的项目中,我使用以下代码来设置文档元数据:

    document = new Document();
    m = new MemoryStream();
    writer = PdfWriter.GetInstance(document,m);
    
    document.AddTitle("Document Title");
    document.AddAuthor("Me");
    document.AddSubject("Document subject");
    document.AddCreator("My System");

效果很好。

当我第一次开始使用 pdfhtml 时,我注意到页面

被用作文档<a href="https://www.jb51.cc/tag/biaoti/" target="_blank" class="keywords">标题</a>(非常合理),但是我开始寻找一种<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>来设置其他元数据,例如作者和<a href="https://www.jb51.cc/tag/zhuti/" target="_blank" class="keywords">主题</a>。 <p>我开始阅读 iText pdfHTML 白皮书 <a href="https://itextpdf.com/sites/default/files/2018-12/pdfHTML-whitepaper-FINAL-ilovepdf-compressed.pdf" rel="nofollow noreferrer">here</a>。这提供了以下说明: <a href="https://i.stack.imgur.com/IolyF.png" rel="nofollow noreferrer"><p class="pic_center"><img src="https://i.stack.imgur.com/IolyF.png" alt="screenshot of iText documentation"></p></a></p> <p>这没有用。但是,我确实注意到一些 <meta> <a href="https://www.jb51.cc/tag/biaoji/" target="_blank" class="keywords">标记</a>值(例如视口设置)<a href="https://www.jb51.cc/tag/xianshi/" target="_blank" class="keywords">显示</a>在 PDF 文档<a href="https://www.jb51.cc/tag/shuxing/" target="_blank" class="keywords">属性</a>的“<a href="https://www.jb51.cc/tag/zidingyi/" target="_blank" class="keywords">自定义</a><a href="https://www.jb51.cc/tag/shuxing/" target="_blank" class="keywords">属性</a>”部分。</p> <p>通过一些试验和<a href="https://www.jb51.cc/tag/cuowu/" target="_blank" class="keywords">错误</a>,我找到了如何使用这样的 HTML <a href="https://www.jb51.cc/tag/biaoqian/" target="_blank" class="keywords">标签</a>设置大部分 PDF 元数据(结果请参见下面的屏幕截图):</p> <pre><code> <<a href="https://www.jb51.cc/tag/Meta/" target="_blank" class="keywords">Meta</a> name="author" content="Me" /> <<a href="https://www.jb51.cc/tag/Meta/" target="_blank" class="keywords">Meta</a> name="description" content="Document Subject" /> <<a href="https://www.jb51.cc/tag/Meta/" target="_blank" class="keywords">Meta</a> name="keywords" content="Keyword" /> <title>Document Title</title> </code></pre> <p>这很棒,而且比以编程方式设置值要好得多。</p> <p>但是,我无法计算出 Document.AddCreator() / pdf<a href="https://www.jb51.cc/tag/Meta/" target="_blank" class="keywords">Meta</a>Data.setCreator() 的等效项,它们通常在 PDF 文档<a href="https://www.jb51.cc/tag/shuxing/" target="_blank" class="keywords">属性</a>中<a href="https://www.jb51.cc/tag/xianshi/" target="_blank" class="keywords">显示</a>为“应用程序”。</p> <p>我尝试过使用 name="creator" 和 name="application" 的元<a href="https://www.jb51.cc/tag/biaoji/" target="_blank" class="keywords">标记</a>,但没有成功。</p> <p>有谁知道我该怎么做?所有这些元数据设置都记录在任何地方吗? (抱歉,我看过了!)</p> <p>谢谢。</p> <p><a href="https://i.stack.imgur.com/6IfKr.png" rel="nofollow noreferrer"><p class="pic_center"><img src="https://i.stack.imgur.com/6IfKr.png" alt="screenshot of PDF properties"></p></a></p>

解决方法

process = subprocess.run(bashCommand.split(),cwd='./out',shell=False) 正是您要找的。​​p>

application-name

PDF metadata