Temukan dan ganti hyperlink dalam PDF

2

Saya ingin mengotomatiskan proses menemukan dan mengganti hrefs (bukan anchor text) dalam 100-an file PDF dalam OS Windows 8.1.

Saya senang mengonversi format file selama mereka dapat dikompilasi ulang sebagai PDF yang berfungsi.

UPDATE: Saya telah dapat menemukan dan mengganti hanya href menggunakan PDFTK ..

  1. pdftk foo.pdf output foo.tmp tidak terkompresi
  2. temukan dan edit tautan menggunakan editor teks
  3. pdftk foo.tmp output kompas foo-updated.pdf

Sekarang saya memerlukan alat cmdline yang dapat mengotomatisasi langkah 2 dengan mengganti nilai foo.tmp dari daftar temukan dan ganti.

darmi
sumber
Harap edit pertanyaan Anda untuk memasukkan sistem operasi Anda. Ini akan memungkinkan Anda untuk mendapatkan lebih banyak jawaban terfokus.
DavidPostill
Atau coba kode ini dari situs ini: levien.zonnetjes.net/?q=replacepdftext Dapat dengan mudah dikonversi menjadi batch atau digunakan langsung dari msys, cygwin. Tetapi tidak yakin apakah itu mempertahankan hyperlink
Paul
Terima kasih @Paul tautan levien.zonnetjes.net/?q=replacepdftext telah membantu saya bergerak lebih dekat ke sebuah jawaban
darmi

Jawaban:

1

Saya akan berasumsi kita berbicara tentang OS Windows dan dengan tag Batch Anda akan merujuk ke pemrosesan batch, bukan Batch lang, lagipula saya akan menyarankan bahwa Batch adalah bahasa terbatas yang hanya mencakup tugas-tugas dasar sistem yang umum, itu tidak dimaksudkan untuk membaca file teks tidak biasa seperti PDF, itu tidak bisa.

Untuk membaca format tertentu seperti PDF diperlukan parser / juru bahasa eksternal.

Ada solusi berbasis C # yang bagus yang menunjukkan cara membaca data yang terkandung dalam PDF dengan cara yang dapat dibaca manusia:

https://stackoverflow.com/questions/2550796/reading-pdf-content-with-itextsharp-dll-in-vb-net-or-c-sharp

Ini menggunakan pustaka iTextSharp , yang merupakan open-source:

http://sourceforge.net/projects/itextsharp/

Atau, berikut adalah solusi berbasis VBS dari panduan pengguna Adobe, diperlukan objek COM yang diinstal dari aplikasi Adobe.

http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/indesign/sdk/cs6/scripting/InDesign_ScriptingGuide_VB.pdf

Perhatikan bab-bab di mana Anda tertarik untuk tugas ini:

masukkan deskripsi gambar di sini

Untuk sedikit membantu Anda dalam VBS, berikut adalah pertanyaan skrip VBS yang dapat membantu Anda:

Option Explicit
Dim accapp, acavdocu
Dim pdf_path, bReset, Wrd_count
pdf_path="C:\LS\Test\Invoices\02_2011_PDF\rpt_Invoice_1.pdf"
'AcroExch is acrobat application object
Set accapp=CreateObject("AcroExch.App")
accapp.Show()

'Need to create one AVDoc object par displayed document
Set acavdocu=CreateObject("AcroExch.AVDoc")

'Opening the PDF
If acavdocu.Open(pdf_path,"") Then
acavdocu.BringToFront()
bReset=1 : Wrd_count = 0
'Find Text Finds the specified text, scrolls so that it is visible, and highlights it
Do While acavdocu.FindText("Invoice#", 1, 1, bReset)
bReset=0 : Wrd_count=Wrd_count+1
'Wait 0, 200
Loop
End If

accapp.CloseAllDocs()
accapp.Exit()
msgbox "The word 'Invoice#' was found " & Wrd_count & "times"
Set accap=nothing : Set accapp=nothing

Tapi saya akan menyarankan tampaknya itu tidak berfungsi seperti yang diharapkan, saya mengambilnya dari situs ini:

http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_26834618.html

ElektroStudios
sumber
@ fixer1234 terima kasih atas saran yang lembut. Alasan mengapa saya menautkan url itu karena OP dapat melihat skrip dan menyalinnya, gambar bukan teks yang dapat disalin maka Jika saya memberikan gambar saya memberikan bantuan yang tidak terlalu efisien, dan Jika saya membagikan skrip sebagai teks maka Saya tidak yakin Jika saya memberi penekanan pada jawaban saya karena tidak jelas bahasa yang diterima oleh OP. Saya pikir kita semua perlu melakukan pengecualian jika kami menemukan jawaban pada keadaan ini karena tautan ke url itu bisa saja salah hanya jika dilihat oleh dan perspektif tertentu. Terima kasih lagi.
ElektroStudios
1
Dalam hal itu, sertakan instruksi untuk menunjukkan semua untuk menemukan skrip. Saya juga berasumsi bahwa skrip akan ada dalam jawaban yang tidak tersedia dan tidak berpikir untuk memperluas pertanyaan. Secara pribadi, saya pikir menyalin skrip akan baik-baik saja. Itu menempatkan semua informasi di sini dan Anda dapat mengkreditkan Experts Exchange tanpa mengirim orang ke sana, di mana mereka akan bingung dengan hal-hal keanggotaan. Anda menutupi banyak wilayah dalam jawaban Anda dan OP dapat menggunakan apa yang mereka inginkan. Lebih nyaman melihat konten di sini dan memutuskan Anda tidak memerlukannya daripada mengejar tautan untuk sampai pada kesimpulan yang sama. 2 sen saya.
fixer1234