簡體   English   中英

如何將書簽從 xml 導入現有的 pdf?

[英]How to Import Bookmark from xml to existing pdf?

我目前正在處理 pdf 項目(dotnet/c#[ Itextsharp pdf ]),我想將書簽從一個 pdf 導出和導入到另一個 pdf(兩個 pdf 的內容相同,唯一的區別是帶書簽/不帶書簽,一個是正常的pdf 和另一個鏈接的 pdf)。 將書簽導出到 xml 工作正常,但我不知道將導出的書簽(xml)導入另一個 pdf。 任何機構都可以提出解決方案。

在這里我附上我的代碼。

        string inputpdf = "D:\\chapter1.pdf"; string outputbookmark="D:\\chapter1Bookmark.xml";
        PdfReader reader = new PdfReader(inputpdf);
        IList<Dictionary<string, object>> bookmarks = SimpleBookmark.GetBookmark(reader);
        using (StreamWriter Sw = new StreamWriter(outputbookmark))
        {
            SimpleBookmark.ExportToXML(bookmarks, Sw,"ISO8859-1", true);

        }
        reader.Close();

我的 xml 輸出文件是

<?xml version="1.0" encoding="ISO8859-1"?>
<Bookmark>
  <Title Color="0 0 0" Page="1 XYZ 36 806" Action="GoTo" >Introduction</Title>
  <Title Color="0 0 0" Page="1 XYZ 36 410" Action="GoTo" >Getting Started
    <Title Color="0 0 0" Page="1 XYZ 36 364" Action="GoTo" >Printing a test page</Title>
    <Title Color="0 0 0" Page="4 XYZ 36 740" Action="GoTo" >Accessing the novaPDF Printing Preferences &#8211; test the multiline bookmark detection option</Title>
    <Title Color="0 0 0" Page="5 XYZ 36 806" Action="GoTo" >Creating PDF Files</Title>
  </Title>
</Bookmark>

我的 PDF 文件可在

http://www.novapdf.com/uploads/novapdf_en/media_items/pdf-example-bookmarks.original.pdf

您當前正在使用exportToXml()方法(另請參閱exportToXml() ;我們目前在兩個不同的地方有 API 文檔)。

出於某種原因,您沒有找到importFromXML()方法(另請參閱importFromXML() )。 如果您有一個包含書簽的 XML 文件,例如:

<?xml version="1.0" encoding="ISO8859-1"?>
<Bookmark>
  <Title Color="0 0 0" Page="1 XYZ 36 806" Action="GoTo" >Introduction</Title>
  <Title Color="0 0 0" Page="1 XYZ 36 410" Action="GoTo" >Getting Started
    <Title Color="0 0 0" Page="1 XYZ 36 364" Action="GoTo" >Printing a test page</Title>
    <Title Color="0 0 0" Page="4 XYZ 36 740" Action="GoTo" >Accessing the novaPDF Printing Preferences &#8211; test the multiline bookmark detection option</Title>
    <Title Color="0 0 0" Page="5 XYZ 36 806" Action="GoTo" >Creating PDF Files</Title>
  </Title>
</Bookmark>

您可以讀取這個 XML 文件(作為輸入流或使用閱讀器), importFromXML()方法將返回一個List<HashMap<String,Object>>對象。 您可以使用該對象通過setOutlines()方法將書簽添加到 PDF 文檔中。 參見例如BookmarkedTimeTable示例。 或者看看這個問題的答案: Merge pdfs and add bookmark with iText in java

這些示例(當然)使用 Java 編寫,但如果您需要 Java 版本,請向下滾動“iText in Action - Second Edition”第 7 章示例捆綁頁面,您將找到這些示例的 C# 版本. 例如BookmarkedTimeTable.cs

您會注意到 iTextSharp 中不存在setOutlines()方法,但您需要使用屬性符號:

stamper.Outlines = outlines;

在這種情況下, outlines是一個List<Dictionary<string,object>> (C#) 類型的對象,而不是ArrayList<HashMap<String, Object>> 對於 C# 開發人員來說,將 Java 示例移植到 C# 應該相當簡單,但是如果有疑問,請查看官方網站上提供的cs文件。

暫無
暫無

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

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