PDF 페이지에 페이지를 삽입하려고합니다. 페이지가 끝에 추가되지 않거나 어딘가에 중간에 삽입 될 필요가 있기 시작합니다 (책갈피가있는 삽입 위치를 결정하는 방법이 있습니다).PdfStamper로 페이지를 삽입해도 양식 필드가 가져 오지 않습니다.
키는 북마크를 풀어서는 안됩니다. 그래서 PdfStamper를 사용하여 페이지를 삽입합니다. 문제는 삽입되는 pdfs에 양식 필드가 있고 해당 필드가 전달되지 않는다는 것입니다.
내가 필드를 복사하려면이 같은 시도했지만이 정확히 복사하지 않습니다
for (int pageNum = 1; pageNum <= readerPdfToAdd.NumberOfPages; pageNum++)
{
PdfImportedPage page = pdfStamper.GetImportedPage(readerPdfToAdd, pageNum);
pdfStamper.InsertPage(filesByCategory[i].PageOfInsert + pageNum, readerPdfToAdd.GetPageSizeWithRotation(pageNum));
var rotation = readerPdfToAdd.GetPageRotation(pageNum);
if (rotation == 90 || rotation == 270)
{
pdfStamper.GetUnderContent(filesByCategory[i].PageOfInsert + pageNum)
.AddTemplate(page, 0, -1f, 1f, 0, 0, readerPdfToAdd.GetPageSizeWithRotation(pageNum).Height);
}
else
{
pdfStamper.GetUnderContent(filesByCategory[i].PageOfInsert + pageNum).AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
}
}
를 삽입 않는 코드입니다.
foreach (KeyValuePair<string, AcroFields.Item> kvp in pdfFormFields.Fields)
{
var s = pdfFormFields.GetFieldPositions("Date");
PdfArray r = kvp.Value.GetWidget(0).GetAsArray(PdfName.RECT);
var name = kvp.Value.GetWidget(0).GetAsArray(PdfName.NAME);
Rectangle rr = new Rectangle(r.GetAsNumber(0).FloatValue, r.GetAsNumber(1).FloatValue, r.GetAsNumber(2).FloatValue, r.GetAsNumber(3).FloatValue);
TextField field = new TextField(pdfStamper.Writer, rr, kvp.Value.GetWidget(0).Get(PdfName.T).ToString());
if (kvp.Value.GetWidget(0).Get(PdfName.V) != null)
field.Text = kvp.Value.GetWidget(0).Get(PdfName.V).ToString();
// add the field here, the second param is the page you want it on
pdfStamper.AddAnnotation(field.GetTextField(), filesByCategory[i].PageOfInsert + pageNum);
fields.SetField(kvp.Key, kvp.Value.ToString());
}
더 좋은 방법이 있나요? 나는 소스 문서에서 북마크를 잃어버린 PdfCopy를 시도했다.
아, 당신은 상처의 세계에있을 것입니다. 대화 형 요소에 대한 PDF 사양 섹션을 확인하십시오. 바라건대 당신이 사용하고있는 라이브러리는 저수준을 지원하기 때문에 PDF 객체와 페이지 트리를 직접 조작 할 수 있습니다. – jjm
잘 iTextsharp는 GetImportedPage가 필드를 가져 오지 않는 폼 데이터를 복사 할 수 있습니다. – Tigran
잘못된 라이브러리 사용의 경우입니다. 'PdfStrapper'와'PdfCopy'를 결합해야합니다. –