如何切片在C#中的pdf文檔..這裏是我的切片代碼,但在切片總大小後切片10 MB的pdf文檔是20 MB如何減少切片時的切片文件?請給出一個切片和壓縮的好方法切片PDF文檔
public int ExtractPages(string sourcePdfPath)
{
int p = 0;
try
{
iTextSharp.text.Document document;
iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(new iTextSharp.text.pdf.RandomAccessFileOrArray(sourcePdfPath), new ASCIIEncoding().GetBytes(""));
if (!Directory.Exists(sourcePdfPath.ToLower().Replace(".pdf", "")))
{
Directory.CreateDirectory(sourcePdfPath.ToLower().Replace(".pdf", ""));
}
else
{
Directory.Delete(sourcePdfPath.ToLower().Replace(".pdf", ""), true);
Directory.CreateDirectory(sourcePdfPath.ToLower().Replace(".pdf", ""));
}
for (p = 1; p <= reader.NumberOfPages; p++)
{
using (MemoryStream memoryStream = new MemoryStream())
{
document = new iTextSharp.text.Document();
iTextSharp.text.pdf.PdfWriter writer = iTextSharp.text.pdf.PdfWriter.GetInstance(document, memoryStream);
writer.SetPdfVersion(iTextSharp.text.pdf.PdfWriter.PDF_VERSION_1_2);
writer.CompressionLevel = iTextSharp.text.pdf.PdfStream.BEST_COMPRESSION;
writer.SetFullCompression();
document.SetPageSize(reader.GetPageSize(p));
document.NewPage();
document.Open();
document.AddDocListener(writer);
iTextSharp.text.pdf.PdfContentByte cb = writer.DirectContent;
iTextSharp.text.pdf.PdfImportedPage pageImport = writer.GetImportedPage(reader, p);
int rot = reader.GetPageRotation(p);
if (rot == 90 || rot == 270)
{
cb.AddTemplate(pageImport, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(p).Height);
}
else
{
cb.AddTemplate(pageImport, 1.0F, 0, 0, 1.0F, 0, 0);
}
document.Close();
document.Dispose();
File.WriteAllBytes(sourcePdfPath.ToLower().Replace(".pdf", "") + "/" + p + ".pdf", memoryStream.ToArray());
}
}
reader.Close();
reader.Dispose();
}
catch
{
}
finally
{
GC.Collect();
}
return p - 1;
如果我正確讀取了您的代碼,那麼您將50頁的PDF分成50個具有相同內容的單頁PDF,對吧?你爲什麼期望這個減小尺寸?除了內容之外,每個PDF文件都有一些開銷,只是在您的情況下,開銷與數據一樣多。 (如果單個頁面上的內容足夠簡單,這可能是可能的。) – millimoose
是的..在切片後,我必須保存原始文件和服務器中的切片文件,然後如果我在切片後切片50 MB文件,會佔用太多空間將是110 MB這就是爲什麼我必須壓縮切片的pdf文檔 –
你可以把它們放到'.zip'檔案中嗎?這可能會擺脫冗餘開銷。另外,如果空間是你的優先選擇,爲什麼要分割文件呢?只需按需提取單頁。 (空間是一個優先事項?200%的爆炸看起來很可怕,但存儲是相當便宜。) – millimoose