Apps Script save as pdf doesn't include drawings and images
Asked Answered
B

0

8

I want to save a Google Doc file as a pdf in the same Google Drive folder as my current file. I know I can download the file as a pdf, but then I have to upload it into the same Google Drive folder. I am trying to skip the upload step.

I have created a script to accomplish all of this, but I cannot get the images and drawings to be included in the resulting pdf.

Here is my code:

function onOpen() {
  // Add a custom menu to the spreadsheet.
  var ui = DocumentApp.getUi();
  var menu = ui.createAddonMenu();
  menu.addItem('Save As PDF','saveToPDF')
      .addToUi();
}

function saveToPDF(){
  var currentDocument = DocumentApp.getActiveDocument();
  var parentFolder = DriveApp.getFileById(currentDocument.getId()).getParents();
  var folderId = parentFolder.next().getId();
  var currentFolder = DriveApp.getFolderById(folderId);

  var pdf = currentDocument.getAs('application/PDF');
  pdf.setName(currentDocument.getName() + ".pdf");

  // Check if the file already exists and add a datecode if it does
  var hasFile = DriveApp.getFilesByName(pdf.getName());
  if(hasFile.hasNext()){
    var d = new Date();
    var dateCode = d.getYear()+ "" + ("0" + (d.getMonth() + 1)).slice(-2) + "" + ("0" + (d.getDate())).slice(-2);
    pdf.setName(currentDocument.getName() + "_" + dateCode +".pdf");
  }

  // Create the file (puts it in the root folder)
  var file = DriveApp.createFile(pdf);
  // Add to source document original folder
  currentFolder.addFile(file);
  // Remove the new file from the root folder
  DriveApp.getRootFolder().removeFile(file);
}

Is there another way to create the pdf, save to the current Google Drive folder, and not lose the images?

UPDATE

I just tested and realized that even if I export as a pdf, the images and drawings aren't included. There has to be a way to do this.

UPDATE 2

I have been testing some more and have learned a few things:

  • Images in the header/footer are included if they are In line, but if I use Wrap text or Break text they are not.
  • Images in the body can be any of the three

However, if I use the "Project Proposal" template, they include an image in the footer with Break text and it exports to pdf. I can't tell why their image is any different.

I don't want to use In line because I want the image to touch both sides of the page and In line will always leave at least 1 pixel to the left of the image.

Beeson answered 7/9, 2016 at 2:16 Comment(2)
There is another answer that shows how to process images inside of HTML in order to create a PDF that works with DriveApp Link to Stack Overflow answerParik
I have the same issue. Did not have it earlier, but started noticing missing images since last week. Anyone has any solution?Congratulation

© 2022 - 2024 — McMap. All rights reserved.