2016-09-30 68 views
2

我有一些.jpg文件用於創建pdf。我一直在尋找現在幾個小時,沒有太多的運氣找到任何如何線性化PDF的方法!我很難找到有關如何做到這一點的任何文檔或指南,現在我希望能夠在這裏獲得一些幫助。我也研究過pdfbox 2.0 API文檔,但找不到任何有用的東西。我之前使用過pdfbox,但主要用於分割或合併pdf。 這是我到目前爲止寫:如何在Java中使用pdfbox 2.0創建線性化(快速Web查看)pdf?

private static void createPdf() 
{ 
    PDDocument doc = new PDDocument(); 
    try 
    { 
     File images = new File("images/"); 
     for (File image : images.listFiles()) 
     { 
      PDPage page = new PDPage(); 
      doc.addPage(page); 
      BufferedImage awtImage = ImageIO.read(image); 
      PDImageXObject pdImageXObject = LosslessFactory.createFromImage(doc, awtImage); 
      PDPageContentStream contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, true); 
      contentStream.drawImage(pdImageXObject, 0, 0, (float) (awtImage.getWidth()/5.4), (float) (awtImage.getHeight()/5.9)); 
      contentStream.close(); 
     } 
     doc.setVersion(1.6f); 
     doc.save("pdf/images_v1.6.pdf"); 
    } 
    catch (Exception io) 
    { 
     System.err.println(" -- fail --" + io); 
    } 
    finally 
    { 
     try 
     { 
      doc.close(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

任何建議都非常感謝!

編輯與解決方案: 我已經嘗試qpdf由Tilman Hausherr建議,它解決了我的問題。這裏有一個例子:

file 400dpi_90.pdf qpdf --show-linearization 400dpi_90.pdf qpdf --linearize --min-version=1.6 400dpi_90.pdf 400dpi_90-out.pdf file 400dpi_90-out.pdf qpdf --check-linearization 400dpi_90-out.pdf

以上的結果如下所示:

400dpi_90.pdf: PDF document, version 1.4 400dpi_90.pdf is not linearized 400dpi_90-out.pdf: PDF document, version 1.6 400dpi_90-out.pdf: no linearization errors

回答

0

對不起帶來壞消息,但它不提供PDFBox的並不會,見討論here。我建議你用qpdf來處理你的文件。

+0

這就是我所害怕的。當我知道更多時,我會嘗試給qpdf一個眼神,然後回來。謝謝! –

0

不幸的是,據我所知,沒有支持生成線性PDF文件的開源庫。

原因可能是:「支持線性化的PDF會花費很多工作,但現在大部分時間都沒用。」

正如我們所知,線性化PDF設計的時間(1996年)的網絡速度非常低。因此,線性PDF是快速查看第一頁並在Web上打開時快速跳轉到PDF的任意頁面所必需的,儘管生成線性PDF的實現非常複雜。但網絡速度現在非常值得一提。大多數PDF文件的大小小於10 MB,下載一個PDF文件可能不到一秒鐘。你看,現在,一個PDF文件是否被線性化並不重要。由於是否需要線性化,並且實現線性化PDF需要很多工作,所以沒有開源庫。

如果你必須做一個線性化的PDF,我認爲你只能使用Adobe Acrobat來做到這一點。

PS:我正在爲我工​​作超過2個月的公司開發線性PDF生成功能。所以我可以說沒有開源開發者會這樣做,因爲它大部分時間都很無聊,毫無用處。我這樣做的原因是:公司給我工資。 π_π

+0

qpdf呢? ('qpdf --linearize in.pdf out.pdf') – BHSPitMonkey