【发布时间】:2014-05-19 11:06:24
【问题描述】:
您好,我正在使用以下代码。当我上传一些包含某些内容的 PDF 时,上传后,它们在上传的 PDF 中没有内容。上传的 PDf 为空白。我正在使用 ItextSharp 的以下方法将原始 PDF 的版本更改为定义的版本。
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;
}
有什么建议吗?
【问题讨论】:
-
您上传的所有 PDF 最终都没有内容吗?还是只是一些?你能提供一个损坏的样本吗?话虽如此,请注意您的内容复制代码非常有损;您应该使用
PdfReader-PdfStamper对而不是PdfReader-PdfWriter对。 -
某些 pdf 文件会出现这种情况。执行此代码时我没有收到任何错误。但是对于 1 或 2 个 pdf,我发现了这个问题。
-
如果您的问题只出现在某些 PDF 中,您应该提供一个示例 PDF 来说明。否则其他人只能猜测。
-
你好 mkl,请找到 pdf 的链接。 drive.google.com/file/d/0B4KYV-9yFCBSQk9IRnE5Tl8yY2s/…,如您所见,如果您上传此 pdf,则 pdf 变为空白。
-
嗯,文件看起来不是空白的,但看起来好像缺少某些东西。好像有一个填写好的表格,现在只有填写。这也是你的观察吗?