pdf 바이트 스트림을 반환하는 메소드가 있습니다. (기입 가능한 pdf에서) 2 개의 스트림을 하나의 스트림으로 병합하고 하나의 pdf를 만드는 간단한 방법이 있습니까? 내 방법을 두 번 실행해야하지만 하나의 PDF 스트림에 두 개의 PDF 파일이 필요합니다. 감사.두 개의 pdf 바이트 스트림을 Itextsharp를 사용하여 병합
답변
당신이 PdfStamper
로 채워진 형태를 평평하게하는 경우 당신은 말하지 않았다, 그래서 당신이 병합하려고 전에 평평해야한다 단지 말할 수 있습니다. 다음은 작동하는 .ashx HTTP 처리기입니다.
<%@ WebHandler Language="C#" Class="mergeByteForms" %>
using System;
using System.IO;
using System.Web;
using iTextSharp.text;
using iTextSharp.text.pdf;
public class mergeByteForms : IHttpHandler {
HttpServerUtility Server;
public void ProcessRequest (HttpContext context) {
Server = context.Server;
HttpResponse Response = context.Response;
Response.ContentType = "application/pdf";
using (Document document = new Document()) {
using (PdfSmartCopy copy = new PdfSmartCopy(
document, Response.OutputStream))
{
document.Open();
for (int i = 0; i < 2; ++i) {
PdfReader reader = new PdfReader(_getPdfBtyeStream(i.ToString()));
copy.AddPage(copy.GetImportedPage(reader, 1));
}
}
}
}
public bool IsReusable { get { return false; } }
// simulate your method to use __one__ byte stream for __one__ PDF
private byte[] _getPdfBtyeStream(string data) {
// replace with __your__ PDF template
string pdfTemplatePath = Server.MapPath(
"~/app_data/template.pdf"
);
PdfReader reader = new PdfReader(pdfTemplatePath);
using (MemoryStream ms = new MemoryStream()) {
using (PdfStamper stamper = new PdfStamper(reader, ms)) {
AcroFields form = stamper.AcroFields;
// replace this with your form field data
form.SetField("title", data);
// ...
// this is __VERY__ important; since you're using the same fillable
// PDF, if you don't set this property to true the second page will
// lose the filled fields.
stamper.FormFlattening = true;
}
return ms.ToArray();
}
}
}
잘하면 인라인 주석이 의미가 있습니다. 위의 _getPdfBtyeStream()
메소드는 PDF 바이트 스트림을 시뮬레이트합니다. FormFlattening
을 true
으로 설정해야하는 이유는 PDF 양식 필드를 채울 때 이름이 고유해야한다는 것입니다. 귀하의 경우 두 번째 페이지는 동일한 채울 수있는 PDF 양식이므로 첫 번째 페이지와 동일한 필드 이름을 가지며 기입 할 때 무시됩니다. 위의 예의 줄을 주석으로 처리하십시오.
stamper.FormFlattening = true;
즉, 일반적인 코드의 많은
Acrofield
의가 고려되지 않기 때문에 (작성 가능한 형태의) 작동하지 않습니다 유래
에도 여기에 인터넷에서 PDF 파일을 병합합니다. 사실 stackoverflow의 about itextsharp tag "자주 묻는 질문 & Popular"에서 Merge PDFs까지 살펴보면 @Ray Cheng이 올바르게 표기 한 대답은 세 번째 주석에 언급되어 있습니다. 양식을 병합하지 않고 채울 수있는 PDF를 병합하는 또 다른 방법은 두 번째/다음 페이지의 양식 필드 이름을 바꾸는 것이지만 그게 더 효과적입니다.
답변 및 설명에 대한 감사 쿠진 보. – user282807
건배 야, 멋진 물건들. –
- 1. iTextSharp를 사용하여 PDF 자르기
- 2. tiff 바이트 배열을 C 바이트로 itextsharp를 사용하여 바이트 배열로 변환
- 3. iTextSharp를 사용하여 하단에 PDF 푸터
- 4. itextsharp를 사용하여 html에서 pdf 생성
- 5. iTextSharp를 사용하여 생성 된 하나의 PDF 파일에 2 개의 gridviews 병합
- 6. iTextSharp를 사용하여 PDF 포트폴리오를 읽는 방법
- 7. itextsharp를 사용하여 PDF 문서에 텍스트 추가
- 8. iTextSharp를 사용하여 템플릿에서 PDF 보고서를 작성하는 기술
- 9. 두 개의 열을 병합
- 10. itextsharp를 사용하여 PDF GridView에 스타일 적용하기
- 11. iTextSharp를 사용하여 PDF 크기를 조정하는 방법
- 12. C에서 iTextSharp를 사용하여 PDF 콘텐츠 읽기
- 13. iTextSharp를 사용하여 Excel 문서에서 PDF 보고서 만들기
- 14. iTextSharp를 사용하여 PDF 페이지 번호 가져 오기
- 15. iTextSharp를 사용하여 pdf 파일에 버튼 추가하기
- 16. itextSharp를 사용하여 이진 데이터에서 pdf 파일 만들기
- 17. itextSharp를 사용하여 aspx to pdf 5.3.0
- 18. iTextSharp를 사용하여 PDF 문서를 TIFF로 변환
- 19. itextSharp를 사용하여 pdf 문서의 텍스트를 바꿉니다.
- 20. iTextSharp를 사용하여 PDF 메타 데이터 읽기/수정
- 21. C#에서 iTextSharp를 사용하여 PDF 파일 만들기
- 22. Jackson을 사용하여 두 개의 JSON 문서 병합
- 23. 두 개의 rtp 스트림을 결합하는 방법
- 24. 코딩하여 두 개의 비디오를 병합
- 25. iTextSharp를 사용하여 기존 PDF 양식에서 여러 페이지 PDF 생성
- 26. 두 개의 동적 라이브러리 병합
- 27. 병합 두 개의 데이터 프레임
- 28. javascript를 사용하여 브라우저에서 PDF 스트림을 표시하는 방법
- 29. 바이트 스트림을 IOS, PDF, HTML, CSS 파일로 변환
- 30. byte [] 스트림을 PDF 파일 asp.net
iTextSharp에서 만든 바이트 스트림입니까? 두 개의 서로 다른 채우기 가능한 형식의 개별 바이트 스트림 또는 단일 형식입니까? 그들이 단일 형태에서 오는 경우에, 당신은 그 (것)들을 평평하게 했습니까? – kuujinbo
잠시 동안 바이트 스트림을 잊어 버리십시오. 귀하의 질문은 "실제로 어떻게 하나의 PDF 두 개를 결합합니까?" –
동일한 채울 수있는 PDF입니다. 나는 Itexsharp pdf stamper를 사용했다. asp.net에서 이것을 사용하고이 PDF를 브라우저에 스트리밍합니다. 그래서, 내 필요는 동일한 pdf를 스트림하지만 다른 데이터를주고 하나의 스트림에 eevrything을 넣는 내 메소드를 호출하는 것이다. 따라서 동일한 PDF가 단일 PDF로 두 번 나타납니다. – user282807