2016-09-07 5 views
3

Я хочу сохранить файл Google Doc как pdf в той же папке Google Drive как мой текущий файл. Я знаю, что могу загрузить файл как pdf, но затем я должен загрузить его в ту же папку Google Drive. Я пытаюсь пропустить шаг загрузки.Приложения Скрипт Сохранить как pdf не включает рисунки и изображения

Я создал сценарий, чтобы выполнить все это, но я не могу получить изображения и рисунки, которые будут включены в итоговый pdf.

Вот мой код:

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); 
} 

Есть еще один способ создать pdf, сохранить текущую Google Drive папку, а не потерять изображения?

UPDATE

Я просто проверял, и понял, что даже если я экспортировать в формате PDF, изображения и рисунки не включены. Должен быть способ сделать это.

UPDATE 2

Я тестировал некоторые и узнал несколько вещей:

  • изображений в верхнем/нижнем колонтитуле включены, если они In line, но если я использую Wrap text или Break text это не так.
  • изображения в организме может быть любой из трех

Однако, если я использую «проектное предложение» шаблон, они включают в себя изображение в сноске с Break text и экспорт в pdf. Я не могу понять, почему их образ ничем не отличается.

Я не хочу использовать In line, потому что я хочу, чтобы изображение коснулось обеих сторон страницы, и In line всегда оставит по крайней мере 1 пиксель слева от изображения.

+0

Существует еще один ответ, который показывает, как обрабатывать образы внутри HTML, чтобы создать PDF-файл, который работает с 'DriveApp' [Ссылка на Stack Overflow ответ] (https://stackoverflow.com/a/43944352/2946873) –

ответ

1

Конечно, есть. Чтобы сделать следующий код, вы должны сначала включить Advanced Services in Appscript. Это означает, что API-интерфейс Drive можно использовать в скрипте приложений и в консоли Google Dev.

Поскольку мы сохраняем это как PDF, убедитесь, что MiMEtype равен application/pdf, и мы гарантируем, что заголовок файла заканчивается на .pdf. Теперь, когда мы включили необходимые разрешения, это должно работать без проблем.

Выполните и проверьте свой Диск Google для этого файла, в этом случае это 'myImage.pdf'.

function convertImageToPDF() { 
    //get URL of image 
    var image = UrlFetchApp.fetch('http://i.imgur.com/DS6bVac.png'); 

    // grab its bytes and base64-encode them. 
    var base64 = Utilities.base64Encode(image.getBlob().getBytes()); 
    var html = '<img src="data:image/png;base64,'+base64+'" />'; 

    // create a blob, convert to PDF 
    var blob = Utilities.newBlob(html, MimeType.HTML); 

    //save to Google Drive 
    var file = { 
    title: 'myImage.pdf', //set Title 
    mimeType: 'application/pdf' //set MimeType 
    }; 
    file = Drive.Files.insert(file,blob.getAs(MimeType.PDF)); 
    Logger.log('ID: %s, File size (bytes): %s', file.id, file.fileSize); 

} 
+0

У меня есть целый документ, а не только изображение/рисунок. Кроме того, «Drive API» ничего не изменил. – davids

+0

у вас возникла проблема с тем, что изображение не было включено в pdf, поэтому образец ответа. – noogui

+0

Ваш ответ преобразует изображение в pdf, не гарантирует, что документ с изображением включает его в pdf при конвертации.Мое изображение является частью документа и не имеет собственного URL-адреса, и я не хочу, чтобы изображение в его собственном pdf. – davids

Смежные вопросы