簡體   English   中英

iTextSharp 從現有的 PDF 模板生成 PDF

[英]iTextSharp produce PDF from existing PDF template

我正在研究使用 C# 和 iTextSharp 創建東西的可行性,它可以采用 PDF 模板並將各種占位符值替換為從數據庫中檢索到的實際值。 本質上是一個 PDF 郵件合並。 我在行動書中有 iText,但它涵蓋了很多我不需要的東西,我正在努力尋找與我想做的事情相關的任何東西。 我很高興使用 PDF 字段作為占位符,只要合並/展平的表單看起來不像其中有字段,output 文檔應該看起來像一封郵件合並信,而不是已填寫的表單。在一個理想的世界,我只想搜索 PDF 的文本內容,然后用正確的字段值替換文本占位符,通過 la word 郵件合並。

任何人都可以建議我最好的方法,並指出最有用的 iTextSharp 類的使用方向,或者如果你知道 iText in Action 書,請指向最有幫助的部分供我閱讀。

  1. 在您選擇的頁面布局/文本編輯器中構建您的模板無字段。
  2. 保存到 PDF。
  3. 打開 PDF 並向其中添加字段。 這在 Acrobat Pro 中很容易做到(如果需要,您可以下載試用版)。 iText 也可以,只是難度更大。

無論哪種情況,您都希望將表單字段設置為沒有邊框,也沒有背景......這樣只有它們的內容可見,沒有框可以使您的字段看起來像字段。

使用 iText 將字段數據合並到表單中非常簡單(請原諒我的 Java,我對 C# 不太了解):

void fillPDF( String filePath, Map<String, String> fieldVals ) {
  PdfReader reader = new PdfReader(myFilePath);

  PdfStamper stamper = new PdfStamper( reader, outputFileStream );
  stamper.setFormFlattening(true);

  AcroFields fields = stamper.getAcroFields();

  for (String fldName : fieldVals.keySet()) {
    fields.setField( fldName, fieldVals.get(fldName) );
  }

  stamper.close();
}

這將忽略具有多個選擇(和例外)的列表框,但除此之外應該准備好 go。 鑒於您正在做郵件合並類型的事情,我認為多重選擇不會有太大問題。

暫無
暫無

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

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