Как экспортировать общий диапазон страниц в PDF с помощью Microsoft Office *без * PDF-принтера?

В настоящее время я пытаюсь сохранить документ Excel в PDF, но тот же процесс может быть применен к документу Word. Я хотел бы сохранить определенный диапазон страниц (например, страницы 1, 3-5 и 8) в файл PDF.

когда я пытаюсь сохранить файл в формате PDF, когда я выбираю PDF в качестве типа файла и нажмите кнопку "Параметры"..."кнопка, мне дается только два варианта в разделе "диапазон страниц". Я могу выбрать любой All или Page(s), который позволяет мне выбрать только один диапазон (например 1-10 и вот оно).

есть ли способ сохранить общий диапазон страниц, аналогичный тому, когда я Печатаю документ, поэтому я могу ввести список страниц, разделенных запятыми (например,1, 3-5, 8) включить в PDF?

хотя я не стесняюсь использовать VBA, я хотел бы избежать использования PDF принтер, так как я не могу установить драйверы на своем рабочем компьютере (без административных привилегий). Я также хочу попытаться сохранить номера страниц согласованными (если я печатаю страницы 1,4,5 и 8, он говорит внизу "Страница 1 из 3", "Страница 2 из 3" и т. д.). Я знаю, что это возможно, так как это происходит при экспорте документа в формате PDF с нескольких ячеек.

спасибо.

24
задан Breakthrough
06.05.2023 4:16 Количество просмотров материала 3695
Распечатать страницу

4 ответа

Я знаю, что вы предпочли бы сделать это непосредственно из Word, но не имея реального решения, чтобы сделать это таким образом, я хотел бы предложить PDFsam (PDF Split и Merge), который, пока Java доступен на машине, не должен быть установлен для того, чтобы использоваться.

вы можете эффективно разделить, изменить порядок, объединить и в целом перемешать документы вокруг довольно легко с помощью PDFsam

сделать его из http://www.pdfsam.org/

Что это pdfsam?

PDF Split and Merge-очень простая, простая в использовании, бесплатная утилита с открытым исходным кодом для разделения и слияния pdf-файлов. Он выпущен в двух версиях: базовой и расширенной. Включает консоль и графический интерфейс.

2
отвечен Mokubai 2023-05-07 12:04

Как документ excel выглядит в OpenOffice?

OpenOffice может экспортировать непосредственно в PDF, и вы можете получить портативный версия OpenOffice, так что она не должна быть установлена в системе.

2
отвечен Matrix Mole 2023-05-07 14:21

Try этой. Это приложение PDF creator, которое устанавливается как принтер. Вы просто указываете диапазон страниц и печать на этот "принтер".

2
отвечен CaptainProg 2023-05-07 16:38

Я, наконец, нашел решение своей проблемы, используя некоторый код VBA и ExportAsFixedFormat метод. В принципе, эта функция будет экспортировать текущий ряд С типом и именем. Ответ ниже, хотя и специфичен для моего случая, легко адаптируется к любой ситуации.

после некоторого обсуждения и кодирования я придумал решение, чтобы найти правильные диапазоны-хотя это далеко не идеально. Я написал следующую функцию VBA (для использования с Excel only), который возвращает диапазон между двумя горизонтальными разрывами страниц (необходимо указать начальный и конечный столбцы):

' Name: Get Range
' Desc: Returns a string representing a range (e.g. "A1:Z30"), which encompasses the specified page breaks.
' Args: startHPBreak - Used to determine which starting page break to use, from 0 up to the number of pagebreaks.
'       endHPBreak   - Used to determine the last page break to return up to.
Function GetRange(ByVal startHPBreak As Long, ByVal endHPBreak As Long) As String
    Dim startCol, endCol As String    ' First, we define our starting/ending columns.
    startCol = "A"
    endCol   = "Z"
    Dim numHPBreaks      As Long      ' Holds the total number of horizontal page breaks.
    Dim startRow, endRow As Long      ' Holds the starting/ending rows of the range.
    ' First, we get the total number of page breaks.
    numHPBreaks = ActiveSheet.HPageBreaks.Count
    ' Then, we check to see the passed ranges are valid (returns a blank string if they are not).
    If (startHPBreak <  0)            Or (startHPBreak > numHPBreaks) Then Exit Function
    If (endHPBreak   <= startHPBreak) Or (endHPBreak   > numHPBreaks) Then Exit Function
    ' Next, we build our string by obtaining our starting and ending rows.
    If startHPBreak = 0 Then    ' If we're starting at the 0th page break...
        startRow = 1                ' Then start exporting at the first row.
    Else                        ' Else, just get the starting page break row.
        startRow = ActiveSheet.HPageBreaks(startHPBreak).Location.Row
    End If
    ' Lastly, we get the ending page break row, build the range as a string, and return it.
    endRow = ActiveSheet.HPageBreaks(endHPBreak).Location.Row - 1
    GetRange = startCol & startRow & ":" & endCol & endRow
End Function

есть некоторые предостережения, в основном, что вам нужно иметь горизонтальные разрывы страниц, определенные для этой работы. В моем случае эта функция работала, но на каждой странице были графики. Всякий раз, когда я пытался использовать диапазон на одной странице, графики на последующих страницах по какой-то причине были бы отрезаны, поэтому я написал следующую функцию для добавления каждого страница в виде другого диапазона в строке a:

наконец, созданный диапазон был передан ExportAsFixedFormat функция, подробно описанная в верхней части моего ответа через следующую функцию (я хотел экспортировать только страницы 1-2 и 12-17):

' Name: Export Pages
' Desc: Exports the specified pages/range in the function to the passed filename as a PDF.
' Args: outFileName - Full or relative file name (include the extension) to export the file as.
Sub ExportPages(outFileName As String)
    Dim outputRange As String    ' Used to build the output range.
    Dim currPage    As Byte      ' Holds the current page we want to export.
    ' There are no graphs on the first two pages, so we can get that range all at once.
    outputRange = GetRange(0, 2)
    ' Next, we loop through and add pages 12 to 17 to the range (since they have graphs).
    For currPage = 12 To 17
        ' We build the range one page at a time, and seperate the ranges with commas.
        outputRange = outputRange & "," & GetRange(currPage - 1, currPage)
    Next currPage
    ' Finally, we use the outputRange string to specify the range, and export it as a PDF.
    ActiveSheet.Range(outputRange).ExportAsFixedFormat _
        Type                 := xlTypePDF, _
        Filename             := outFileName, _
        Quality              := xlQualityStandard, _
        IncludeDocProperties := True, _
        IgnorePrintAreas     := False, _
        OpenAfterPublish     := True
End Sub

обратите внимание, что я должен был добавить диапазон для страниц 12-17 по одному, иначе (как я уже упоминал) мои графики будут отрезаны. Я не знаю, почему я должен был это сделать, но в конце концов это сработало. Надеюсь, того, что я опубликовал здесь, достаточно, чтобы получить кто-то на правильном пути, используя код VBA для экспорта документа в формате PDF.

если кто-то может придумать лучшее решение в будущем, пожалуйста, разместите его в качестве ответа, и он будет рассмотрен.

1
отвечен Breakthrough 2023-05-07 18:55

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх