c# pdf reader itextsharp : Delete pdf pages in reader SDK software service wpf windows asp.net dnn sumanual_600dpi_a410-part450

9.3. TAPE READING AND WRITING
89
Question 13 I would like to strip the trace headers off of some SU data, perform an operation of some
type on the bare traces and put the headers back on without losing any of the header information. How
do I do this?
Answer 13 Do the following:
% sustrip < data.su head=headers > data.binary
(Do whatever was desired to data.binary to make data1.binary)
% supaste < data1.binary head=headers > data1.su
Question 14 I have made some data on an IBM RS6000 and have transferred it to my Linux-based
PC system. The data looks ok on the RS6000, but when I try to work with it on the PC, none of the SU
programs seem to work. What is wrong?
Answer 14 The problem you have encountered is that there are two IEEE binary formats called re-
spectively ‘big endian‘ and ‘little endian‘ or, alternately ‘high byte‘ and ‘low byte‘. These terms refer to
the order of the bytes that represent the data. IBM RS6000, Silicon Graphics, NeXT (black hardware),
SUN, HP, PowerPC, any Motorola chip-based platforms are ‘big endian‘ machines, whereas, Intel-based
PCs and Dec and Dec Alpha products are ‘little endian‘ platforms.
Two programs are supplied in the CWP/SU package for swapping the bytes for data transfer. These
are swapbytes and suswapbytes.
The program swapbytes is designed to permit the user to swap the bytes on binary data that are
all one type of data (floats, doubles, shorts, unsigned shorts, longs, unsigned longs, and ints).
For data that are in the SU format, the program suswapbytes is provided.
Furthermore, within the programssegyread andsegywritethere are “swap=” flagsthat permit the
user to specify whether the platform they are working on are “big endian” or “little endian” platforms.
In older releases of SU there were problems with the bitwise operations that would be encountered
in the wiggle-trace drawing routines. However, these problems have been fixed via the ENDIANFLAG
that appears in Makefile.config.
Question 15 How do I convert data that are in the SEG-2 format to SEGY?
Answer 15 In $CWPROOT/src/Third
Party/seg2segy there are two programs that have been made
available to us by the University of Pau in France, for this purpose. These should be easy to install on
any system where SU has been installed.
Once you have converted data.seg2 to data.segy, you may read it into the SU format via:
% segyread tape=data.segy > data.su
9.3 Tape reading and writing
This section contains frequently asked questions about reading and writing SEG-Y tapes with SU.
Tape reading/writing is more of an art than a science. Here are a few tips.
1. Make sure your tape drive is set to be variable block length. If you are on an IBM RS6000, this
means you will need to use smit to set blocksize=0on your tape device. Having the tape drive
set to some default constant blocksize (say blocksize=1024 or 512) will foil all attempts to read
an SEG-Y tape.
Delete pdf pages in reader - remove PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Provides Users with Mature Document Manipulating Function for Deleting PDF Pages
delete page on pdf file; delete blank pages in pdf online
Delete pdf pages in reader - VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Visual Basic Sample Codes to Delete PDF Document Page in .NET
delete pages pdf file; delete page in pdf reader
90
CHAPTER 9. ANSWERS TO FREQUENTLY ASKED QUESTIONS
2. To read multiple tape files on a tape, use the non rewinding device. On an RS6000 this would be
something like /dev/rmtx.1, see man mt for details.
3. If this still doesn’t work, then try:
% dd if=/dev/rmtx of=temps bs=32767 conv=noerror
Here, /dev/rmtx (not the real name of the device, it varies from systemto system) is your regular
(rewinding) tape device. In the option, bs=32767, we gave the right blocksize (2
16
+1) for an
IBM/RS6000. Try bs=32765 (2
16
−1) on a SUN. This will dump the entire contents of the tape
onto a single file.
Question 16 How do I write multiple SEG-Y files onto a tape?
Answer 16 Here is a shell script for writing multiple files on a tape:
#! /bin/sh
DEV=/dev/nrxt0 # non rewinding tape device
mt -f $DEV rewind
j=0
jmax=40
while test "$j" -ne "$jmax"
do
j=‘expr $j + 1‘
echo "writing tape file $j"
segywrite tape=$DEV bfile=b.$j hfile=h.$j verbose=1 buff=0 < ozdata.$j
done
exit 0
9.4 Geometry Setting
Question 17 How do I do “geometry setting” in SU?
Answer 17 There is a common seismic data manipulation task that often is called ”geometry setting”
in commercial packages in which the user converts information in the survey observers’ logs into values
in the trace headers.
The CWP/SU package does indeed, have provisions for getting and setting header fields, as well as
computing a third header field from one or two other header fields. The programs that you need to use
for this are:
sugethw (”SU get header word”)
sushw (”SU set header word”)
suchw (”SU change or compute header word”)
Type the name of each program to see the self documentation of that code.
In addition, to find out what the header field ”keywords” mentioned in these programs are: type:
sukeyword -o
You may have the information in a variety of forms. The most common and least complicated assump-
tions of that form will be made here.
C# PDF Page Insert Library: insert pages into PDF file in C#.net
how to merge PDF document files by C# code, how to rotate PDF document page, how to delete PDF page using C# .NET, how to reorganize PDF document pages and how
cut pages from pdf preview; delete pages from pdf without acrobat
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
VB.NET Page: Insert PDF pages; VB.NET Page: Delete PDF pages; VB.NET Annotate: PDF Markup & Drawing. XDoc.Word for XImage.OCR for C#; XImage.Barcode Reader for C#
delete blank pages in pdf; delete pages of pdf
9.4. GEOMETRY SETTING
91
The task requires the following basic steps.
1. Get your data into SU format. The SU format is not exactly SEGY, but it does preserve the
SEGY header information. If you are starting with SEGY data (either on tape, or on in the form
of a diskfile) then you use ”segyread” to read the data into an su file format.
For tape:
% segyread tape=/dev/rmt0 bfile=data.1 header=h.1 | segyclean > data.su
For diskfile
% segyread tape=data.segy bfile=data.1 header=h.1 | segyclean > data.su
The file data.segy is assumed here to be a ”tape image” of segy data. You have to be careful
because some commercial software will write SEGY-like data, by mimicking the layout of the
SEGY format, but this format will not be in the true IBM tape format that SEGY is defined to
be. In Promax, if you write a SEGY file in IBM Real format, then this will be true SEGY tape
image. working on.
2. If you have your data in the SU format, then you may view the ranges of the SEGY headers
(headers that are not set will not be shown) via:
% surange < data.su
3. Data often comes with some fields already set. To dump these fields in a format that is convenient
for geometry setting, you would use sugethw in the following way:
% sugethw < data.su output=geom key=key1,key2,... > hfile.ascii
The strings ”key1,key2,...” are the keywords representing the desired SEGY trace header fields.
These keywords may be listed via:
% sukeyword -o
4. Once you have dumped the desired header fields into hfile.ascii then you may edit them with the
editor of your choice. The point is that you may create a multi-column ascii file that lists the
values of specific header fields (trace by trace, as they appear in data.su) by *any* method you
wish. Each column will contain the value of a specific header field to be set.
5. Now that you have created the ascii file containing your header values, you may load these values
into data.su via:
% a2b < hfile.ascii n1=N_columns > hfile.bin
Here, N
columns is the number of columns in hfile.ascii. This is to convert hfile.ascii to a binary
file.
Now use:
% sushw < data.su key=key1,key2,... infile=hfile.bin > data1.su
Here key1,key2,... are the appropriate keywords representing the fields being set, listed in the
exact order the values appear, column by column in hfile.ascii.
6. If you want to compute a third header field from two given header field values, then you may use:
suchw for this. Also, if the header fields that you want to set are systematic in some way (are
constant for each trace or vary linearly across a gather), then you don’t have to use the ”infile=”
option. You may simply give the necessary values to sushw. See the selfdocs for sushw and suchw
for examples of these.
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
Page: Insert PDF Pages. |. Home ›› XDoc.PDF ›› VB.NET PDF: Insert PDF Page. Add and Insert Multiple PDF Pages to PDF Document Using VB.
delete page from pdf online; delete pages from a pdf file
VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.
Page: Extract, Copy, Paste PDF Pages. |. Home ›› XDoc.PDF ›› VB.NET PDF: Copy and Paste PDF Page. VB.NET PDF - PDF File Pages Extraction Guide.
delete pages of pdf online; acrobat export pages from pdf
92
CHAPTER 9. ANSWERS TO FREQUENTLY ASKED QUESTIONS
9.5 Technical Questions
Question 18 I want to resample my data so that I have half as many traces, and half as many samples.
How do I do that?
Answer 18 To resample data, you must do the following:
1. Check that you won’t have aliasing. Do this by viewing the amplitude spectra of your data. Do
this with suspecfx
suspecfx < data.su | suxwigb
2. If the bandwidth of your data extends beyond the new nyquist frequency of your data (which, in
this example, will be half of the original nyquist frequency) then you will have to filter your data
to fit within its new nyquist bandwidth. Do this with sufilter
sufilter < data.su f=f1,f2,f3,f4 amps=0,1,1,0 > data.filtered.su
Here, the f1 f2 f3 f4 are the filter corner frequencies and amps=0,1,1,0 indicate that the filter
is a bandpass filter.
3. Now you may resample your data with suresamp:
suresamp < data.filtered.su nt=NTOUT dt=DTOUT > data.resampled.su
For your case, NTOUT is 1/2 of the original number ofsamples, and DTOUT is twice the time sampling
interval (in seconds) of that in the original data. Your output data should look quite similar to your
input data, with the exception that the bandwidth will change.
9.6 General
This section addresses general questions about the SU package.
Question 19 What are these funny words gelev, selev, fldr, etc. that I see in various places?
Answer 19 These are the ”keywords” that are required for manyof the codes. They refer to SU (Segy)
header fields.
Type:
sukeyword -o
to see the whole list
Type:
sukeyword keyword
to see the listing for an individual
keyword
Question 20 What do the terms “little endian” and “big endian” and mean?
Answer 20 There are two IEEE binary formats, called respectively ’little endian’ and ’big endian’.
These are also called ’high byte’ and ’low byte’, respectively. These refer to the byte order in the bitwise
representation of binary data. The following platforms are ’little endian’: DEC and Intel-based PC’s.
The other common platforms are ”big endian”: IBM RS6000, Silicon Graphics, NeXT (black hardware),
SUN, HP, PowerPC, any Motorola chip-based platform.
Question 21 Why are CWP/SU releases given by integers (22, 23, 24, etc...) instead of the more
familiar decimal release numbers (1.1, 1.3, etc...)?
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
C#.NET PDF Library - Copy and Paste PDF Pages in C#.NET. Easy to C#.NET Sample Code: Copy and Paste PDF Pages Using C#.NET. C# programming
delete blank page from pdf; delete page from pdf file
C# PDF Page Rotate Library: rotate PDF page permanently in C#.net
batch changing PDF page orientation without other PDF reader control. NET, add new PDF page, delete certain PDF page, reorder existing PDF pages and split
delete page on pdf file; copy pages from pdf into new pdf
9.6. GENERAL
93
Answer 21 The CWP/SU release numbers are chosen to correspond to the SU NEWS email messages.
The individual codes in the package have traditional decimal release numbers (assigned by RCS), but
these are all different. The package changes in incremental, but non-uniform ways, so the standard
notation seems inappropriate. However, the user may view 24 to be 2.4. We may adopt this convention
in the future.
Remark: In the early days, we did use RCS to simultaneously update all the codes to 2.1, 3.1, ....
This practice died a natural death somewhere along the way.
Question 22 How often are the codes updated?
Answer 22 The CWP/SU package is updated at roughly3-6 month intervals. We mail announcements
of these releases to all known users. Since we do not provide support for outdated versions, we urge you
to remain current.
Question 23 I have a complicated collection of input parameters for a CWP/SU program. I want to
run the command from the command line of a terminal window, but I don’t want to retype the entire
string of input parameters. What do I do?
Answer 23 CWP/SU programs that take their input parameters from the command line also have
the feature of being able to read from a “parameter file.” This is invoked by setting the parameter
par=parfile, where parfile is a file containing the desired commandline string.
For example:
suplane ntr=20 nt=40 dt=.001 | ...
is completely equivalent to the command:
suplane par=parfile | ...
if the string
ntr=20 nt=40 dt=.001
is contained in ‘parfile.’
Question 24 I can’t find an sudoc entry for the function ”ints8r,” yet the SU manual says that all
library functions have online documentation? What am I doing wrong?
Answer 24 The proper search procedure for a library function (such as ints8r) is:
% sufind ints8r
Which yields:
INTSINC8 - Functions to interpolate uniformly-sampled data via 8-coeff. sinc
approximations:
ints8c interpolation of a uniformly-sampled complex function y(x) via an
For more information type: "sudoc program_name <CR>"
The name INTSINC8 is the name of the file that contains the library function ins8c. You may now
use sudoc to find out more information via:
% sudoc intsinc8
C# Imaging - Scan Barcode Image in C#.NET
RasterEdge Barcode Reader DLL add-in enables developers to add barcode image recognition & barcode types, such as Code 128, EAN-13, QR Code, PDF-417, etc.
delete pdf pages android; delete page pdf online
VB.NET PDF delete text library: delete, remove text from PDF file
Visual Studio .NET application. Delete text from PDF file in preview without adobe PDF reader component installed. Able to pull text
delete page on pdf; delete blank page in pdf online
94
CHAPTER 9. ANSWERS TO FREQUENTLY ASKED QUESTIONS
Which yields:
In /usr/local/cwp/src/cwp/lib:
INTSINC8 - Functions to interpolate uniformly-sampled data via 8-coeff. sinc
approximations:
ints8c interpolation of a uniformly-sampled complex function y(x) via an
8-coefficient sinc approximation.
ints8r Interpolation of a uniformly-sampled real function y(x) via a
table of 8-coefficient sinc approximations
Function Prototypes:
void ints8c (int nxin, float dxin, float fxin, complex yin[],
complex yinl, complex yinr, int nxout, float xout[], complex yout[]);
void ints8r (int nxin, float dxin, float fxin, float yin[],
float yinl, float yinr, int nxout, float xout[], float yout[]);
Input:
nxin
number of x values at which y(x) is input
dxin
x sampling interval for input y(x)
fxin
x value of first sample input
yin
array[nxin] of input y(x) values: yin[0] = y(fxin), etc.
yinl
value used to extrapolate yin values to left of yin[0]
yinr
value used to extrapolate yin values to right of yin[nxin-1]
nxout
number of x values a which y(x) is output
xout
array[nxout] of x values at which y(x) is output
Output:
yout
array[nxout] of output y(x): yout[0] = y(xout[0]), etc.
Notes:
Because extrapolation of the input function y(x) is defined by the
left and right values yinl and yinr, the xout values are not restricted
to lie within the range of sample locations defined by nxin, dxin, and
fxin.
The maximum error for frequiencies less than 0.6 nyquist is less than
one percent.
Author: Dave Hale, Colorado School of Mines, 06/02/89
Question 25 I have written my own SU programs and would like them to appear in the suname and
sudoc listings. How do I do this?
Answer 25 Run updatedocall (source code located in CWPROOT/par/shell). If you have put this
code under a new path, then you must add this path to the list ofpaths in the updatedoc script. For the
selfdoc information to be captured by the updatedoc script, you will need to have the following marker
lines at the beginning and end of the selfdoc and additional information portion of the source code of
your program.
/*********************** self documentation **********************/
/**************** end self doc ********************************/
9.6. GENERAL
95
Be sure to clone these directly out of an existing SU program, rather than typing them yourself, so that
the pattern is the exact one expected by the updatedoc script.
Question 26 I have a gray scale (not color) PostScript filemade with psimage and would like to convert
it to a color PostScript format, but do not have the original binary data that I made the file from. How
do I do this?
Answer 26 You have to restore the binary file to make the new color PostScript file. Here is how you
do it. (Here, we are assuming a bit-mapped graphic as would be produced by psimage or supsimage).
1. Make a backup of your PostScript file.
2. edit the PostScript file removing everything but the hexidecimal binary image that makes up the
majority of the file. (Note, in the line preceeding the hexidecimal data portion of the file will be a
pair of numbers that represents the dimensions of the data. You will need these numbers for later
steps.)
3. use h2b to convert the hexidecimal file to binary
4. You will find that the file is flipped from the original input file. Use transp to flip the data. Note
that the n1 and n2 values that are used by transp are the dimensions of the input data, which are
the reverse of the output data. (The n1 value, is not the total number of samples, that is returned
by h2b, instead total no. values = n1× n2.)
5. You now have a 0-255 representation of your binary data which you should be able to plot again
any way you desire.
This method may be used to convert scanned images to SU format, as well, with the next step in
the procedure to be putting SU headers on the data with suaddhead.
96
CHAPTER 9. ANSWERS TO FREQUENTLY ASKED QUESTIONS
Chapter 10
How to Write an SU Program
10.1 Setting up the Makefile
The CWP/SU package uses a sophisticated Makefile structure, that you may also use when you develop
new code. You should begin any new code writing project by creating a local directory in your working
area. You should then copy the Makefile from $CWPROOT/src/su/main into that directory and make
the following changes
Change:
D = $L/libcwp.a $L/libpar.a $L/libsu.a
LFLAGS= $(PRELFLAGS) -L$L -lsu -lpar -lcwp -lm $(POSTLFLAGS)
to:
D = $L/libcwp.a $L/libpar.a $L/libsu.a
B = .
OPTC = -g
LFLAGS= $(PRELFLAGS) -L$L -lsu -lpar -lcwp -lm $(POSTLFLAGS)
Change:
PROGS =
\
$B/bhedtopar
\
$B/dt1tosu
\
$B/segyclean
\
$B/segyhdrs
\
$B/segyread
\
...
...
to:
PROGS =
\
97
98
CHAPTER 10. HOW TO WRITE AN SU PROGRAM
$B/yourprogram
where the source code of your program is called “yourprogram.c” and resides in this directory.
You should then be able to simply type “make” and “yourprogram” will be compiled.
As a test you can try copying one of the existing SU programs, from$CWPROOT/src/su/maininto
your local working directory, modifying the Makefile accordingly and typing: make.
Indeed, because all new SU programs may be viewed as beginning as clones of existing SU programs
of a similar structure, this is perhaps the best way to begin any new coding venture.
10.2 A template SU program
Although variations are usually needed, a template for a typical SU program looks like the program
listing below (we excerpted lines from the program sumute to build this template). The numbers in
square brackets at the end of the lines in the listing are not part of the listing—we added them to
facilitate discussion of the template. The secret to efficient SU coding is finding an existing program
similar to the one you want to write. If you have trouble locating the rightcode or codes to “clone,” ask
us—this can be the toughest part of the job!
/* SUMUTE: $Revision: 1.20 $ ; $Date: 2002/08/22 20:19:54 $
*/ [1]
#include "su.h"
[2]
#include "segy.h"
/*********************** self documentation **********************/ [3]
char *sdoc[] = {
"
",
" SUMUTE - ......
",
"
",
" sumute <stdin >stdout
",
"
",
" Required parameters:
",
"
none
",
"
",
" Optional parameters:
",
"
...
",
"
",
" Trace header fields accessed: ns
",
" Trace header fields modified: none
",
"
",
NULL};
/**************** end self doc ***********************************/
/* Credits:
*
*
CWP: Jack Cohen, John Stockwell
*/
segy tr;
[4]
main(int argc, char **argv)
{
Documents you may be interested
Documents you may be interested