2
我有要求將圖像轉換爲PDF與模板。我可以使用itextsharp創建一個頁面PDF。假設1圖片的1頁PDF。 問題出現在我有多個圖像。我如何使用預定義的模板創建多個PDF頁面。 以下是我的代碼:使用itextsharp將多個圖像轉換爲多頁PDF使用itextsharp
public static string CreatePDFDocument(string docname, string imagePath, string mediaField)
{
PdfReader pdfReader = null;
string pdfPortrait = ConfigurationManager.AppSettings["PdfPortraitTemplate"];
string pdfLandscape = ConfigurationManager.AppSettings["PdfLandscapeTemplate"];
iTextSharp.text.Image instanceImg = iTextSharp.text.Image.GetInstance(imagePath);
string filename = ConfigurationManager.AppSettings["LocalFolder"] + docname + ".pdf";
FileStream pdfOutputFile = new FileStream(filename, FileMode.Create);
if (instanceImg.ScaledHeight >= instanceImg.ScaledWidth)
{
pdfReader = new PdfReader(pdfPortrait);
}
else
{
pdfReader = new PdfReader(pdfLandscape);
}
PdfStamper pdfStamper = null;
pdfStamper = new PdfStamper(pdfReader, pdfOutputFile);
AcroFields testForm = pdfStamper.AcroFields;
testForm.SetField("MediaField", mediaField);
PdfContentByte overContent = pdfStamper.GetOverContent(1);
IList<AcroFields.FieldPosition> fieldPositions = testForm.GetFieldPositions("ImageField");
if (fieldPositions == null || fieldPositions.Count <= 0) throw new ApplicationException("Error locating field");
AcroFields.FieldPosition fieldPosition = fieldPositions[0];
iTextSharp.text.Rectangle imageRect = new Rectangle(fieldPosition.position.Top, fieldPosition.position.Left, fieldPosition.position.Bottom, fieldPosition.position.Right);
instanceImg.ScaleToFit(imageRect.Height, -1 * imageRect.Width);
instanceImg.SetAbsolutePosition(fieldPosition.position.Left, (fieldPosition.position.Top - (instanceImg.ScaledHeight)));
overContent.AddImage(instanceImg);
pdfStamper.FormFlattening = true;
pdfStamper.Close();
pdfReader.Close();
return filename;
}
在此先感謝!
你必須使用現有的PDF文件爲基礎的絕對要求,甚至更多重要的是,你真的需要'AcroFields'嗎?如果您只是想將圖像添加(轉換)爲PDF格式,您可以使用更少的代碼來完成,並且可以輕鬆支持多個頁面。 –
@ChrisHaas,是的,我真的需要'AcroFields',因爲有一些領域需要在模板中填充圖像信息。現有的PDF很重要,因爲它是模板並具有標題。所以最後的文檔,它不僅是圖像,而且還有圖像頭部模板和一些關於圖像的信息。 –
好的,很高興知道。如果你不需要'AcroFields',但想要使用模板,我可能會推薦切換到'GetUnderContent()',它允許你在模板頭部後面繪製你的圖像。您也可以使用頁面事件,如以下官方示例所示:http://itextpdf.com/examples/iia.php?id=114。但是因爲你必須處理表單字段,所以我最好建議創建多個PDF並在最後將它們合併在一起。 –