當我嘗試將PDF文件轉換爲單獨的圖像文件作爲舊瀏覽器的回退時,我遇到了ABCPdf問題。在渲染之前用ABCPdf調整頁面大小(pdf中的巨大圖像)
我有一些工作代碼可以完美呈現頁面並將渲染大小調整爲想要的大小。現在我的問題發生在pdf頁面很大時w7681px x h10978px
。它幾乎殺死了我的開發機器,部署機器甚至無法咀嚼文件。
我通常只是將頁面1對1渲染爲pdf頁面,然後使用其他算法來調整此圖像的大小。這是無效的,因爲ABCPdf需要大量的能量來輸出這個圖像。
我有以下代碼:
private byte[] GeneratePng(Doc pdfDoc, int dpi)
{
var useDpi = dpi;
pdfDoc.Rendering.DotsPerInch = useDpi;
pdfDoc.Rendering.SaveQuality = 100;
pdfDoc.Rect.String = pdfDoc.CropBox.String;
pdfDoc.Rendering.ResizeImages = true;
int attemptCount = 0;
for (;;)
{
try
{
return pdfDoc.Rendering.GetData("defineFileTypeDummyString.png");
}
catch
{
if (++attemptCount == 3) throw;
}
}
}
我曾嘗試以下解決方案:
調整大小的頁面
pdfDoc.SetInfo(pdfDoc.Page, "/MediaBox:Rect", "0 0 200 300");
調整大小的頁面並輸出。這似乎沒有做任何改變。
渲染之前重新調整圖像:
foreach (IndirectObject io in pdfDoc.ObjectSoup) {
if (io is PixMap) {
PixMap pm = (PixMap)io;
pm.Realize(); // eliminate indexed color images
pm.Resize(pm.Width/4, pm.Height/4);
}
}
什麼也沒做任何,仍然導致了很長的加載時間。
渲染之前運行reduzed大小操作:
using (ReduceSizeOperation op = new ReduceSizeOperation(pdfDoc))
op.Compact(true);
沒有做任何事情無論是。剛剛去了渲染,花了很長時間。
任何人都可以幫助我嗎?也許指向我一些ABCPdf調整大小算法或什麼。