안녕하세요 저는 아래 코드를 사용하고 있습니다. 일부 콘텐츠가 포함 된 일부 PDF를 업로드하고 업로드 한 후 업로드 된 PDF에 콘텐츠가 없습니다. 업로드 된 PDf가 비어 있습니다. 원본 PDF 버전을 정의 된 버전으로 변경하기 위해 아래 ItextSharp 방법을 사용하고 있습니다.
private int WriteCompatiblePdf(string fileName, FileUpload filePath)
{
string sNewPdf = HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["InterfaxPath"]) + fileName;
iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(filePath.FileBytes);
// we retrieve the total number of pages
int n = reader.NumberOfPages;
// step 1: creation of a document-object
iTextSharp.text.Document document = new iTextSharp.text.Document(reader.GetPageSizeWithRotation(1));
// step 2: we create a writer that listens to the document
iTextSharp.text.pdf.PdfWriter writer = iTextSharp.text.pdf.PdfWriter.GetInstance(document, new FileStream(sNewPdf, FileMode.Create, FileAccess.ReadWrite));
//write pdf that pdfsharp can understand
writer.SetPdfVersion(iTextSharp.text.pdf.PdfWriter.PDF_VERSION_1_4);
// step 3: we open the document
document.Open();
iTextSharp.text.pdf.PdfContentByte cb = writer.DirectContent;
iTextSharp.text.pdf.PdfImportedPage page;
int rotation;
int i = 0;
while (i < n)
{
i++;
document.SetPageSize(reader.GetPageSizeWithRotation(i));
document.NewPage();
page = writer.GetImportedPage(reader, i);
rotation = reader.GetPageRotation(i);
cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
}
// step 5: we close the document
document.Close();
return n;
}
권장 사항이 있습니까?
OP는 샘플 "빈"파일을 제공했습니다.
결과적으로이 "빈"파일에는 원하는 내용이 포함되어 있습니다.
문서의 페이지에는 다음과 같은 미디어 상자 정의가 있습니다.
/MediaBox[0 7072 612 7864]
따라서 가시 영역에는 0..612의 x 좌표와 7072..7864의 y 좌표가 있습니다. 하지만 가져온 페이지 내용을 추가 할 때 OP는 좌표 0,0에 명시 적으로 고정합니다.
cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
따라서 이전 페이지의 내용은 y 좌표가 0..792 인 영역에 추가됩니다. 그래서 그들은 보이지 않습니다.
이 문제를 해결하는 방법에는 여러 가지가 있습니다.
정확한 좌표로 위치에 내용을 추가하십시오.
cb.AddTemplate (페이지, 1f, 0, 0, 1f, x, y);
여기서 x
및 y
이다 Left
과 Bottom
의 reader.GetPageSizeWithRotation(1)
(a Rectangle
); 또는
Document
생성자가 0,0을 기반으로 하도록 페이지 크기 사각형을 정규화합니다 . 또는
를 사용 PdfStamper
와 PdfReader
대신의 PdfWriter
원하는 버전을 선택하는 데 사용합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다