2016-08-03 68 views
1

由於某些原因,當在Google Apps腳本中將HTML文件轉換爲PDF時,PDF的文件大小最終比原始HTML大文件。使用谷歌應用程序腳本將html文件轉換爲Adobe PDF時文件大小增加

我用來運行測試的代碼如下:

function convertHTMLtoPDF() { 
// convert a specific message with an attached HTML file to PDF, 
// and save it to the root directory of Google Drive 
    var threads = GmailApp.search('subject:(Sample HTML)'); 
    var message = threads[0].getMessages()[0]; 

    var attachmentName = message.getAttachments()[0].getName(); 

    var attachment = message.getAttachments()[0].getAs("application/pdf"); 
    DriveApp.createFile(attachment).setName(attachmentName); 

} 

注意:您只需要採取樣本HTML文件,我在下面的共享,將其連接到與一封主題爲:樣本HTML ,併發送給自己,讓腳本找到它。

我轉換的sample HTML文件是133 KB。腳本運行後,轉換後的爲10 MB。

我的測試結果如下:

  • 轉換與谷歌Apps腳本的sample.html文件導致133 KB的HTML文件,成爲一個10 MB PDF。
  • 使用Adobe Acrobat XI Pro轉換sample.html文件會導致133 KB HTML文件變爲151 KB PDF。

有誰知道爲什麼通過Google Apps腳本轉換的PDF文件大小比使用Adobe轉換時大得多?有沒有辦法減小文件大小?

在此先感謝您的幫助!

+0

如果您想通過Google Apps腳本查看轉換結果,示例PDF文件位於:https://drive.google.com/file/d/0B7LEHSedHuTxLUlKRnlWQ05sZWs/view?usp=sharing – user3330539

回答

0

我試過你的代碼,我確認了它的大小變大了(10 MB)。我認爲這很自然,因爲與原始文件類型相比,PDF文件總是很大。你可以在互聯網上找到很多可以解釋的原因。一個例子是this

爲了確認,我用這個script來確認這個大小。

function htmlToPDF() { 

    var html = "YOUR HTML CODE"; 

    var blob = Utilities.newBlob(html, "text/html", "text.html"); 
    var pdf = blob.getAs("application/pdf"); 

    DriveApp.createFile(pdf).setName("text.pdf"); 

    MailApp.sendEmail("[email protected]", "PDF File", "", 
    {htmlBody: html, attachments: pdf}); 

} 

而且我還從此代碼中獲得10MB大小。

+0

「這是自然,因爲PDF文件總是比文件的原始類型大「 - 完全廢話。 PDF可以使用flate/deflate壓縮,實際上可以比.txt文件中保存的相同文本小很多倍。 – enhzflep

+0

我同意,我認爲這是Google Apps腳本中的一個錯誤,因爲在通過Apps腳本進行轉換時文件大小會變得更大的原因沒有很好的理由。其他人有任何想法如何解決這個問題,或者我應該向谷歌提交這個錯誤? – user3330539

+0

如果您向Google提交錯誤報告,您可以在這裏鏈接您提交的錯誤消息。 – KENdi

相關問題